题目:
输入一个n位数,范围在1-99999999,求这个n位数每一位上的数之和。例如,输入12,输出3;输入234510,输出15
代码:(这个方法确实是比较笨拙)
有好的方法,建议大家留言,我们一起交流探讨
#include <stdio.h>
#include <stdlib.h>
int main() {
int a, b, c,d,e,f,g,h, x,sum;
printf("请输入一个1-99999999之间的数:\n");
scanf("%d", &x);
a = x / 10000000 % 10;
b = x / 1000000 % 10;
c = x / 100000 % 10;
d = x / 10000 % 10;
e = x / 1000 % 10;
f = x / 100 % 10;
g = x / 10 % 10;
h = x / 1 % 10;
sum = a + b + c + d + e + f + g + h;
printf("%d",sum);
system("pause");
return 0;
}
改进代码:
#include <stdio.h>
int main() {
int n, x, sum = 0;
printf("请输入一个n位数(1~99999999)\n:");
scanf("%d", &x);
if (x < 1 || x > 99999999) {
printf("输入的数不在1~99999999范围内\n");
return 0;
}
n = 0; // 统计数字位数
while (x > 0) {
sum += x % 10; // 累加最低位数字
x /= 10; // 去掉最低位数字
n++; // 统计数字位数
}
printf("%d\n", sum);
system("pause");
return 0;
}