24 39 0
6 3解题思路:由于没有说明数字位数,并不排除位数很大的数字,所以将输入数据作为字符串处理错误代码:#include <stdio.h> #include <stdlib.h> void digits(int n)/*题中没有说明数的位数,所以可能很大,应该是用字符串存储输入数据*/ { int r,sum = 0; while(n != 0) { r= n%10; n = n/10; sum += r; } if(sum > 10) digits(sum); else printf("%d\n",sum); } int main() { int n; while(scanf("%d",&n) && n != 0) digits(n); system("pause"); return 0; }正确代码:#include <iostream> #include <string> using namespace std; int main(){ string str; while(cin>>str&&str!="0"){ int num=0; for(int i=0;i<str.length();i++){ num+=str[i]-‘0‘; if(num>9){ num=num/10+num%10; } } cout<<num<<endl; } system("pause"); return 0; }
原文地址:http://blog.csdn.net/zchlww/article/details/42607763