LiJay 发表于 2020-11-14 01:42:29

这两种代码有什么区别吗?

acm上的题目,转化等级制度。下面这是百度上的答案
#include<stdio.h>
int main()
{
        int t;
        while (scanf_s("%d", &t) != EOF)
        {
                if (t <= 100 && t >= 90)
                        printf("A\n");
                else if (t < 90 && t >= 80)
                        printf("B\n");
                else if (t < 80 && t >= 70)
                        printf("C\n");
                else if (t < 70 && t >= 60)
                        printf("D\n");
                else if (t >= 0 && t < 60)
                        printf("E\n");
                else
                        printf("Score is error!");
               
               
        }
        return 0;
}
下面这些是我的答案(我的答案提交上去直接是错的,可我感觉结果都一样呀)
#include<stdio.h>
int main()
{
        int score, i;
        while (scanf_s("%d", &score) != EOF)
        {
                i = score / 10;
                switch (i)
                {
                case 10:case 9:printf("A\n"); break;
                case 8:printf("B\n"); break;
                case 7:printf("C\n"); break;
                case 6:printf("D\n"); break;
                case 5:printf("E\n"); break;
                case 4:printf("E\n"); break;
                case 3:printf("E\n"); break;
                case 2:printf("E\n"); break;
                case 1:printf("E\n"); break;
                case 0:printf("E\n"); break;
                default:printf("Score is error!");
                        break;
                }
        }
        return 0;
}

昨非 发表于 2020-11-14 09:47:52

没有什么区别
不过是一个用的if--else分支判断
一个用的switch--case分支罢了

LiJay 发表于 2020-11-14 09:51:55

昨非 发表于 2020-11-14 09:47
没有什么区别
不过是一个用的if--else分支判断
一个用的switch--case分支罢了

我用switch上交作业显示错误,if-else却能对

昨非 发表于 2020-11-14 09:52:58

LiJay 发表于 2020-11-14 09:51
我用switch上交作业显示错误,if-else却能对

等下我看看

昨非 发表于 2020-11-14 09:55:46

LiJay 发表于 2020-11-14 09:51
我用switch上交作业显示错误,if-else却能对


#include<stdio.h>
int main()
{
        int score, i;
        while (scanf_s("%d", &score) != EOF)
        {
                i = score / 10;
                switch (i)
                {
                case 10:printf("A\n"); break;   //这里错了一行
                case 9:printf("A\n"); break;
                case 8:printf("B\n"); break;
                case 7:printf("C\n"); break;
                case 6:printf("D\n"); break;
                case 5:printf("E\n"); break;
                case 4:printf("E\n"); break;
                case 3:printf("E\n"); break;
                case 2:printf("E\n"); break;
                case 1:printf("E\n"); break;
                case 0:printf("E\n"); break;
                default:printf("Score is error!");
                        break;
                }
        }
        return 0;
}

昨非 发表于 2020-11-14 09:56:26

LiJay 发表于 2020-11-14 09:51
我用switch上交作业显示错误,if-else却能对

有一行错了
case10的情况得分出来
不能跟9写在一起

昨非 发表于 2020-11-14 10:04:54

满意的话记得设置最佳答案哈

风过无痕1989 发表于 2020-11-14 10:20:37

VS2015 运行正常。程序中 case 10:case 9:printf("A\n"); break; 若能写成两行则直观得多
case 10:
case 9:printf("A\n"); break;

昨非 发表于 2020-11-14 10:42:38

风过无痕1989 发表于 2020-11-14 10:20
VS2015 运行正常。程序中 case 10:case 9:printf("A\n"); break; 若能写成两行则直观得多
case 10:
case...

怪了,我2019就出问题了

好吧,是我弄错了

风过无痕1989 发表于 2020-11-14 11:12:27

昨非 发表于 2020-11-14 10:42
怪了,我2019就出问题了

好吧,是我弄错了

你再试试看

昨非 发表于 2020-11-14 11:14:18

风过无痕1989 发表于 2020-11-14 11:12
你再试试看

是我弄错了,看错了个标点

case语句执行完后继续向下执行,遇break停,是我傻了

抱歉抱歉{:10_245:}
页: [1]
查看完整版本: 这两种代码有什么区别吗?