永发信息网

switch case语句 里面嵌套if else语句出现错误,求指导

答案:3  悬赏:80  手机版
解决时间 2021-01-23 10:37
  • 提问者网友:我是我
  • 2021-01-22 10:13
输入S后再输入u显示Sunday,但是输入a就提示输入错误,到底哪里出现了问题?谢谢!
没有财富值,见谅!谢谢各位
代码如下:
#include "stdio.h"

void main()
{
char in=getchar();
switch(in)
{
case 'F':printf("Friday.");break;
case 'M':printf("Monday.");break;
case 'S':printf("目前无法判断,请输入第二个字符!\n");
if(getchar()=='a')
printf("Saturday.");
else if (getchar()=='u')
printf("Sunday.");
else
printf("输入错误!");
break;
case 'T':printf("目前无法判断,请输入第二个字符!\n");
if(getchar()=='u')
printf("Tuesday.");
else if (getchar()=='h')
printf("Thursday.");
else
printf("输入错误!");
break;
case 'W':printf("Wednesday.");break;
default:printf("输入错误!");
}

}
最佳答案
  • 五星知识达人网友:怙棘
  • 2021-01-22 11:04
你的case内的if中的 getchar()应该只执行一次,用变量保存,如case‘S':改为:

在switch(in)前面加个 char ch;

case 'S':printf("目前无法判断,请输入第二个字符!\n");
ch = getchar();
if(ch=='a')
printf("Saturday.");
else if (ch=='u') //错误因为你这里再用getchar()得到的就是输入的第三个字符了。
printf("Sunday.");
else
printf("输入错误!");
break;

case'T'同理。。。
全部回答
  • 1楼网友:十鸦
  • 2021-01-22 12:27
假定 int型 num为分数 if(num>=90) printf("优秀"); else if(num>=80) printf("良好"); else if(num>=70) printf("中等"); else if(num>=60) printf("合格"); else printf("不合格"); switch是一一比对相符,不适合用在判定大小的方面,非要这样用 switch(num/10) { case 10: case 9: printf("优秀");break; case 8: printf("良好");break; case 7: printf("中等"); break; case 6: printf("合格"); break; default: printf("不合格"); }
  • 2楼网友:三千妖杀
  • 2021-01-22 12:10
输入1 0 第一次运行: 案例1: 开关(Y) {0的情况下:一+ +;打破; 案例1:B + +;打破; } 因为Y = 0,所以运行:0案例:一+ +;打破; 案例1: 开关(Y) BR /> {情况下0:+ +;打破; 案例1:B + +;打破; } 没有中断,因此继续运行 案例2: + +,B + +;打破; 突破这里出来,所以最终的执行具有A + + A + + B + +; 要得到: 一= 1 ,B = 0 成这样: 案例1:开关(Y) {0的情况下:一+ +;打破; 案例1:B + + ;打破; } 突破; 案例2:A + +,B + +;打破; 案例3:A + +,B + +;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯