C语言程序问题,关于getchar的问题!

main
{ char c;
while(c!='?')
{
c=getchar()
putchar(c);
}
}

随意输入一个数,输出的为什么有问号?求点拨,谢谢!

获取字符之后立马做判断,你getchar之后先做的输出,当然就把问号输出来了,然后下一轮循环才开始判断是不是问号
main()

{
char c;
while((c=getchar()) !='?')
{
putchar(c);
}
system("pause");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-09
把你的代码改成这样试试
#include <stdio.h>
main()
{
char c;
while(c!='?')
{
c=getchar();
putchar(c);
}
}追问

为什么输出?,我认为问号应该被挡在循环外了。

第2个回答  2013-09-09
c=getchar();//在while外要先getchar一次
putchar(c);
while(c!='?')
{
c=getchar();
putchar(c);
}
第3个回答  2013-09-09
你的程序是正确的,但因为在判断c是否是?是你没有给他一个初值。应把c=getchar()放在while语句前。追问

能说清楚点吗?题目就是这样给的,C给了一串字符,那个我没打,就是想知道为什么有问号啊?

追答

你把c的初值给我看看。

追问

fool?kdifjk

追答

问好是初值中的,你输入一个字母,只能取代初值的的一个。故会出现?的。

第4个回答  2013-09-09
当输入问号后,程序把问号赋值给变量c(c=getchar();),然后显示出c的值,即问号(putchar(c);),然后程序循环到while处判断c是否为问号,即结束循环。所以程序的结果最后一定是问号
第5个回答  2013-09-09
c=getchar()
放到while的前面追问

? 什么意思?是我打错了?还有就是你说的那样运行?题目就是这样给的啊。

相似回答