当前位置: 代码迷 >> C语言 >> [求助]关于 if语句的一个幼稚的问题
  详细解决方案

[求助]关于 if语句的一个幼稚的问题

热度:55   发布时间:2005-02-22 00:40:00.0
[求助]关于 if语句的一个幼稚的问题
void main()
{
char a,b;
printf("%s\n","input a");
scanf("%c",&a);
if(a=='y')
printf("a=y");
else printf("error");
printf("%s\n","input b");
scanf("%c",&b);
if(b=='y')
printf("b=y");
else printf("error");
}

上面这段程序在运行过程中第一个if...else结构运行正常,而第二个if...else结构则不起作用,程序在不要求任何输入的情况下自动输出“error”,不知是何原因,望高人指教。
搜索更多相关的解决方案: 语句  

----------------解决方案--------------------------------------------------------
void main()
{
char a,b;
printf("%s\n","input a");
scanf("%c\n%c",&a,&b);
if(a=='y')
printf("a=y\n");
else printf("error\n");
printf("%s\n","input b");
if(b=='y')
printf("b=y");
else printf("error");
getch();
}
我在TC编译器上运行可以拉
----------------解决方案--------------------------------------------------------

#include <stdio.h> #include <conio.h>

void main() { char a,b; printf("%s\n","input a"); scanf("%c",&a); if(a == 'y') printf("a=y\n"); else printf("error\n");

printf("%s\n","input b"); scanf("\n%c",&b);

if(b == 'y') printf("b=y\n"); else printf("error\n"); }


----------------解决方案--------------------------------------------------------

#include <stdio.h> #include <conio.h>

void main() { char a,b,c; printf("%s\n","input a"); scanf("%c",&a); if(a == 'y') printf("a=y\n"); else printf("error\n");

printf("%s\n","input b"); c=getchar(); scanf("%c",&b);

if(b == 'y') printf("b=y\n"); else printf("error\n"); getch(); }


----------------解决方案--------------------------------------------------------
按照高人yuki的写法是有效的,但是在下的问题出在哪里呢?难道真就差在那几个空格上?还请高人指教。另外也多谢高人mengge的指教。
----------------解决方案--------------------------------------------------------
以下是引用death在2005-2-22 10:30:01的发言: 按照高人yuki的写法是有效的,但是在下的问题出在哪里呢?难道真就差在那几个空格上?还请高人指教。另外也多谢高人mengge的指教。
问题不是出在空格上面,只是我帮你整理了下代码看上去清晰一点。。。问题出在第二个scanf()语句上面,上了个换行符。。因为第一个scanf()的格式只是收集用户输入的一个字符,而收集完字符后必须输入回车跳转到第二个scanf(),之前你的第二个scanf()没有换行符也是只收集用户输入的一个字符,计算机会误把上面一个回车传递给变量b所以会造成if语句跳出。。。。。我表达能力不太好,还请见谅。。。。 对了,我也不是什么高人,和你一样的也是同一起跑线上的初学者。。。。。。。。
----------------解决方案--------------------------------------------------------
这次全明白了,多谢指教。
----------------解决方案--------------------------------------------------------
我只是曾经碰到和你一样的问题 只是知道为什么出现这个问题不知道 SCANF()的回车在那里接收才有效 麻烦yuki 告诉怎么样判断在那里接收 最后我也不是什么高人 我学C也才1个月而已
----------------解决方案--------------------------------------------------------
一般从第二个scanf()起使用,以便接受上一个scanf()传入的换行符。
----------------解决方案--------------------------------------------------------
谢谢yuki指点 我一直都是为拉避免我就采取调用函数和放在一个scanf()里面
----------------解决方案--------------------------------------------------------
  相关解决方案