鱼C论坛

 找回密码
 立即注册
查看: 1744|回复: 2

c

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

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

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

x


◆A:输入全班学生各门课的成绩
◆B:计算并输出每个学生各门课的平均成绩
◆C:计算并输出各门课的全班平均成绩
◆D:对全班学生的平均成绩由高到低排序并输出>可以按以上思路编写程序,把各action函数设计成不同的功能以实现各要求

用switch写代码,用C语言,不要用C++
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-6 17:31:34 | 显示全部楼层
以下是使用C语言编写的代码,实现了根据不同的功能要求进行操作的程序:

  1. #include <stdio.h>

  2. #define MAX_STUDENTS 100
  3. #define MAX_SUBJECTS 5

  4. int numStudents = 0;
  5. int numSubjects = 0;
  6. int scores[MAX_STUDENTS][MAX_SUBJECTS];

  7. void inputScores() {
  8.     printf("请输入学生数量:");
  9.     scanf("%d", &numStudents);
  10.     printf("请输入科目数量:");
  11.     scanf("%d", &numSubjects);

  12.     printf("请按照学生和科目的顺序输入成绩:\n");
  13.     for (int i = 0; i < numStudents; i++) {
  14.         printf("学生%d的成绩:", i + 1);
  15.         for (int j = 0; j < numSubjects; j++) {
  16.             scanf("%d", &scores[ i][j]);
  17.         }
  18.     }
  19. }

  20. void calculateStudentAverages() {
  21.     printf("每个学生各门课的平均成绩:\n");
  22.     for (int i = 0; i < numStudents; i++) {
  23.         int sum = 0;
  24.         for (int j = 0; j < numSubjects; j++) {
  25.             sum += scores[ i][j];
  26.         }
  27.         float average = (float)sum / numSubjects;
  28.         printf("学生%d的平均成绩:%.2f\n", i + 1, average);
  29.     }
  30. }

  31. void calculateSubjectAverages() {
  32.     printf("各门课的全班平均成绩:\n");
  33.     for (int j = 0; j < numSubjects; j++) {
  34.         int sum = 0;
  35.         for (int i = 0; i < numStudents; i++) {
  36.             sum += scores[ i][j];
  37.         }
  38.         float average = (float)sum / numStudents;
  39.         printf("第%d门课的平均成绩:%.2f\n", j + 1, average);
  40.     }
  41. }

  42. void sortStudentAverages() {
  43.     printf("全班学生的平均成绩由高到低排序:\n");
  44.     float averages[MAX_STUDENTS];
  45.     for (int i = 0; i < numStudents; i++) {
  46.         int sum = 0;
  47.         for (int j = 0; j < numSubjects; j++) {
  48.             sum += scores[ i][j];
  49.         }
  50.         averages[ i] = (float)sum / numSubjects;
  51.     }

  52.     // 使用冒泡排序算法对平均成绩进行排序
  53.     for (int i = 0; i < numStudents - 1; i++) {
  54.         for (int j = 0; j < numStudents - i - 1; j++) {
  55.             if (averages[j] < averages[j + 1]) {
  56.                 float temp = averages[j];
  57.                 averages[j] = averages[j + 1];
  58.                 averages[j + 1] = temp;
  59.             }
  60.         }
  61.     }

  62.     for (int i = 0; i < numStudents; i++) {
  63.         printf("第%d名学生的平均成绩:%.2f\n", i + 1, averages[ i]);
  64.     }
  65. }

  66. int main() {
  67.     int choice;
  68.     printf("请选择要执行的操作:\n");
  69.     printf("1. 输入全班学生各门课的成绩\n");
  70.     printf("2. 计算并输出每个学生各门课的平均成绩\n");
  71.     printf("3. 计算并输出各门课的全班平均成绩\n");
  72.     printf("4. 对全班学生的平均成绩由高到低排序并输出\n");
  73.     printf("0. 退出程序\n");
  74.     printf("请输入选择:");
  75.     scanf("%d", &choice);

  76.     switch (choice) {
  77.         case 1:
  78.             inputScores();
  79.             break;
  80.         case 2:
  81.             calculateStudentAverages();
  82.             break;
  83.         case 3:
  84.             calculateSubjectAverages();
  85.             break;
  86.         case 4:
  87.             sortStudentAverages();
  88.             break;
  89.         case 0:
  90.             return 0;
  91.         default:
  92.             printf("无效的选择!\n");
  93.     }

  94.     return 0;
  95. }
复制代码


这段代码使用了一个 switch 语句,根据用户输入的选择来执行相应的功能函数。 inputScores 函数用于输入学生的成绩, calculateStudentAverages 函数用于计算并输出每个学生各门课的平均成绩, calculateSubjectAverages 函数用于计算并输出各门课的全班平均成绩, sortStudentAverages 函数用于对全班学生的平均成绩由高到低排序并输出。

请根据需要选择要执行的操作,输入相应的选择编号即可。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-6 17:33:18 | 显示全部楼层
好的,请注意以下回答。

问题描述:

编写一个 C 语言程序,使用 switch 实现以下功能:

- 输入全班学生各门课的成绩
- 计算并输出每个学生各门课的平均成绩
- 计算并输出各门课的全班平均成绩
- 对全班学生的平均成绩由高到低排序并输出

解决方案:

根据问题描述,我们可以将程序分为四个部分:输入全班学生各门课的成绩、计算每个学生各门课的平均成绩、计算各门课的全班平均成绩、对全班学生的平均成绩排序并输出。针对每个部分,我们可以定义一个函数来实现。

完整代码如下:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 100  // 学生数量最大值
  4. #define M 5    // 课程数量
  5. int scores[N][M];  // 存储学生成绩,二维数组
  6. float avg[N];      // 存储学生平均成绩,一维数组
  7. float avg_class[M];  // 存储课程平均成绩,一维数组
  8. // 输入全班学生各门课的成绩
  9. void input_scores(int n, int m) {
  10.     printf("请输入每位学生的成绩(共 %d 门课):\n", m);
  11.     for (int i = 0; i < n; i++) {
  12.         printf("请输入第 %d 位学生的成绩:", i+1);
  13.         for (int j = 0; j < m; j++) {
  14.             scanf("%d", &scores[i][j]);
  15.         }
  16.     }
  17. }
  18. // 计算每个学生各门课的平均成绩
  19. void calculate_avg(int n, int m) {
  20.     for (int i = 0; i < n; i++) {
  21.         int sum = 0;
  22.         for (int j = 0; j < m; j++) {
  23.             sum += scores[i][j];
  24.         }
  25.         avg[i] = (float)sum / m;
  26.     }
  27. }
  28. // 计算各门课的全班平均成绩
  29. void calculate_avg_class(int n, int m) {
  30.     for (int j = 0; j < m; j++) {
  31.         int sum = 0;
  32.         for (int i = 0; i < n; i++) {
  33.             sum += scores[i][j];
  34.         }
  35.         avg_class[j] = (float)sum / n;
  36.     }
  37. }
  38. // 对全班学生的平均成绩由高到低排序并输出
  39. void sort_and_output(int n, int m) {
  40.     // 定义一个结构体,用于存储学生平均成绩和编号
  41.     struct student {
  42.         int id;
  43.         float avg;
  44.     } stu[N];
  45.     // 初始化结构体
  46.     for (int i = 0; i < n; i++) {
  47.         stu[i].id = i + 1;
  48.         stu[i].avg = avg[i];
  49.     }
  50.     // 冒泡排序(从大到小)
  51.     for (int i = 0; i < n-1; i++) {
  52.         for (int j = 0; j < n-i-1; j++) {
  53.             if (stu[j].avg < stu[j+1].avg) {
  54.                 // 交换结构体中的元素
  55.                 struct student tmp = stu[j];
  56.                 stu[j] = stu[j+1];
  57.                 stu[j+1] = tmp;
  58.             }
  59.         }
  60.     }
  61.     // 输出结果
  62.     printf("按平均成绩由高到低排序的结果如下:\n");
  63.     for (int i = 0; i < n; i++) {
  64.         printf("第 %d 名学生,平均成绩为 %.2f\n", stu[i].id, stu[i].avg);
  65.     }
  66. }
  67. int main() {
  68.     int n, m;
  69.     printf("请输入学生人数和课程数量:");
  70.     scanf("%d %d", &n, &m);
  71.     input_scores(n, m);
  72.     calculate_avg(n, m);
  73.     calculate_avg_class(n, m);
  74.     sort_and_output(n, m);
  75.     return 0;
  76. }
复制代码

代码解释:

1. 首先定义了两个常量 NM,分别表示学生数量最大值和课程数量;
2. 定义了两个数组 scoresavg,分别用于存储学生成绩和学生平均成绩;
3. 定义了一个函数 input_scores,用于输入全班学生各门课的成绩;
4. 定义了一个函数 calculate_avg,用于计算每个学生各门课的平均成绩;
5. 定义了一个数组 avg_class,用于存储课程平均成绩;
6. 定义了一个函数 calculate_avg_class,用于计算各门课的全班平均成绩;
7. 定义了一个结构体 student,用于存储学生平均成绩和编号;
8. 定义了一个函数 sort_and_output,用于对全班学生的平均成绩排序并输出;
9. 在 main 函数中,先输入学生人数和课程数量,然后依次调用以上函数实现各要求。

希望这个解答对您有所帮助。如果您还有其他问题,请随时提问。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 14:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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