C语言问题!!急!!请高手帮帮忙

请看下下面的程序有什么问题,为什么循环的时候只有1,3,5次要求我输入,2,4,6直接默认我什么都没输?谢谢

#include <stdio.h>
int main(void)
{
int i;
char f;
for(i=1;i<=6;i++){
printf("Input Grade:");
scanf("%c",&f);
switch(f){
case 'A':printf("%c对应的百分制成绩区间是90~100\n",f);break;
case 'B':printf("%c对应的百分制成绩区间是80~89\n",f);break;
case 'C':printf("%c对应的百分制成绩区间是70~79\n",f);break;
case 'D':printf("%c对应的百分制成绩区间是60~69\n",f);break;
case 'E':printf("%c对应的百分制成绩区间是0~59\n",f);break;
default:printf("输入错误\n");break;
}
}
return 0;
}
请说的清楚一些好吗?我是初学者

能说明一下怎么解决这个问题吗?是不是解决不了了呢?

输入数字和字母实际上都是输入两个字符,只要在输入之后清理一下缓冲就OK了。
在scanf("%c",&f);这行之后加入一句清空输入缓冲区语句

fflush(stdin);

参考资料:http://zengwu3915.blog.163.com/blog/static/2783489720103652816511/

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-06
scanf 后面 加个 getc()

或者 直接用 getc
第2个回答  2010-04-06
因为你的输入语句是scanf("%c",&f);
所以,你在输入的时候是不是输入一个数据然后按回车??
这个回车符也被系统接收了,所以你等于一次给系统两个数据。这样说你明白了没?
第3个回答  2010-04-06
兄弟,这是tc2的一个bug,当两个scanf在在一起是就会有一个scanf“失效”。我曾经也想过很久,最后猜了一个原因:不知道合理不:系统把你前一次的回车认为是字符付给了第二个scanf的变量。后来记得好像验证过确实是这个问题。你感兴趣久验证一下吧。给你个解决这类问题的方法:当有两个或两个以上scanf同时出现时,你在他们后面都写一个空的scanf。也就是比原来的scanf多一倍。
相似回答