前几天在c++论坛发了好多这个,原来那里是用来给分提问的,哈哈,貌似我没分,还发了那么多帖子,我表示会坑好多人。就开了微博,可恶的微博,要三天后才能发表文章,写这些就只是为了督促自己。开始今天的吧.
正整数的树根指的是该整数各数字之和。如果结果是一位数,那么这个数就是树根。如果结果有两个或者两个以上的数字,那么将结果的各位数字相加直到只是一位数字。
例如24,2+4=6,6为一位数,所以6是24的根。39,3+9=12,1+2=3,3为一位数,所以3是39的根。
输入:输入一系列正整数,每行一个。当正整数为0时,输入结束。
输出:对输入的每一个整数,输出一行,是该数的树根。
//
#include<stdio.h>
int main()
{
char ch;//整数位数有1000位,只能用字符串运算
while(1)
{
//计算该整数各位数字之和
int sum=0;
while(scanf("%c",&ch) && ch!='\n')
{
sum+=ch-'0';
}
if(sum==0) break;//当正整数为0时结束
//树根就是sum%9的结果,如果sum%9=0,树根是9.这是因为一个整数模9的结果与这个整数的各位数字之和模9的结果一样(牛B)。
if(sum%9==0) sum=9;
else sum=sum%9;
printf("%d\n",sum);
}
return 0;
}
开始我一直不理解ch-‘0’的值会怎么变化,在论坛发了一个提问帖之后lansong4,Panda_66大神告诉我:倘若我输入39,因为char ch 是单个的字符,所以输入39是两个字符,scanf("%c",&ch);先处理3,然后再处理9,呵呵。在此谢谢他们。