编写代码,有10个学生,每个学生的数据包括学号,姓名,及三门课成绩,总成绩和平均成绩,从键盘输入10个学生的数据(包括学号,姓名及3门课成绩),要求打印出每位学生的学号,姓名,三门课的成绩,总成绩和平均成绩,最后再打印出3门课的总平均成绩以及最高分的学生的数据(包括姓名和总成绩)。 内容要求利用函数形式完成以下5个内容: (a)根据学生信息定义一个结构体类型,在说明一个该结构体类型的数组; (b)用input函数从键盘上输入10个学生的数据; (c)用average函数求出每个学生总成绩、平均成绩和所有学生的总平均成绩; (d)用maximum函数找出最高分的学生的数据; (e)在主函数中输出每位学生的学号、姓名、三门课的成绩、总成绩和平均成绩以及总平均分和最高分学生的数据。
时间: 2023-12-15 10:22:55 浏览: 86
学生成绩管理系统c语言代码供.doc
5星 · 资源好评率100%
好的,这是一个比较复杂的C语言编程问题。以下是代码示例:
```c
#include <stdio.h>
#include <string.h>
#define N 10 // 学生数量
#define M 3 // 课程数量
// 学生结构体类型
typedef struct {
int id; // 学号
char name[50]; // 姓名
int score[M]; // 三门课成绩
int total_score; // 总成绩
float avg_score; // 平均成绩
} Student;
// 输入函数,用于从键盘输入学生数据
void input(Student stu[]) {
for (int i = 0; i < N; i++) {
printf("请输入第%d个学生的学号、姓名和三门课成绩:\n", i+1);
scanf("%d %s %d %d %d", &stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
}
}
// 计算一个学生的总成绩和平均成绩
void average(Student *stu) {
int sum = 0;
for (int i = 0; i < M; i++) {
sum += stu->score[i];
}
stu->total_score = sum;
stu->avg_score = (float)sum / M;
}
// 计算所有学生的总平均成绩
float total_avg(Student stu[]) {
float sum = 0;
for (int i = 0; i < N; i++) {
sum += stu[i].avg_score;
}
return sum / N;
}
// 找出最高分的学生
void maximum(Student stu[], Student *max_stu) {
int max_score = -1;
for (int i = 0; i < N; i++) {
if (stu[i].total_score > max_score) {
max_score = stu[i].total_score;
memcpy(max_stu, &stu[i], sizeof(Student));
}
}
}
int main() {
Student stu[N];
Student max_stu;
// 输入学生数据
input(stu);
// 计算每个学生的总成绩和平均成绩
for (int i = 0; i < N; i++) {
average(&stu[i]);
}
// 计算所有学生的总平均成绩
float total_avg_score = total_avg(stu);
// 找出最高分的学生
maximum(stu, &max_stu);
// 输出每位学生的学号、姓名、三门课的成绩、总成绩和平均成绩
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n");
for (int i = 0; i < N; i++) {
printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n", stu[i].id, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].total_score, stu[i].avg_score);
}
// 输出所有学生的总平均成绩和最高分学生的数据
printf("所有学生的总平均成绩为:%.2f\n", total_avg_score);
printf("最高分学生的姓名为:%s,总成绩为:%d\n", max_stu.name, max_stu.total_score);
return 0;
}
```
注意,这里假设输入的数据都是合法的,没有做输入验证。如果需要可以在输入时加上验证逻辑。
阅读全文