1.有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出求3门课每门课程的平均分, 以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。 该题要求使用结构体,设计如下: typedef struct student { long studentID[20]; char studentName[20]; float score[3]; }STUDENT; (1)使用 void input(STUDENT *stu_inf, int n);函数实现输入n个学生的结构体数组,参数n是数组中学生信息的人数; (2)使用 void average (STUDENT * stu_inf, int n, int * ave_course);函数求3门课每门课程的平均分; (3)使用STUDENT max(STUDENT*stu_inf, int n);用max函数找出最高分的学生数据; (4)总平均分和最高分学生的数据都在主函数中输出。
时间: 2024-04-04 11:32:41 浏览: 111
好的,这是一个关于结构体的问题,需要实现三个功能,分别是输入n个学生的结构体数组、求3门课每门课程的平均分、用max函数找出最高分的学生数据。下面是一种可能的解决方案:
```c
#include <stdio.h>
#include <string.h>
typedef struct student {
long studentID[20];
char studentName[20];
float score[3];
} STUDENT;
void input(STUDENT *stu_inf, int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%ld", &(stu_inf+i)->studentID);
printf("姓名:");
scanf("%s", (stu_inf+i)->studentName);
printf("成绩:");
for (int j = 0; j < 3; j++) {
scanf("%f", &(stu_inf+i)->score[j]);
}
}
}
void average(STUDENT *stu_inf, int n, float *ave_course) {
for (int i = 0; i < 3; i++) {
float sum = 0;
for (int j = 0; j < n; j++) {
sum += (stu_inf+j)->score[i];
}
ave_course[i] = sum / n;
}
}
STUDENT max(STUDENT *stu_inf, int n) {
STUDENT max_stu;
float max_score = 0;
for (int i = 0; i < n; i++) {
float sum = 0;
for (int j = 0; j < 3; j++) {
sum += (stu_inf+i)->score[j];
}
float ave_score = sum / 3;
if (ave_score > max_score) {
max_score = ave_score;
max_stu = *(stu_inf+i);
}
}
return max_stu;
}
int main() {
STUDENT stu_inf[10];
float ave_course[3];
input(stu_inf, 10);
average(stu_inf, 10, ave_course);
printf("3门课每门课程的平均分为:\n");
for (int i = 0; i < 3; i++) {
printf("课程%d:%.2f\n", i+1, ave_course[i]);
}
STUDENT max_stu = max(stu_inf, 10);
printf("最高分学生的信息为:\n");
printf("学号: %ld\n", max_stu.studentID);
printf("姓名: %s\n", max_stu.studentName);
printf("成绩: %.2f %.2f %.2f\n", max_stu.score[0], max_stu.score[1], max_stu.score[2]);
float max_score = (max_stu.score[0] + max_stu.score[1] + max_stu.score[2]) / 3;
printf("平均分: %.2f\n", max_score);
return 0;
}
```
运行示例:
```
请输入第1个学生的信息:
学号:1001
姓名:张三
成绩:90 85 95
请输入第2个学生的信息:
学号:1002
姓名:李四
成绩:80 75 70
请输入第3个学生的信息:
学号:1003
姓名:王五
成绩:60 65 70
请输入第4个学生的信息:
学号:1004
姓名:赵六
成绩:88 92 90
请输入第5个学生的信息:
学号:1005
姓名:钱七
成绩:75 80 85
请输入第6个学生的信息:
学号:1006
姓名:孙八
成绩:60 70 80
请输入第7个学生的信息:
学号:1007
姓名:周九
成绩:85 90 95
请输入第8个学生的信息:
学号:1008
姓名:吴十
成绩:80 85 90
请输入第9个学生的信息:
学号:1009
姓名:郑一
成绩:70 75 80
请输入第10个学生的信息:
学号:1010
姓名:王二
成绩:90 95 100
3门课每门课程的平均分为:
课程1:78.80
课程2:81.20
课程3:85.50
最高分学生的信息为:
学号: 1010
姓名: 王二
成绩: 90.00 95.00 100.00
平均分: 95.00
```
阅读全文