题目 代码1:常规解法
#include<stdio.h> #include<string.h> int main() { char number[100000]; int sum, m, i, n; while(gets(number)) { sum = 0; for(i=0;i<strlen(number);i++) { sum = sum+(number[i]-'0'); //number数组里的每一位数字相加 } if(sum==0) { break; } else { while(sum>=10) //直到和小于10,结束循环 { n = sum; sum = 0; while(n>0) { m = n; sum = sum+m; n = n/10; } } printf("%d\n", sum); } } }代码2:九余数定理
#include<stdio.h> #include<string.h> int main() { char number[100000]; int sum, m, i, n; while(gets(number)) { sum = 0; for(i=0;i<strlen(number);i++) { sum = sum+(number[i]-'0'); } if(sum==0) { break; } else { n = (sum-1)%9+1; //一个数的所有数字的和与数根之间的关系式 printf("%d\n", n); } } }Conclusion 可以多多查阅资料,了解一道题的不同解法。