请按c.pdf中的内容生成c语言代码,其中可以存入五个学科的成绩,并且在计算平均值时可以选择一门学科(subject1-5)并计算,在比较最大最小值时,也可以选择一门学科进行比较,并列出获得最高(低)成绩的学生
时间: 2024-12-16 15:31:59 浏览: 8
根据 `c.pdf` 中的内容和您的要求,以下是一个简单的 C 语言程序实现,该程序可以管理学生多个学科的成绩,包括添加学生成绩、显示所有学生信息、计算特定学科的班级平均分以及查找特定学科的最高和最低分数及其对应的学生。
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
#define SUBJECTS 5
typedef struct {
char name[50];
int grades[SUBJECTS];
} Student;
Student students[MAX_STUDENTS];
int student_count = 0;
void add_student() {
if (student_count >= MAX_STUDENTS) {
printf("无法添加更多学生!\n");
return;
}
Student new_student;
printf("请输入学生姓名: ");
scanf("%s", new_student.name);
for (int i = 0; i < SUBJECTS; i++) {
printf("请输入 %d 学科的成绩: ", i + 1);
scanf("%d", &new_student.grades[i]);
}
students[student_count++] = new_student;
}
void display_all_students() {
if (student_count == 0) {
printf("没有学生记录!\n");
return;
}
printf("学生列表:\n");
for (int i = 0; i < student_count; i++) {
printf("姓名: %s\n", students[i].name);
for (int j = 0; j < SUBJECTS; j++) {
printf("科目 %d 成绩: %d\n", j + 1, students[i].grades[j]);
}
printf("\n");
}
}
float calculate_average(int subject) {
if (student_count == 0) {
printf("没有学生记录!\n");
return 0.0f;
}
float sum = 0.0f;
for (int i = 0; i < student_count; i++) {
sum += students[i].grades[subject - 1];
}
return sum / student_count;
}
void find_highest_lowest_grade(int subject) {
if (student_count == 0) {
printf("没有学生记录!\n");
return;
}
int max_grade = students[0].grades[subject - 1];
int min_grade = students[0].grades[subject - 1];
char max_name[50], min_name[50];
strcpy(max_name, students[0].name);
strcpy(min_name, students[0].name);
for (int i = 1; i < student_count; i++) {
if (students[i].grades[subject - 1] > max_grade) {
max_grade = students[i].grades[subject - 1];
strcpy(max_name, students[i].name);
}
if (students[i].grades[subject - 1] < min_grade) {
min_grade = students[i].grades[subject - 1];
strcpy(min_name, students[i].name);
}
}
printf("科目 %d 最高分: %d, 学生: %s\n", subject, max_grade, max_name);
printf("科目 %d 最低分: %d, 学生: %s\n", subject, min_grade, min_name);
}
int main() {
int choice, subject;
while (1) {
printf("\n学生成绩管理系统\n");
printf("1. 添加学生\n");
printf("2. 显示所有学生\n");
printf("3. 计算特定学科的班级平均分\n");
printf("4. 查找特定学科的最高和最低分\n");
printf("0. 退出\n");
printf("请选择操作: ");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
display_all_students();
break;
case 3:
printf("请选择要计算平均分的学科(1-5): ");
scanf("%d", &subject);
if (subject < 1 || subject > 5) {
printf("无效的学科编号!\n");
} else {
printf("科目 %d 的平均分: %.2f\n", subject, calculate_average(subject));
}
break;
case 4:
printf("请选择要查找最高和最低分的学科(1-5): ");
scanf("%d", &subject);
if (subject < 1 || subject > 5) {
printf("无效的学科编号!\n");
} else {
find_highest_lowest_grade(subject);
}
break;
case 0:
return 0;
default:
printf("无效的选择!\n");
}
}
}
```
### 功能说明:
1. **添加学生**:允许输入学生的姓名和五个学科的成绩。
2. **显示所有学生**:显示所有已添加的学生及其各科成绩。
3. **计算特定学科的班级平均分**:用户选择一个学科,程序将计算该学科的平均分。
4. **查找特定学科的最高和最低分**:用户选择一个学科,程序将找到该学科的最高分和最低分及其对应的学生。
### 使用方法:
运行程序后,按照提示选择相应的功能即可。希望这个程序能满足您的需求!
阅读全文