中易网

谁能帮我看看这个编程哪里出错了 怎么输出老是多一个error!!!

答案:4  悬赏:50  
解决时间 2021-02-01 03:03
#include"stdio.h"
int main()
{
char c;
while(scanf("%c",&c)!=EOF)
{
if(c!='A'&&c!='B'&&c!='C'&&c!='D'&&c!='E')
{
printf("error\n");
}
switch(c)
{
case 'A':
printf("90~100\n");
break;
case 'B':
printf("80~89\n");
break;
case 'C':
printf("70~79\n");
break;
case 'D':
printf("60~69\n");
break;
case 'E':
printf("<60\n");
break;
}
}
return 0;
}
最佳答案
//加 flushall();清除键盘缓冲区;
#include"stdio.h"
int main()
{
char c;
while(scanf("%c",&c)!=EOF)
{
if(c!='A'&&c!='B'&&c!='C'&&c!='D'&&c!='E')
{
printf("error\n");
}
switch(c)
{
case 'A':
printf("90~100\n");
break;
case 'B':
printf("80~89\n");
break;
case 'C':
printf("70~79\n");
break;
case 'D':
printf("60~69\n");
break;
case 'E':
printf("<60\n");
break;
}
flushall();//清除键盘缓冲区
}
return 0;
}
全部回答
因为scanf是带缓冲区的函数 比如当你输入A然后按回车的时候 实际上缓冲区有两个字符,一个是A一个是'\n'(回车符)。 而且当c=='\n'的时候 满足c!='A'&&c!='B'&&c!='C'&&c!='D'&&c!='E' 所以会输出error 解决办法: 1,在while语句的最后面加个while((c=getchar())!='\n'); 这样就能清除缓冲区中回车符及之前的所有字符,这是效率最高的 2,用系统函数fflush(stdin),同样是在while语句的最后加。这样起到同样的效果,就是清除缓冲区 3,将while改为if,一个一个字符的判断。 还有问题再追问。
集定义很多错误 一个元素的集根本不用定义 直接用就行了 links后面是括号自己改好了
你的 while(scanf("%c",&c)!=EOF)错了 %c是以字符的形式接收数据 当你输入法一个字符A或B等,接着你按了回车. 系统把回车当成一个字符来处理了 所以你就会多了一个error. 你把它改成 while(scanf("%s",&c)!=EOF)就行了. 但这样的代码不够严谨
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
宕昌县农业机械管理局地址在什么地方,想过去
富成洗浴中心地址有知道的么?有点事想过去
笔记本电脑屏幕一边清楚一边模糊?怎么回事?
如何从景深的角度去分析一张摄影作品,求图片
把240立方米的土铺在长60米,宽40米的平地上
中外名著 作者国籍,写于年代,作者生活
浙江金水湾投资管理有限公司这个地址在什么地
为什么mfc-250c打印机我设置了彩色打印,可是
安徽鑫德诺精密机械设备制造有限公司地址在什
用祝贺造句子三年级
not well to eat和not good to eat哪个对,有
泉州市丰泽区洛江出租车公司万马新能源智能充
合肥政务区就是蜀山区吗,还有是滨湖房价便宜
连云港江河机械制造公司地址在哪,我要去那里
PSV只玩卡带,不插记忆棒可以吗,玩的讨鬼传
推荐资讯
老窦海鲜批发怎么去啊,有知道地址的么
曲靖市麒麟区城关镇汽车修理厂怎么去啊,有知
公司分期买的汽车,户名写的我的名字,现在公
四川西华师大和川师大哪个学校收的分高
对手上的五指,作者的基本立场是什么
榛子镇哪庄豆片最好吃
胡李家地址在什么地方,想过去办事
为什么要编制结账分录
请问天津工业大学第二公共教学楼C区(西青区宾
电脑主机是邮寄过来的。玩着玩着突然断电似的
求求大家救救我的缅甸陆龟吧!!!!
欧派厨卫电器地址在什么地方,想过去办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?