请编写程序,定义用于存储学生信息的结构体数组,输入学生的准考证号、姓名和各科成绩信息,计算每位学生的总分。
时间: 2023-09-24 18:02:24 浏览: 36
下面是一个样例程序,可以实现你的需求:
```c
#include <stdio.h>
#define MAX_NUM 1000
#define SUBJECT_NUM 3
typedef struct student {
char id[20];
char name[20];
int score[SUBJECT_NUM];
int total_score;
} Student;
int main() {
int n;
Student students[MAX_NUM];
// 输入学生数量
printf("请输入学生数量:");
scanf("%d", &n);
// 输入每个学生的信息
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的准考证号、姓名和 %d 门科目的成绩:", i + 1, SUBJECT_NUM);
scanf("%s%s", students[i].id, students[i].name);
for (int j = 0; j < SUBJECT_NUM; j++) {
scanf("%d", &students[i].score[j]);
students[i].total_score += students[i].score[j];
}
}
// 打印每个学生的总分
for (int i = 0; i < n; i++) {
printf("%s %s的总分是%d\n", students[i].id, students[i].name, students[i].total_score);
}
return 0;
}
```
这个程序中,我们定义了一个 `Student` 结构体,包含了准考证号、姓名、各科成绩和总分等信息。我们使用结构体数组 `students` 来存储所有学生的信息,其中 `MAX_NUM` 定义了学生数量的最大值,`SUBJECT_NUM` 定义了每个学生的科目数量。
程序首先会要求用户输入学生数量 `n`,然后使用 `for` 循环依次输入每个学生的信息。在这个循环中,我们先通过 `scanf` 函数输入学生的准考证号和姓名,再使用另一个 `for` 循环输入每个学生的各科成绩,并计算这个学生的总分。
最后,程序使用一个 `for` 循环打印每个学生的总分。
注意:这个程序中没有对输入的数据进行错误处理,例如输入的成绩可能会超出范围,输入的准考证号和姓名可能会超过数组的长度等等。在实际应用中,你需要对这些问题进行处理。