求高手帮帮忙!!
# include<stdio.h>
main()
{
char a,b,c;
printf("Do you have Experience with C? Press y/n!\n");
scanf("%c",&a);
switch(a)
{
default :printf("Input error!!!");break;
case 'n': case 'N':printf("We are so sorry to tell you ...");break;
case 'y': case 'Y':
{
printf("Do you have bachelor degree?Press y/n!\n");
scanf("%c",b)
switch(b)
{
default :printf("Input error!!!");break;
case 'n': case 'N':printf("We are so sorry to tell you ...");break;
case 'y': case 'Y':
{
printf("Less than 30?Press y/n!\n");
scanf("%c",&c);
switch(c)
{
default :printf("Input error!!!");break;
case 'n': case 'N':printf("We are so sorry
to tell
you ...");break;
case 'y': case 'Y':printf("Welcome to join
us!\n");
}
}
}
}
}
}
9 个解决方案
#1
'\n' ;
fflush(stdin);
#2
scanf()和getchar()函数是从输入流缓冲区 中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(\n)而结束的,这个\n会一起读入输入流缓冲区的,所以第一次接受输入时取走字 符后会留下字符\n,这样第二次的读入函数直接从缓冲区中把\n取走了,显然读取成功了,所以不会再从终端读取!因此后面只要加上fflush(stdin)函数释放缓冲区数据就可以了.
解决办法:可以在scanf()函数之 后加个fflush(stdin);,还有加getch(); getchar();也可以,
解决办法:可以在scanf()函数之 后加个fflush(stdin);,还有加getch(); getchar();也可以,
#3
排版啊!
# include<stdio.h>
main()
{
char a,b,c;
printf("Do you have Experience with C? Press y/n!\n");
scanf("%c",&a);
switch(a)
{
case 'n': case 'N':printf("We are so sorry to tell you ...");break;
case 'y': case 'Y':
{
printf("Do you have bachelor degree?Press y/n!\n");
fflush(stdin);
scanf("%c",&b);
switch(b)
{
case 'n': case 'N':printf("We are so sorry to tell you ...");break;
case 'y': case 'Y':
{
printf("Less than 30?Press y/n!\n");
fflush(stdin);
scanf("%c",&c);
switch(c)
{
case 'n': case 'N':printf("We are so sorry to tell you ...");break;
case 'y': case 'Y':printf("Welcome to join us!\n"); break;
default :printf("Input error!!!");break;
}
} break;
default :printf("Input error!!!");break;
}
} break;
default :printf("Input error!!!");break;
}
}
#4
知道了!谢各位了哈!
#5
scanf("%c",&b);
#6
给最后面加个getchar();就解决问题因为这样需要从键盘输入空格才结束
#7
这是scanf函数的bug,在%c前面加上%*应该可以的
#8
在第二个scanf()之前价格fflush(stdin)
#9
在scanf(" %c",**) 在%c前面加一个空格是最有效的 排除垃圾的方法
#1
'\n' ;
fflush(stdin);
#2
scanf()和getchar()函数是从输入流缓冲区 中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(\n)而结束的,这个\n会一起读入输入流缓冲区的,所以第一次接受输入时取走字 符后会留下字符\n,这样第二次的读入函数直接从缓冲区中把\n取走了,显然读取成功了,所以不会再从终端读取!因此后面只要加上fflush(stdin)函数释放缓冲区数据就可以了.
解决办法:可以在scanf()函数之 后加个fflush(stdin);,还有加getch(); getchar();也可以,
解决办法:可以在scanf()函数之 后加个fflush(stdin);,还有加getch(); getchar();也可以,
#3
排版啊!
# include<stdio.h>
main()
{
char a,b,c;
printf("Do you have Experience with C? Press y/n!\n");
scanf("%c",&a);
switch(a)
{
case 'n': case 'N':printf("We are so sorry to tell you ...");break;
case 'y': case 'Y':
{
printf("Do you have bachelor degree?Press y/n!\n");
fflush(stdin);
scanf("%c",&b);
switch(b)
{
case 'n': case 'N':printf("We are so sorry to tell you ...");break;
case 'y': case 'Y':
{
printf("Less than 30?Press y/n!\n");
fflush(stdin);
scanf("%c",&c);
switch(c)
{
case 'n': case 'N':printf("We are so sorry to tell you ...");break;
case 'y': case 'Y':printf("Welcome to join us!\n"); break;
default :printf("Input error!!!");break;
}
} break;
default :printf("Input error!!!");break;
}
} break;
default :printf("Input error!!!");break;
}
}
#4
知道了!谢各位了哈!
#5
scanf("%c",&b);
#6
给最后面加个getchar();就解决问题因为这样需要从键盘输入空格才结束
#7
这是scanf函数的bug,在%c前面加上%*应该可以的
#8
在第二个scanf()之前价格fflush(stdin)
#9
在scanf(" %c",**) 在%c前面加一个空格是最有效的 排除垃圾的方法