yangzhixiaohuli 发表于 2023-10-17 18:04:39

求助一下

请编写函数,根据学生的分数确定其等级。

分数        等级
        A
[80, 90)        B
[70, 80)        C
[60, 70)        D
[0, 60)        E
函数原型
char ToRank(double score);
说明:参数 score 为分数(0 ~ 100),函数值为等级(A ~ E)。

裁判程序

#include <stdio.h>

char ToRank(double score);

int main()
{
    double s;
    char r;
    scanf("%lg", &s);
    r = ToRank(s);
    printf("%c\n", r);
    return 0;
}

/* 你提交的代码将被嵌在这里 */
输入格式
成绩

输出格式
等级

输入样例
87.5

输出样例
B

要求:使用 switch 语句实现,不要用if语句。
用C或者C++怎么写

isdkz 发表于 2023-10-17 18:05:26

以下是使用 switch 语句实现的 C++ 代码:

#include <iostream>
using namespace std;

char ToRank(double score) {
    int intScore = static_cast<int>(score / 10);// 将分数转换为整数
    char rank;

    switch (intScore) {
      case 10:
      case 9:
            rank = 'A';
            break;
      case 8:
            rank = 'B';
            break;
      case 7:
            rank = 'C';
            break;
      case 6:
            rank = 'D';
            break;
      default:
            rank = 'E';
            break;
    }

    return rank;
}

int main() {
    double s;
    char r;
    cin >> s;
    r = ToRank(s);
    cout << r << endl;
    return 0;
}


首先,我们将输入的分数转换为整数,然后使用 switch 语句根据整数分数的范围来确定等级。根据题目要求,90 到 100 分为 A 级,80 到 90 分为 B 级,以此类推。默认情况下,如果分数不在以上范围内,则为 E 级。

以上是用 C++ 编写的代码,可以直接运行。如果您使用的是 C 语言,请将#include <iostream>改为#include <stdio.h> ,将cin改为scanf ,将cout改为printf 。

陶远航 发表于 2023-10-17 18:05:38

在这个问题中,我们需要编写一个函数,该函数接受一个分数作为输入,并返回一个字符,表示该分数对应的等级。由于要求使用 switch 语句,我们可以先将分数转换为一个整数,然后使用 switch 语句来确定等级。

以下是一个使用 C 语言实现的示例:

#include <stdio.h>

char ToRank(double score) {
    int intScore = (int)score / 10; // 将分数转换为整数
    char rank;
    switch(intScore) {
      case 10:
      case 9:
            rank = 'A';
            break;
      case 8:
            rank = 'B';
            break;
      case 7:
            rank = 'C';
            break;
      case 6:
            rank = 'D';
            break;
      default:
            rank = 'E';
    }
    return rank;
}

int main() {
    double s;
    char r;
    scanf(\"%lg\", &s);
    r = ToRank(s);
    printf(\"%c\
\", r);
    return 0;
}


在这个代码中,我们首先将分数除以10并转换为整数。然后,我们使用 switch 语句来确定等级。注意,我们使用了 case 语句的穿透性(fall-through):如果分数是90或100,那么 intScore 就是9或10,所以等级是 'A'。同样,如果分数是80到89,那么 intScore 就是8,所以等级是 'B',以此类推。如果分数低于60,那么 intScore 就是5或更小的数,所以等级是 'E'。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

Mike_python小 发表于 2023-10-17 18:06:10

题目描述

请编写一个函数,根据学生的分数确定其等级。分数和等级的对应关系如下:

| 分数范围 | 等级 |
| :-: | :-: |
| | A |
| [80, 90) | B |
| [70, 80) | C |
| [60, 70) | D |
| [0, 60) | E |

请根据上述表格,编写名为 ToRank 的函数,其原型如下:


char ToRank(double score);


其中,参数 score 表示学生的分数,返回值为相应的等级。

输入格式

一个实数,表示学生的分数。

输出格式

一个字符,表示学生的等级。

样例输入


87.5


样例输出


B


解题思路

本题要求根据给定分数计算学生对应的等级,要求使用 switch 语句实现,注意避免使用 if 语句。

我们可以先将不同等级的分数范围用 case 语句进行分类讨论,并将对应的等级使用 return 语句输出即可。

代码如下所示:


char ToRank(double score) {
    switch ((int)score / 10) {
      case 10:
      case 9:
            return 'A';
      case 8:
            return 'B';
      case 7:
            return 'C';
      case 6:
            return 'D';
      default:
            return 'E';
    }
}


注意,在 switch 语句中,我们将传入的分数转换为整型,然后除以 10 后进行分类讨论。在每个 case 分支中,将对应的等级使用 return 语句输出即可。

完整代码


#include <iostream>
using namespace std;

char ToRank(double score) {
    switch ((int)score / 10) {
      case 10:
      case 9:
            return 'A';
      case 8:
            return 'B';
      case 7:
            return 'C';
      case 6:
            return 'D';
      default:
            return 'E';
    }
}

int main() {
    double s;
    cin >> s;
    cout << ToRank(s) << endl;
    return 0;
}


输出结果与样例相同,算法正确。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 求助一下