这是我的任务:我想总结一个int的数字,问题是我不知道有多少位数(我不能问用户)。 有什么像getchar for int?我也试过int c = getchar(),但它不起作用。 感谢:)
我希望它是一个递归函数,但我想这是错误的。
我认为我得到了它,谢谢大家!
int sum_digits (int n) {
int answer = 0;
if (getchar() == 0) {
return answer;
}
else {
int c = getchar();
return answer = c + sum_digits(n);
}
}
答案 0 :(得分:2)
取任意int
,说n
,然后计算n%10
(除法的余数除以10)和n/10
(除法除以10的商)。余数恰好是最后一位数,而商数是没有最后一位数的数字......循环,直到商为零并在每一步中求和。
答案 1 :(得分:2)
尝试以下程序。
int sum_digits (unsigned int n)
{
int sum = 0;
while (n > 0) {
sum += (n % 10);
n /= 10;
}
return sum;
}
编辑:递归函数:
int sum_digits (unsigned int n)
{
if (n < 10)
return n % 10;
return (n % 10) + sum_digits(n / 10);
}
答案 2 :(得分:1)
对于高尔夫,这是一种递归方法:
unsigned int countDigits(unsigned int x)
{
if (x < 10)
return 1;
return 1 + countDigits(x / 10);
}