定义学生结构体包含基学生姓名、学号、班级,至少含三个科目成绩,再定义一个结构体数组保存5个学生信息,使用指针统计5个学生每门课的总成绩和平均成绩并打印输出。
时间: 2024-09-10 09:20:47 浏览: 80
在C语言中,可以通过定义一个结构体来表示学生的相关信息,包括姓名、学号、班级以及至少三门科目的成绩。然后,可以创建一个结构体数组来保存多个学生的信息。接下来,可以使用指针遍历这个数组,对每个学生的科目成绩进行累加,并计算总成绩和平均成绩。最后,打印出每个学生的总成绩和平均成绩。
下面是C语言实现的示例代码:
```c
#include <stdio.h>
// 定义学生结构体
typedef struct {
char name[50];
char studentID[20];
char class[20];
int scores[3]; // 假设有三个科目成绩
} Student;
int main() {
// 定义结构体数组保存5个学生信息
Student students[5] = {
{"张三", "001", "一班", {80, 90, 70}},
{"李四", "002", "一班", {85, 78, 92}},
{"王五", "003", "二班", {76, 88, 65}},
{"赵六", "004", "二班", {83, 91, 78}},
{"孙七", "005", "三班", {88, 94, 89}}
};
int totalScores[3] = {0}; // 用于存储每门课的总成绩
float averageScores[3]; // 用于存储每门课的平均成绩
int i, j;
// 使用指针遍历学生数组
for (i = 0; i < 5; ++i) {
for (j = 0; j < 3; ++j) {
totalScores[j] += students[i].scores[j]; // 累加每门课的成绩
}
}
// 计算每门课的平均成绩
for (j = 0; j < 3; ++j) {
averageScores[j] = totalScores[j] / 5.0; // 总成绩除以学生数
}
// 打印每个学生的总成绩和平均成绩
for (i = 0; i < 5; ++i) {
int sum = 0;
printf("学生:%s, 学号:%s, 班级:%s\n", students[i].name, students[i].studentID, students[i].class);
printf("总成绩:%d, 平均成绩:", sum);
for (j = 0; j < 3; ++j) {
sum += students[i].scores[j];
printf("%d ", students[i].scores[j]);
}
printf("(%.2f)\n", sum / 3.0);
}
// 打印每门课的总成绩和平均成绩
printf("每门课的总成绩和平均成绩:\n");
for (j = 0; j < 3; ++j) {
printf("科目%d 总成绩:%d, 平均成绩:%.2f\n", j + 1, totalScores[j], averageScores[j]);
}
return 0;
}
```
这段代码定义了一个`Student`结构体,包含学生姓名、学号、班级和三门科目的成绩。然后创建了一个包含5个学生信息的数组。通过两层循环,先累加每个学生的科目成绩,然后计算每个科目的平均成绩。最后,打印出每个学生的总成绩和平均成绩,以及每门课程的总成绩和平均成绩。
阅读全文