3.编写一个程序,实现从键盘输入3个学生数据(每个学生的数据包括学号、姓名、2门课程成绩的),输出每个学生2门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、2门课的成绩、平均分数)。用三个函数
时间: 2023-12-15 17:00:53 浏览: 102
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
以下是实现该程序的三个函数:
```c
#include <stdio.h>
typedef struct {
char id[10];
char name[20];
float score1;
float score2;
float average;
} Student;
void input(Student *s);
void calc_average(Student *s);
void output(Student *s[], int n);
int main() {
int n = 3;
Student students[n];
Student *p[n];
for (int i = 0; i < n; i++) {
p[i] = &students[i];
input(p[i]);
calc_average(p[i]);
}
output(p, n);
return 0;
}
void input(Student *s) {
printf("请输入学生信息(学号、姓名、两门课程成绩):\n");
scanf("%s%s%f%f", s->id, s->name, &s->score1, &s->score2);
}
void calc_average(Student *s) {
s->average = (s->score1 + s->score2) / 2;
}
void output(Student *s[], int n) {
float max_average = 0;
int max_index = 0;
printf("各学生的信息和平均成绩如下:\n");
for (int i = 0; i < n; i++) {
printf("学号:%s,姓名:%s,成绩1:%.2f,成绩2:%.2f,平均成绩:%.2f\n",
s[i]->id, s[i]->name, s[i]->score1, s[i]->score2, s[i]->average);
if (s[i]->average > max_average) {
max_average = s[i]->average;
max_index = i;
}
}
printf("平均成绩最高的学生信息如下:\n");
printf("学号:%s,姓名:%s,成绩1:%.2f,成绩2:%.2f,平均成绩:%.2f\n",
s[max_index]->id, s[max_index]->name, s[max_index]->score1,
s[max_index]->score2, s[max_index]->average);
}
```
程序中用结构体 `Student` 来存储每个学生的信息,包括学号、姓名、两门课程成绩和平均成绩。在 `main` 函数中先定义一个 `Student` 数组,再定义一个指针数组,将每个学生的地址存储在指针数组中。然后分别调用 `input` 函数、 `calc_average` 函数和 `output` 函数来输入学生信息、计算平均成绩和输出结果。其中 `output` 函数还要遍历一遍指针数组,找出平均成绩最高的学生信息。
阅读全文