作业帮 > 综合 > 作业

假定输入为”Go west,young man!”,以下程序会产生什么样的输出?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 20:24:00
假定输入为”Go west,young man!”,以下程序会产生什么样的输出?
#include
void main()
{
char ch;
scanf("%c",&ch);
while(ch!='g')
{
printf("%c",ch);
scanf("%c",&ch);
}
}
请问为什么在while循环中只执行输出,没执行输入?
哈哈,看来你是初学者啊,没事儿,好好学啊.你输入的是一个字符串.
而%c是字符型,%s是字符串型.所以ch只接收了你一个字符,即‘G’.大些G与小写G的码值不一样(ASCII码,大小写数值相隔32,你可以看看那ASCII表).进入循环后,如果你输入'g',此时ch变成了g,循环就终止了.至于你问的没执行输入我表示你可能弄错了,如果你一个个输,不含g,还是可以输出你所输入的.
再问: while循环中不是有 printf("%c",ch); scanf("%c",&ch); 吗? 那程序满足ch!='g'后不是应该依次执行printf和scanf语句吗?
再答: 看来你还是没理解程序的执行过程,先帮你理解这个程序:首先,你问的是对的;其次,你输入Go west,young man!,一开始ch='G',进入循环,可是这是不用你输入,为何?因为你一开始输入的字符串放到一个缓冲区,ch被赋值'G',有个指针就会移向缓冲区里的下一个元素,即‘o',这是不用你输入,ch自动被赋值'o'.以此类推,到了'g'时,循环退出,也就是说,循环里那个scanf语句其实你有输入,只不过你在最开始的时候输入啦。如果你输入'jerk',然后再输入’but‘,只要不含'g'。最后,教你学会调试吧,对于这种短小程序可以帮你很好理解。把光标定在char ch上,然后调试选项(debug)里选执行到光标处(run to cursor),按F10执行每一句,F11,执行函数内部。查看选项里选watch窗口,你可以输入变量名在程序执行时观察到它的变化。