#include <stdio.h>int getsum(int a){ int ans=0; while (a!=0) { int i = a%10; a /= 10; ans += i; } return ans;}int main() { int a; while (scanf("%d", &a)!=EOF) { if (a==0) { break; } while (a>=10) { a = getsum(a); } PRintf("%d/n", a); } return 0;}该代码提交时会一直报错:wrong answer但是我自己输入时感觉都正确。那是什么原因呢?原因:注意题目中:The integer may consist of a large number of digits.也就是说输入的数字可能非常大超过int所表示的范围。
#include <stdio.h>int getsum(int a){ int ans=0; while (a!=0) { int i = a%10; a /= 10; ans += i; } return ans;}int main() { char a[1000]; while (scanf("%s", a)!=EOF) {//利用字符串读入数字,作为字符串保存在内存中 int ans=0; //累加变量 for (int i=0; a[i]!=0; i++) { //遍历a中的每一个字符,直到a字符串结尾 ans += (a[i]-'0'); } if (ans==0) { break; } while (ans>=10) { ans = getsum(ans); } printf("%d/n", ans); } return 0;}