有时很奇怪 2017-01-09 15:13 采纳率: 10%
浏览 1000

这个C语言逻辑错误怎么改?

//输入星期几的第一个字母来判断是星期几
//若有相同的,则继续输入第二个字母,继续判断
//环境是mac OS下的Xcode
//这个环境没有conio.h头文件,所以不能用getch和getche,所以只能用getchar

/*
Sunday 星期日
Monday 星期一
Tuesday 星期二
Wednesday 星期三
Thursday 星期四
Friday 星期五
Saturday 星期六
*/

#include
int main(){
printf("请输入:");//输入之后按回车
char one;
scanf("%c", &one);
switch(one){
case 's':
printf("请输入第二个字母\n");//输入之后按回车
if(getchar() == 'a'){
printf("星期六\n");
}
else if (getchar() == 'u'){
printf("星期日\n");
}
else{
printf("非法输入!\n");
}
break;
case 'm':printf("星期一\n");break;
case 't':printf("请输入第二个字母\n");//输入之后按回车
if(getchar() == 'u'){
printf("星期二\n");
}
else if (getchar() == 'h'){
printf("星期四\n");
}
else{
printf("非法输入!\n");
}
break;
case 'w':printf("星期三\n");break;
case 'f':printf("星期五\n");break;
default:printf("非法输入!");
}
return 0;
}
/*
这是结果。很明显不应该显示非法输入啊,应该是星期六才对啊。
请输入:s
请输入第二个字母
a
非法输入!
Program ended with exit code: 0


我又试了一下,这样是对的,为什么啊?
请输入:s
请输入第二个字母
u
星期日
Program ended with exit code: 0
*/
后来我
把第24行的 ‘a’ 改为 'u'
把第25行的 星期六 改为 星期日
把第27行的 ‘u’ 改为 'a'
把第28行的 星期日 改为 星期六
这么修改之后,输入s然后输入a,结果是对的!
但是输入s然后输入u结果就不对了,显示非法输入!
*/
//求大神救救我吧~
图片说明

  • 写回答

4条回答

  • 企鹅爱吃方便面 2017-01-09 15:33
    关注

    在进入case之后,printf之前加一个char变量,然后用getchar将字符读给这个新的char变量,但不要对这个变量做其他操作。

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错