2. 第一个程序:比如字符'1'对应的ascii码是49,'0',对应48,这样相减就为1了。依此类推。不过我觉得这种直接输入12再回车的方式不规范,应该输入1回车,再输入2回车,这样。不过会出问题,因为ch2会存回车。
3. 第二个程序也不规范,我宁愿写成:
#include "stdio.h"
int main()
{
int s=0,i; for(i=1;i<3;i++)
{
s +=i;
}
printf("%d\n",s);
}
最后会输出3。因为1+2=3。
7. 看了楼主的几个问题,想对楼主说句:换书吧!一本好书很重要。
8.
@老虎会游泳 额……那个for 循环出来的是5…………for 语句后面有个分号~~~第一个输入12,输出还是12………我就是不理解过程~~
9.
@春风沉醉的晚上 这是老师找的一些题~其中大多数就是考你细心程度的……几百个题里我不理解的就这么几个
10. 哦,在3楼回答错了。。忘了在s+=i;之前还有个i++;了!
11. 第一个关键的地方在于字符型数据在内存当中是被翻译成ASCII码,0是48,1是49,2是50.当你输入的时候,ch1=49,ch2=50.那么n1就是1,n2=10+2
12. ①i=1,s=0+2
②i=2,s=2+3
i<3所以输出5
这个地方,最有意思的是i++,i=1的时候,先输出1,需要加1后才进行下一步s+=i
13.
@劣 哦,第一个我理解了,我原来一直以为输入12输入12。12就是一个整体~~ch1==ch2来着……原来如此~~谢谢你了!
14.
@劣 额……第二个~i<3所以输出5,就是这儿有问,不是判断i<3后是终止循环…………我贼~~那个分号!!我下意识的把那个输出函数也包含到for 循环里去了!!额……这才是我一直的问题啊~~又是考验人的细心程度………
15.
@终极神天。。。。。。当我编译运行发现确实只有单独一个5输出时,我惊讶了。然后我才明白你说的for后面有个分号是什么意思。
16.
@春风沉醉的晚上,我认为第二个是一个非常规范的代码,它充分体现了for循环的高效与简洁。虽然我没仔细看结果看错了。
18.
@老虎会游泳 我想程序的主要代码和目的是这句: s =i; 但是那样写的话,就没有突出重点,不利于阅读,而且以后想扩展增加功能什么的,不好动手改。而且它和3楼的程序(我承认我改的有点错误,不过应该不影响理解的)运行效率是一样的。但是3楼的应该好懂点(我觉得好懂点)。