解题思路:
1.小方给大家提供的方法是直接将用户输入的数字当字符串看的,希望大家能够理解。
参考代码:
#include<stdio.h> #include<string.h> int main() { int size,sum,i; char a[11]; while(scanf("%s",a)!=EOF) { sum=0; size=strlen(a); //可那用户输入的数的长度是多少位的 for(i=0;i<size;i++) //用其减去其acsii就可以将字符数转换为真正的数 { sum+=a[i]-'0'; //依次相加 } printf("%d\n",sum); //输出 } return 0; }
0.0分
3 人评分
#include<stdio.h> #include<math.h> int main() { int a,b,sum=0; scanf("%d",&a); while(a>0) { b=a%10; a/=10; sum+=b; } printf("%d",sum); return 0; } 这个为什么答案错误?
#include<stdio.h> int main() { int x; while(scanf("%d",&x)){ int sum=0; for(;x>0;x/=10){ sum += x%10; } printf("%d\n",sum); } return 0; } 我为什么输出超限 ?!
#include<stdio.h> int tomjs(int Tom) { if(Tom!=0) Tom=Tom%10+tomjs(Tom/10); return Tom; } int main() { int Tom; while(~scanf("%d",&Tom)){ printf("%d\n",tomjs(Tom)); } return 0; } 输出超限,是为什么
为什么sum+=a[i]-'0';最后要加一个‘0’?
ma_coconne 2017-10-30 21:23:40 |
'0'是字符,而数字字符-0字符=数字数值。字符是ASCLL码的。
# include <stdio.h> int main (void) { int i , n , m , tom = 0; scanf ("%d" , &n); do { if (n < 0) return 0; else { tom = 0 ; m = n; while (m) { tom += m%10 ; m /= 10; } printf ("%d\n" , tom); // scanf ("%d" , &n); } }while (scanf ("%d" , &n) == 1); return 0; } 这个程序有什么问题吗
题里范围给的是——每行一个整数(<2^32).最大是十位数 所以char a[1000];不用这么大,,,char a[11];就够了
Mister-小方 2017-08-02 19:43:29 |
可以可以,我没看怎么多