用c语言有5个学生,每个学生的数据信息包括学号、姓名、4门课程成绩,编程实现学生成绩管理。
时间: 2023-12-15 15:08:32 浏览: 114
C语言:定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表.zip
5星 · 资源好评率100%
以下是一个简单的实现,包含了学生信息的输入、输出、查询以及成绩统计等功能。代码中使用了结构体来存储学生信息,同时也包含了一些简单的错误处理。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 5 // 最大学生数
#define MAX_NAME_LEN 20 // 姓名最大长度
// 学生结构体
typedef struct {
int id; // 学号
char name[MAX_NAME_LEN + 1]; // 姓名
int scores[4]; // 4门课程成绩
} Student;
// 打印学生信息
void print_student(const Student *stu) {
printf("学号:%d 姓名:%s 成绩:", stu->id, stu->name);
for (int i = 0; i < 4; i++) {
printf("%d ", stu->scores[i]);
}
printf("\n");
}
// 输入学生信息
void input_student(Student *stu) {
printf("请输入学号:");
scanf("%d", &stu->id);
printf("请输入姓名:");
scanf("%s", stu->name);
printf("请输入4门课程成绩:\n");
for (int i = 0; i < 4; i++) {
printf("科目%d:", i + 1);
scanf("%d", &stu->scores[i]);
}
}
// 查询学生信息
void query_student(const Student *stu, int num) {
int id;
printf("请输入要查询的学生学号:");
scanf("%d", &id);
for (int i = 0; i < num; i++) {
if (stu[i].id == id) {
print_student(&stu[i]);
return;
}
}
printf("未找到该学生\n");
}
// 统计成绩
void statistics_scores(const Student *stu, int num) {
int sum[4] = {0};
for (int i = 0; i < num; i++) {
for (int j = 0; j < 4; j++) {
sum[j] += stu[i].scores[j];
}
}
printf("4门课程成绩总分:");
for (int i = 0; i < 4; i++) {
printf("%d ", sum[i]);
}
printf("\n");
}
int main() {
Student students[MAX_STUDENT_NUM];
int num = 0;
int choice = 0;
while (1) {
printf("请输入操作选项:\n");
printf("1. 添加学生信息\n");
printf("2. 查询学生信息\n");
printf("3. 统计成绩\n");
printf("4. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
if (num >= MAX_STUDENT_NUM) {
printf("已达到最大学生数,无法添加!\n");
} else {
input_student(&students[num]);
num++;
}
break;
case 2:
query_student(students, num);
break;
case 3:
statistics_scores(students, num);
break;
case 4:
exit(0);
default:
printf("无效的选项!\n");
break;
}
}
return 0;
}
```
阅读全文