C语言问题,望指教

#include<stdio.h>
void main ()
{
char a;
do{
scanf("%c",&a);
}
while (a='b');
printf("%c",a);
为什么只能循环一次?而且输出的是空白?
打错了

你理解错误了,你上面代码中的while(a='b')是个死循环,永远不会跳出循环(原因很简单,=是赋值,永远成立的),所以你不会运行到printf那里去,如果你本来的意图是想输入b的时候出循环并打印,应该写做while (a!='b')

如果你写的是while(a=='b'),那实际上输入b的时候会执行两次循环,第一次读入的是'b',第二次读入的是你的换行符(如果要确认你可以在上面的scanf后面加一行,比如

do{
scanf("%c",&a);
printf("*%d",a);
}

看看输出的内容是什么就知道了,要解决的话方法很多,比如可以是

do{
scanf("%c",&a);
fflush(stdin);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-29

你想实现什么,先把a='b'换成a=='b' 

=是赋值,==是判断

#include<stdio.h>
void main ()
{
char a;
do{
scanf("%c",&a);
printf("%c\n",a);
}
while (a!='b');
}

本回答被网友采纳
第2个回答  2017-12-29

你应该是写while(a=='b')吧,还有并不是没有输出,而是输出的是“\n”

第3个回答  2017-12-29
int main()
{
char a;
do
{
a=getche();
}while (a!='b');
printf("\n%c",a);
return 0;
}

第4个回答  2017-12-29
while (a='b');
改成
while (a=='b');追问

打错了,就是a=='b',还是只能一次循环

第5个回答  2017-12-29
while (a='b'); //改成 while (a=='b') ;
相似回答