永发信息网

杭电acm1013这个什么意思

答案:2  悬赏:70  手机版
解决时间 2021-03-19 20:33
  • 提问者网友:十年饮冰
  • 2021-03-19 00:52
#include
int f(int n){
if (n <= 9){
return n;
}
int r = 0;
while (n > 0){
r += n%10;
n /= 10;
}
return f(r);
}
int main(){
char s[1025];
int i, n;
while (scanf("%s", s) == 1){
n = 0;
for (i=0; s[i]; ++i){
n += s[i]-'0';//什么意思
}
if (n == 0){
break;
}
printf("%d\n", f(n));
}
return 0;
}
最佳答案
  • 五星知识达人网友:枭雄戏美人
  • 2021-03-19 01:19
n += s[i]-'0';

s[i]是字符型,'0'也是字符型。假设s[i]='5',它的ASCII值是53,'0'的ASCII值是48,
'5'-'0'=53-48=5。
我们用长整型处理数字时,只能处理到11位,处理1000位的大数时,就用字符串处理,它的加减是用ASCII值来计算的,因此要把'5'(即53)转成5,必须减去'0'(即48).
全部回答
  • 1楼网友:孤独的牧羊人
  • 2021-03-19 02:14
1.一位数模9是它本身(9除外);整十数模9是它十位的数字(90除外);整百数摸9是它百位的数字(900除外)...... 2.对于一个一般的数,可以分拆成几个10的幂的和;一般的数模9的结果,实质就是题目所描述的"数字根"(9的倍数除外). 3.反复提到9的倍数除外,那这个除外的结果是什么?想一下就清楚.所以楼主先--a再%9最后+1就是在处理这种情况 4.数字后面跟u后缀代表无符号整数,至于9啊48啊还要加这个,那是楼主在炫耀他的代码能力,大家可无视之 5.最后提醒 48 == ‘0’
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯