c语言中从char ch开始到printf之间的各行代码表示什么意思?(这是一个求和代码)

如题所述

这个程序负责把一行上输入的、以空格分隔的所有整数数字进行求累加总和。数字和空格以外的其他字符都将被忽略,遇到换行符就结束循环,然后输出所有整数的总和。
一楼的回答是不对的。假设输入是
12e3 354
那么,程序的输出是
sum = 476(123+354是不输出的)追问

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-08-30

求采纳

追问

这几行表示什么意思,ch >= '0' && ch <='9'是限制输入的整数大于等于0吗?为什么要进行num = 10 * num + ch - '0'的运算呢?这个式子有什么含义吗?

追答

如果输入的字符在0-9之间,(也就是输入的是数字),num等于数字拼起来的结果。比如我举的例子,输入12e3,先读取1是数字,num=10*0+1=1,然后读取2是数字,num=10*1+2=12,读取e不是数字,不执行这段代码,再读取3是数字,num=10*12+3=123

字符比较大小比的是ASCII码,’0’对应48,以此类推,’9’对应57,用字符ch减’0’减的也是ASCII码值,但与实际数字和0的差值相同。比如说ch='2',ch的ASCII码值为50,ch-’0’=50-48=2-0=2

追问

最后num已经是0了,为什么sum还要加num,每拼成一个num就加到sum上,sum不是已经是所有整数的和了?

追答

最后num不是0哦,这个程序的逻辑是读到换行跳出while循环,而循环内部则是读到空格就把num加到sum上,假设输入是123(换行),那么读到换行符的时候跳出循环,这时候num还没有被加到sum上,所以需要在最后输出时加上

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网