解题思路:
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;
}


点赞(9)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 13 条评论

小张想学c 2年前 回复TA
#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;
}



这个为什么答案错误?
月曜日 5年前 回复TA
#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;
}

我为什么输出超限  ?!
saitama 6年前 回复TA
@子永 这个递归写得贼6
saitama 6年前 回复TA
@子永 当输入是2222222222的时候输出有问题(这个数字仍在2的32次方里),数据存不下,把int定义成long long int 就行了
子永 7年前 回复TA
#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;
}
输出超限,是为什么
ma_coconne 7年前 回复TA
@小姚 '0'是字符,而数字字符-0字符=数字数值。字符是ASCLL码的。
小姚 7年前 回复TA
为什么sum+=a[i]-'0';最后要加一个‘0’?
陈雨斌 7年前 回复TA
@陈雨斌 这样啊 , 明白了 , 不用再苦恼这个问题了  , 谢谢
Mister-小方 7年前 回复TA
@陈雨斌 可能是数据太大时超过int能存的最大值了,建议用字符串
陈雨斌 7年前 回复TA
求指教