又是C语言问题~~字符型运算和for循环i++那块

//输入12。执行后的结果是12,怎么算出来的??
#include "stdio.h"
main()
{
    char ch1,ch2;    int n1,n2;
    ch1 = getchar ();    ch2 = getchar ();
    n1 = ch1 - '0';    n2 = n1 * 10 + (ch2-'0');
    printf("%d\n",n2);
}
    

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