解题思路:
输入一个整数;

求出每一位相加的和;


注意事项:
输入的整数小于2^32-1:不能时int型(2^31 -1) ,要比它长,用unsigned int等比它长的;
不要把问题想的太复杂,这题就是考察长整型变量,不要用字符串存数,控制不恰当的话,输出,会提示输出超过范围;

参考代码:

#include <stdio.h>
#include <string.h>
void put();


int        TOM    = 0;
unsigned int    num    = 0;
/*-------------------------*/
int main()
{
    while ( (scanf( "%d", &num ) ) != EOF )
    {
        put();
    }
}


/*-------------------------*/
void put()
{
    TOM = 0;
    while ( (num / 10) != 0 )
    {
        TOM    += (num % 10);
        num    /= 10;
    }
    TOM += num;

    printf( "%d\n", TOM );
}

点赞(31)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 4 条评论

winwin七 5年前 回复TA
为什么输入超过10位数字,结果就不对呢?
querqiao 5年前 回复TA
#include<stdio.h>
void put(long num)
{
	int tom;
	tom=0;
	while((num/10)!=0)
	{
		tom+=(num%10);
		num/=10;
	}
	tom+=num;
	printf("%d\n",tom);
}

int main(){
	int tom=0;
	long num=0;
	while((scanf("%d",&num))!=EOF)
	{
		put(num);
	}
	
     return 0;
}
smile 6年前 回复TA
#include <stdio.h>
int main()
{
	unsigned int a;
	int tom = 0;
	
	while((scanf("%d", &a)) != EOF)
	{
		for(tom = 0; a / 10 != 0;)
		{
			tom += a%10;
			a /= 10;
		}
		tom += a;
		printf("%d\n", tom);	
	}
		
	return 0;
}
夏洛克 6年前 回复TA
错的!!