jia1230 发表于 2021-5-24 23:05:56

S1E12switch语句和分支嵌套 在VS2017中显示问题

#include <stdio.h>
int main() {
        char ch;
        printf("请输入成绩:\n");
        scanf_s("%c", &ch);
        switch (ch)
        {
        case'A':printf("你的成绩在90分以上!\n"); break;
        case'B':printf("你的成绩在80~90之间!\n"); break;
        case'C':printf("你的成绩在70~80之间!\n"); break;
        case'D':printf("你的成绩在60~70之间!\n"); break;
        case'E':printf("你的成绩在60分以下!\n"); break;
        default:printf("请输入有效成绩!\n"); break;
        }
        return 0;

搬运代码

代码如上、运行后分别输入A,B,C,D,E,F,显示均正常;但是在输入成绩为AB时显示结果为      你的成绩在90分以上!

这是为什么..    运行到A时 第一个break不是已经结束了吗?
{:10_277:}

最强废铁h 发表于 2021-5-24 23:11:18

我也是新手,我觉得scanf(“%c”,&ch) %c只能读取一个字符,所以输入AB时只读A,输入BC时只读B,

王之叹息 发表于 2021-5-24 23:16:53

首先,你看你说“但是在输入成绩为AB时显示结果为      你的成绩在90分以上!”对啊,就是因为运行到A时第一个break就已经结束了啊,所以它也没显示别的啊,这有啥不对的{:5_104:}
我还没运行代码,只是你是不是发贴的时候写错了?

王之叹息 发表于 2021-5-24 23:21:52

我运行了,你说的运行结果对,但这有啥不对的,有疑问可以再组织下语言问,没看太明白

jia1230 发表于 2021-5-24 23:25:43

最强废铁h 发表于 2021-5-24 23:11
我也是新手,我觉得scanf(“%c”,&ch) %c只能读取一个字符,所以输入AB时只读A,输入BC时只读B,

我觉的你是对的{:10_257:}

jia1230 发表于 2021-5-24 23:26:17

王之叹息 发表于 2021-5-24 23:16
首先,你看你说“但是在输入成绩为AB时显示结果为      你的成绩在90分以上!”对啊,就是因为运行到A时第 ...

刚才去试了下,,你说的也靠谱{:10_277:}

jia1230 发表于 2021-5-24 23:28:10

王之叹息 发表于 2021-5-24 23:21
我运行了,你说的运行结果对,但这有啥不对的,有疑问可以再组织下语言问,没看太明白

感谢解惑。。我都懂了
页: [1]
查看完整版本: S1E12switch语句和分支嵌套 在VS2017中显示问题