有时很奇怪 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变量,但不要对这个变量做其他操作。

    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码