c程序改错题

c程序改错题画绿线部分在求和吗,不太明白为什么这样写
2025-03-05 04:31:31
推荐回答(3个)
回答1:

懒得解释算法本身了,要打太多字了,基本数学思想参考下链:

网页链接

只讲一下*a-'0'这里是把字符转成数字,因为数字字符的ascii码值是连续,即'0'-'0'==0,'1'-'0'==1,'2'-'0'==2,...以此类推

不理解的话,代一组二进制值进去,比如"1010",一步步执行下就懂了

回答2:

2进制转十进制就是该位乘以2的对应次的幂然后想加,比如1010就是1*2的3次+1*2的1次=10。
一个数字字符转为对应的数字就是用它减去'0'.所以举个例子,"1010",从最左边一个字符一个字符提出来,那么先是1,然后1*2+0=2,2*2+1=5,5*2+0=10.可见最高位乘了3次2也就是2³,接下来每位依次少乘了2,就可以转为10进制的10了。

回答3:

你问的我都不懂