为什么c语言使用多重if后会出现跳过现象

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

int main(int argc, char* argv[])
{
char m,a,b,c,x,y,z;
printf("请回答以下问题:\n");
printf("请问你认识奥巴马吗?y or n\n");
scanf("%c",&m);
if(m=='y')
{
printf("进入下一题:请以小写输入奥巴马的首字母\n");
scanf("%c%c%c",&x,&y,&z);
if(x=='a'&&y=='b'&&z=='m')
{
printf("最后一题:请以小写输入动物园的首字母\n");
scanf("%c%c%c",&a,&b,&c);
if(a=='d'&&b=='w'&&c=='y')
{
printf("你赢了!\n");
}
else
{
printf("你输了!\n");
}
}
else
{
printf("你输了!\n");
}
}
else
{
printf("你输了!\n");
}
getch();
return 0;
}
问题如下,有时会怎么也过不了第二关,到第二个问题无论输入什么都是错误。当我把条件换成判断数字时,他又正常了,就是判断多个字母会出现问题

连续输入多个字符时,如果存在回车就会影响正常读入,所以在下次读入字符前应该先将输入缓冲区清空,代码如下:

if(m=='y')
{
fflush(stdin); //清空输入缓冲区

printf("进入下一题:请以小写输入奥巴马的首字母\n");
scanf("%c%c%c",&x,&y,&z);
if(x=='a'&&y=='b'&&z=='m')
{
fflush(stdin); //同上

printf("最后一题:请以小写输入动物园的首字母\n");
scanf("%c%c%c",&a,&b,&c);
if(a=='d'&&b=='w'&&c=='y')
{
printf("你赢了!\n");
}
else
{
printf("你输了!\n");
}
}
else
{
printf("你输了!\n");
}
}

有什么问题再追问吧。希望对你有所帮助

温馨提示:内容为网友见解,仅供参考
无其他回答

为什么c语言使用多重if后会出现跳过现象
连续输入多个字符时,如果存在回车就会影响正常读入,所以在下次读入字符前应该先将输入缓冲区清空,代码如下:if(m=='y'){fflush(stdin);\/\/清空输入缓冲区printf("进入下一题:请以小写输入奥巴马的首字母\\n");scanf("%c%c%c",&x,&y,&z);if(x=='a'&&y=='b'&&z=='m'){fflush(stdi...

c语言中多个if语句为啥只执行最后一个语句?
这是因为在 C 语言中,if 语句的执行顺序是从上往下依次执行,每次只有一个条件被检查。如果某个条件成立,就会执行对应的语句块,并跳过其他的语句块。如果所有的条件都不成立,那么 if 语句不执行任何语句块。例如,下面的代码演示了多个 if 语句的执行情况:include <stdio.h> int main() { int ...

c语言 else if中的语句中 跳过不运行。
2、编译器问题。极少,但我遇见过。这就比较麻烦了,处理方法没有一定之规。一般可能要重写一下语句,比如此例中多用个中间变量xx = r*(-1),然后再调用,总之就是改变一下结构或算法,有时需要多试几次。

c语言中连续3个if语句 三种情况,大于等于小于0,为什么只执行第一个...
delta只会满足一种情况,所以只会有一个结果。if语句条件不满足这个if所包含的语句是不会执行的

c语言中连续3个if语句 三种情况,大于等于小于0,为什么只执行第一个...
本来就只有一个结果,这个结果只和你输入的abc有关系 delta只会满足一种情况,所以只会有一个结果。if语句条件不满足这个if所包含的语句是不会执行的

c语言为什么在主函数定义好另一个函数后跳过运行
中间变量溢出。C语言是一种计算机程序设计语言,因为中间变量溢出导致在主函数定义好另一个函数后跳过运行的,是可以作为系统设计语言,编写工作系统应用程序。

新手请教,C语言中为什么if if else的嵌套语句中,执行了第一个if第二个...
因为第一个if条件不满足,不能执行里面嵌套的第二个if

C语言中为什么有的if多分支语句结尾没有else?
在 C 语言中,if 多分支语句的结尾可以没有 else 分支。这是因为 if 语句的语法结构是这样的:if (expression) { statement1;} else { statement2;} 其中,else 分支是可选的。如果添加了 else 分支,则当表达式的结果为 false 时执行 statement2;否则,不执行任何语句,直接跳过整个 if 语句。...

在C语言中,有if 的时候怎么用,加了else 后执行顺序好像又一样了,求c...
不执行if就执行else,执行else的条件是if里面的不执行,如果没有else后面无论如何都会执行

C语言分支结构中执行过一个if后为什么还能继续执行下一个if
3个 if 语句是并列的,没有嵌套,当然会执行完1个再执行第二个,楼主对 if 的理解还需加强 望采纳

相似回答