c语言每日一练5

前几天在c++论坛发了好多这个,原来那里是用来给分提问的,哈哈,貌似我没分,还发了那么多帖子,我表示会坑好多人。就开了微博,可恶的微博,要三天后才能发表文章,写这些就只是为了督促自己。开始今天的吧.

 

正整数的树根指的是该整数各数字之和。如果结果是一位数,那么这个数就是树根。如果结果有两个或者两个以上的数字,那么将结果的各位数字相加直到只是一位数字。

例如24,2+4=66为一位数,所以624的根。393+9=12,1+2=3,3为一位数,所以339的根。

输入:输入一系列正整数,每行一个。当正整数为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,呵呵。在此谢谢他们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值