Я напишу вам фрагмент кода, ваша задача - понять, почему он работает (подсказка, что происходит по модулю 9)
#include<stdio.h>
#include<ctype.h>
#define BUFSIZE 1024
int main()
{
char buf[BUFSIZE];
size_t i;
int modsum=0;
if (fgets(buf,BUFSIZE,stdin) == NULL)
{
puts("Error reading the string");
return 1;
}
for (i=0;i<BUFSIZE && buf[i]!=0 && buf[i]!='\n';i++)
{
if (!isdigit(buf[i]))
{
puts("The string is invalid");
return 2;
}
modsum=(modsum+(buf[i]-'0'))%9;
}
printf("%d\n",modsum?modsum:9);
return 0;
}
Этот код будет работать для любого числа, кроме 0.