我分配了一个程序来计算整数的迭代数字和,例如。进行数字求和,直到结果为一位数字。问题是他们测试的数字更大,可以存储在任何int类型中(大约10 ^ 40000),所以我的想法是使用getchar()进行第一个求和,将数字逐位累加。 我的代码
#include <stdio.h>
int main(){
long int n=0;
int c;
//first sum
while((c=getchar())!=EOF && c!='\n'){
n+=(c-'0');
}
//iterative summing
long int s;
do{
s=0;
while(n>0){
s+=n%10;
n/=10;
}
n=s;
}while (n>=10);
printf("%ld\n",s);
return 0;
}
它适用于相对较短的数字,但是在某一点之后,总和会出现错误。因此,我尝试设置一个变量,该变量将随着每个字符的总和而递增,并且始终显示4095。
所以我的问题是,使用getchar()从stdin可以获取多少个字符有11位的限制?如果是这样,有没有办法获得更多?