鱼C论坛

 找回密码
 立即注册
查看: 1143|回复: 10

[已解决]这两种代码有什么区别吗?

[复制链接]
发表于 2020-11-14 01:42:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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: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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-14 09:47:52 | 显示全部楼层
没有什么区别
不过是一个用的if--else分支判断
一个用的switch--case分支罢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-14 09:51:55 | 显示全部楼层
昨非 发表于 2020-11-14 09:47
没有什么区别
不过是一个用的if--else分支判断
一个用的switch--case分支罢了

我用switch上交作业显示错误,if-else却能对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

等下我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

有一行错了
case10的情况得分出来
不能跟9写在一起
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 10:04:54 | 显示全部楼层
满意的话记得设置最佳答案哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 10:20:37 | 显示全部楼层
VS2015 运行正常。程序中 case 10:case 9:printf("A\n"); break; 若能写成两行则直观得多
case 10:
case 9:printf("A\n"); break;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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就出问题了

好吧,是我弄错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 11:12:27 | 显示全部楼层
昨非 发表于 2020-11-14 10:42
怪了,我2019就出问题了

好吧,是我弄错了

你再试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-14 11:14:18 | 显示全部楼层

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

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

抱歉抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 16:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表