У меня есть задание создать программу, которая вычисляет итерационную цифровую сумму целого числа, например.делать цифровую сумму, пока результат не станет одной цифрой.Уловка в том, что число, которое они проверяют, намного больше, которое может быть сохранено в любом типе 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.
Итак, мой вопрос, есть ли 11-битное ограничение на количество символов, которое выможно получить из стандартного ввода с помощью getchar ()?Если так, есть ли способ получить больше?