7-2 成绩转换

分数 15

全屏浏览题目

切换布局

作者 沈睿

单位 浙江大学

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入格式:

输入在一行中给出一个整数的百分制成绩。

输出格式:

在一行中输出对应的五分制成绩。

输入样例:

90

输出样例:

A

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

我的答案:

二、分析

为了使用 switch 语句实现这个功能,我们首先需要将百分制成绩转换为一个可以由 switch 语句处理的值。一种方法是将分数除以10,然后用结果来决定输出哪一个五分制的成绩。

以下是使用C语言和C++的实现:

#include <stdio.h>

int main() {
    int score;
    scanf("%d", &score);

    switch (score / 10) {
        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;
        default:
            printf("E\n");
            break;
    }

    return 0;
}

C语言:

#include <iostream>
using namespace std;

int main() {
    int score;
    cin >> score;

    switch (score / 10) {
        case 10:
        case 9:
            cout << "A" << endl;
            break;
        case 8:
            cout << "B" << endl;
            break;
        case 7:
            cout << "C" << endl;
            break;
        case 6:
            cout << "D" << endl;
            break;
        default:
            cout << "E" << endl;
            break;
    }

    return 0;
}

这些程序使用了 switch 语句来检查给定成绩的十位数,并根据其值输出对应的五分制成绩。

总结:

从这种方法——将分数除以10,然后使用结果来决定输出哪一个五分制的成绩——我们可以学到以下几点:

1. **简化问题**:通过对问题的简化,我们可以使解决方案更加直观和容易实现。在这种情况下,我们使用除法来将一个连续的范围(0-100)转化为一个较小的离散集(0-10),从而简化了 `switch` 语句的实现。

2. **离散化连续数据**:在某些情况下,我们可以将连续的数据离散化,使其更容易处理。在此示例中,我们将连续的分数转化为离散的等级。

3. **利用 `switch` 语句的特性**:`switch` 语句最适合处理有限、离散的情况。在这种方法中,我们充分利用了 `switch` 语句的这一特性。

4. **使用case的穿透性**:在 `switch` 语句中,如果不使用 `break`,控制会“穿透”到下一个 `case`。在此例中,我们利用了这一特性来同时处理分数为90到100的情况(即将其映射到'A')。

5. **思维的转变**:不总是要直接地应对问题。有时,转变思路、间接地解决问题可能会更加高效。

6. **减少错误**:直接使用连续范围的 `if-else` 语句更容易出错(例如,不小心错写范围边界),而通过离散化连续数据并使用 `switch` 语句可以降低这种错误的概率。

总的来说,这种方法不仅提供了一个有效的解决方案,而且还教给我们如何简化和转变问题,以及如何充分利用某些编程结构的特性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值