再问初学C语言问题``
main()
{char ch;
ch=getchar();
while(ch!='*')
{ putchar(ch);
ch=getchar();
}
}
main()
{char ch;
ch=getchar();
do
{ putchar(ch);
ch=getchar();
}while(ch!='*');
}
这两个程序 1.输入ABC* 得到结果都是ABC 然后退出
2.输入*ABC 上面一个得到 无输出 退出;
下面一个得到 *ABC 然后再次输入*ABC 就得到 无输出 退出.
3.输入*ABC* 上面一个得到 无输出 退出;
下面一个得到 *ABC 退出.
为什么啊?求解啊 谢谢!!!!!
参考答案:因为第一个程序是先判断,输入的是不是*,然后再打印到屏幕,如第次一次就输入*,则直接退出
第二个程序是先执行do后面的语句,直到while的时候再判断,并且因为有两条getchar语句,第条语句获得一个*,然后print,第2条getchar实际上获得的是A,这时再执行while的时候当然会继续循环了,当你输入*ABC的时候,打印的是*ABC,这时程序并没退出,而是停在了第2条getchar()语句那继续等待输,当再次输入*ABC的时候,getchar返回* ,接着while,就退出了
如果把第二个程序的,第一条getchar()去掉,那么,三次结果应该是:ABC * *