
简单的c语言题目
输入一个整数,求出它每个位数数字的和,如输入1234输出1+2+3+4的值。数值一大我就不知道怎么计算,像213474632817712这些。求大神解答,代码务必简单,谢...
输入一个整数,求出它每个位数数字的和,如输入1234 输出1+2+3+4的值。数值一大我就不知道怎么计算,像213474632817712这些。求大神解答,代码务必简单,谢了,我只是大一刚刚接触,c语言,
展开
2个回答
展开全部
#include <stdio.h>
int main()
{
char sz[100] = {0}; // 用于储存待计算的数字
scanf("%s", sz);
int sum = 0;
for (int i = 0; sz[i] != '\0'; i++) // 处理每一位数字,直到遇到字符串尾
sum += sz[i] - '0'; // 将当前位上的字符转为整数。如'5',经过处理后得到'5' - '0' = 5
printf("%d", sum);
return 0;
}
还有一个更数学一些的方法,但不能用于太大的输入:
#include <stdio.h>
int main()
{
unsigned long long n = 0; // 用于储存待计算的数字
scanf("%llu", &n);
int sum = 0;
// 循环内算法其实很简单,就是取n的个位数加到sum上,然后截掉n的个位。重复到所有位都处理过为止。
while (n > 0) {
sum += n % 10;
n /= 10;
}
printf("%d", sum);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <stdlib.h>
void main()
{
char num[100];
int i=0,sum=0;
char n='0';
n=getchar();
while(n!='\n')
{
sum += n-'0';
n = getchar();
}
printf("SUM: %d\n",sum);
}
这个应该可以满足要求,要严谨的话最好加上输入判断
#include <stdlib.h>
void main()
{
char num[100];
int i=0,sum=0;
char n='0';
n=getchar();
while(n!='\n')
{
sum += n-'0';
n = getchar();
}
printf("SUM: %d\n",sum);
}
这个应该可以满足要求,要严谨的话最好加上输入判断
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |