鱼C论坛

 找回密码
 立即注册
查看: 2159|回复: 3

[已解决]求助一下

[复制链接]
发表于 2023-10-17 18:04:39 | 显示全部楼层 |阅读模式

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

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

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

分数        等级
[90, 100]        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++怎么写
最佳答案
2023-10-17 18:05:26
以下是使用 switch 语句实现的 C++ 代码:

  1. #include <iostream>
  2. using namespace std;

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

  6.     switch (intScore) {
  7.         case 10:
  8.         case 9:
  9.             rank = 'A';
  10.             break;
  11.         case 8:
  12.             rank = 'B';
  13.             break;
  14.         case 7:
  15.             rank = 'C';
  16.             break;
  17.         case 6:
  18.             rank = 'D';
  19.             break;
  20.         default:
  21.             rank = 'E';
  22.             break;
  23.     }

  24.     return rank;
  25. }

  26. int main() {
  27.     double s;
  28.     char r;
  29.     cin >> s;
  30.     r = ToRank(s);
  31.     cout << r << endl;
  32.     return 0;
  33. }
复制代码


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

以上是用 C++ 编写的代码,可以直接运行。如果您使用的是 C 语言,请将  #include <iostream>  改为  #include <stdio.h> ,将  cin  改为  scanf ,将  cout  改为  printf 。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-17 18:05:26 | 显示全部楼层    本楼为最佳答案   
以下是使用 switch 语句实现的 C++ 代码:

  1. #include <iostream>
  2. using namespace std;

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

  6.     switch (intScore) {
  7.         case 10:
  8.         case 9:
  9.             rank = 'A';
  10.             break;
  11.         case 8:
  12.             rank = 'B';
  13.             break;
  14.         case 7:
  15.             rank = 'C';
  16.             break;
  17.         case 6:
  18.             rank = 'D';
  19.             break;
  20.         default:
  21.             rank = 'E';
  22.             break;
  23.     }

  24.     return rank;
  25. }

  26. int main() {
  27.     double s;
  28.     char r;
  29.     cin >> s;
  30.     r = ToRank(s);
  31.     cout << r << endl;
  32.     return 0;
  33. }
复制代码


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

以上是用 C++ 编写的代码,可以直接运行。如果您使用的是 C 语言,请将  #include <iostream>  改为  #include <stdio.h> ,将  cin  改为  scanf ,将  cout  改为  printf 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-17 18:05:38 | 显示全部楼层
在这个问题中,我们需要编写一个函数,该函数接受一个分数作为输入,并返回一个字符,表示该分数对应的等级。由于要求使用 switch 语句,我们可以先将分数转换为一个整数,然后使用 switch 语句来确定等级。

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

  1. #include <stdio.h>

  2. char ToRank(double score) {
  3.     int intScore = (int)score / 10; // 将分数转换为整数
  4.     char rank;
  5.     switch(intScore) {
  6.         case 10:
  7.         case 9:
  8.             rank = 'A';
  9.             break;
  10.         case 8:
  11.             rank = 'B';
  12.             break;
  13.         case 7:
  14.             rank = 'C';
  15.             break;
  16.         case 6:
  17.             rank = 'D';
  18.             break;
  19.         default:
  20.             rank = 'E';
  21.     }
  22.     return rank;
  23. }

  24. int main() {
  25.     double s;
  26.     char r;
  27.     scanf("%lg", &s);
  28.     r = ToRank(s);
  29.     printf("%c\
  30. ", r);
  31.     return 0;
  32. }
复制代码


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

使用道具 举报

发表于 2023-10-17 18:06:10 | 显示全部楼层
题目描述

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

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

请根据上述表格,编写名为 ToRank 的函数,其原型如下:
  1. char ToRank(double score);
复制代码

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

输入格式

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

输出格式

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

样例输入

[/code]
87.5
[/code]

样例输出

[/code]
B
[/code]

解题思路

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

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

代码如下所示:
  1. char ToRank(double score) {
  2.     switch ((int)score / 10) {
  3.         case 10:
  4.         case 9:
  5.             return 'A';
  6.         case 8:
  7.             return 'B';
  8.         case 7:
  9.             return 'C';
  10.         case 6:
  11.             return 'D';
  12.         default:
  13.             return 'E';
  14.     }
  15. }
复制代码

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

完整代码
  1. #include <iostream>
  2. using namespace std;
  3. char ToRank(double score) {
  4.     switch ((int)score / 10) {
  5.         case 10:
  6.         case 9:
  7.             return 'A';
  8.         case 8:
  9.             return 'B';
  10.         case 7:
  11.             return 'C';
  12.         case 6:
  13.             return 'D';
  14.         default:
  15.             return 'E';
  16.     }
  17. }
  18. int main() {
  19.     double s;
  20.     cin >> s;
  21.     cout << ToRank(s) << endl;
  22.     return 0;
  23. }
复制代码

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

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 08:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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