c
◆A:输入全班学生各门课的成绩
◆B:计算并输出每个学生各门课的平均成绩
◆C:计算并输出各门课的全班平均成绩
◆D:对全班学生的平均成绩由高到低排序并输出>可以按以上思路编写程序,把各action函数设计成不同的功能以实现各要求
用switch写代码,用C语言,不要用C++ 以下是使用C语言编写的代码,实现了根据不同的功能要求进行操作的程序:
#include <stdio.h>
#define MAX_STUDENTS 100
#define MAX_SUBJECTS 5
int numStudents = 0;
int numSubjects = 0;
int scores;
void inputScores() {
printf("请输入学生数量:");
scanf("%d", &numStudents);
printf("请输入科目数量:");
scanf("%d", &numSubjects);
printf("请按照学生和科目的顺序输入成绩:\n");
for (int i = 0; i < numStudents; i++) {
printf("学生%d的成绩:", i + 1);
for (int j = 0; j < numSubjects; j++) {
scanf("%d", &scores[ i]);
}
}
}
void calculateStudentAverages() {
printf("每个学生各门课的平均成绩:\n");
for (int i = 0; i < numStudents; i++) {
int sum = 0;
for (int j = 0; j < numSubjects; j++) {
sum += scores[ i];
}
float average = (float)sum / numSubjects;
printf("学生%d的平均成绩:%.2f\n", i + 1, average);
}
}
void calculateSubjectAverages() {
printf("各门课的全班平均成绩:\n");
for (int j = 0; j < numSubjects; j++) {
int sum = 0;
for (int i = 0; i < numStudents; i++) {
sum += scores[ i];
}
float average = (float)sum / numStudents;
printf("第%d门课的平均成绩:%.2f\n", j + 1, average);
}
}
void sortStudentAverages() {
printf("全班学生的平均成绩由高到低排序:\n");
float averages;
for (int i = 0; i < numStudents; i++) {
int sum = 0;
for (int j = 0; j < numSubjects; j++) {
sum += scores[ i];
}
averages[ i] = (float)sum / numSubjects;
}
// 使用冒泡排序算法对平均成绩进行排序
for (int i = 0; i < numStudents - 1; i++) {
for (int j = 0; j < numStudents - i - 1; j++) {
if (averages < averages) {
float temp = averages;
averages = averages;
averages = temp;
}
}
}
for (int i = 0; i < numStudents; i++) {
printf("第%d名学生的平均成绩:%.2f\n", i + 1, averages[ i]);
}
}
int main() {
int choice;
printf("请选择要执行的操作:\n");
printf("1. 输入全班学生各门课的成绩\n");
printf("2. 计算并输出每个学生各门课的平均成绩\n");
printf("3. 计算并输出各门课的全班平均成绩\n");
printf("4. 对全班学生的平均成绩由高到低排序并输出\n");
printf("0. 退出程序\n");
printf("请输入选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
inputScores();
break;
case 2:
calculateStudentAverages();
break;
case 3:
calculateSubjectAverages();
break;
case 4:
sortStudentAverages();
break;
case 0:
return 0;
default:
printf("无效的选择!\n");
}
return 0;
}
这段代码使用了一个 switch 语句,根据用户输入的选择来执行相应的功能函数。 inputScores 函数用于输入学生的成绩, calculateStudentAverages 函数用于计算并输出每个学生各门课的平均成绩, calculateSubjectAverages 函数用于计算并输出各门课的全班平均成绩, sortStudentAverages 函数用于对全班学生的平均成绩由高到低排序并输出。
请根据需要选择要执行的操作,输入相应的选择编号即可。 好的,请注意以下回答。
问题描述:
编写一个 C 语言程序,使用 switch 实现以下功能:
- 输入全班学生各门课的成绩
- 计算并输出每个学生各门课的平均成绩
- 计算并输出各门课的全班平均成绩
- 对全班学生的平均成绩由高到低排序并输出
解决方案:
根据问题描述,我们可以将程序分为四个部分:输入全班学生各门课的成绩、计算每个学生各门课的平均成绩、计算各门课的全班平均成绩、对全班学生的平均成绩排序并输出。针对每个部分,我们可以定义一个函数来实现。
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#define N 100// 学生数量最大值
#define M 5 // 课程数量
int scores;// 存储学生成绩,二维数组
float avg; // 存储学生平均成绩,一维数组
float avg_class;// 存储课程平均成绩,一维数组
// 输入全班学生各门课的成绩
void input_scores(int n, int m) {
printf("请输入每位学生的成绩(共 %d 门课):\n", m);
for (int i = 0; i < n; i++) {
printf("请输入第 %d 位学生的成绩:", i+1);
for (int j = 0; j < m; j++) {
scanf("%d", &scores);
}
}
}
// 计算每个学生各门课的平均成绩
void calculate_avg(int n, int m) {
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = 0; j < m; j++) {
sum += scores;
}
avg = (float)sum / m;
}
}
// 计算各门课的全班平均成绩
void calculate_avg_class(int n, int m) {
for (int j = 0; j < m; j++) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += scores;
}
avg_class = (float)sum / n;
}
}
// 对全班学生的平均成绩由高到低排序并输出
void sort_and_output(int n, int m) {
// 定义一个结构体,用于存储学生平均成绩和编号
struct student {
int id;
float avg;
} stu;
// 初始化结构体
for (int i = 0; i < n; i++) {
stu.id = i + 1;
stu.avg = avg;
}
// 冒泡排序(从大到小)
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (stu.avg < stu.avg) {
// 交换结构体中的元素
struct student tmp = stu;
stu = stu;
stu = tmp;
}
}
}
// 输出结果
printf("按平均成绩由高到低排序的结果如下:\n");
for (int i = 0; i < n; i++) {
printf("第 %d 名学生,平均成绩为 %.2f\n", stu.id, stu.avg);
}
}
int main() {
int n, m;
printf("请输入学生人数和课程数量:");
scanf("%d %d", &n, &m);
input_scores(n, m);
calculate_avg(n, m);
calculate_avg_class(n, m);
sort_and_output(n, m);
return 0;
}
代码解释:
1. 首先定义了两个常量 N 和 M,分别表示学生数量最大值和课程数量;
2. 定义了两个数组 scores 和 avg,分别用于存储学生成绩和学生平均成绩;
3. 定义了一个函数 input_scores,用于输入全班学生各门课的成绩;
4. 定义了一个函数 calculate_avg,用于计算每个学生各门课的平均成绩;
5. 定义了一个数组 avg_class,用于存储课程平均成绩;
6. 定义了一个函数 calculate_avg_class,用于计算各门课的全班平均成绩;
7. 定义了一个结构体 student,用于存储学生平均成绩和编号;
8. 定义了一个函数 sort_and_output,用于对全班学生的平均成绩排序并输出;
9. 在 main 函数中,先输入学生人数和课程数量,然后依次调用以上函数实现各要求。
希望这个解答对您有所帮助。如果您还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页:
[1]