有10个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入10个学生数据,要求输出3门课成绩和平均成绩,以及平均成绩最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。
要求:
(1)定义一个结构体类型Student,描述学生的信息。
(2)定义一个void input(struct Student *p,int n)函数,输入n个学生的数据,存放到结构体指针变量p所指向的结构体数组中,n表示学生人数。
(3)定义一个float average(struct Student *p,int n)函数,求总平均分,返回该总平均分。其中,p指向有n个学生数据的结构体数组,n表示学生人数。
(4)定义一个void max(struct Student *p,int n)函数,在指针变量p指向的结构体数组中找出平均成绩最高分的学生数据,并输出该学生的各项数据,n表示学生人数。
(5)定义一个void print(struct Student *p,int n)函数,输出指针变量p指向的结构体数组的全部数组元素的各项成员的值,n表示学生人数。
(6)定义main()函数,定义结构体数组stud[10],分别调用input函数、average函数、print函数、max函数。
代码:
#include <stdio.h>
struct Student {
char num[10];
char name[20];
float score[3];
float average;
};
void input(struct Student *p, int n) {
int i, j;
for (i = 0; i < n; i++) {
printf("\n输入学生%d的数据:\n", i + 1);
printf("学号(最多9个字符):");
scanf("%s", p->num);
printf("姓名(最多19个字符):");
scanf("%s", p->name);
for (j = 0; j < 3; j++) {
printf("成绩%d:", j + 1);
scanf("%f", &(p->score[j]));
}
p->average = 0;
for (j = 0; j < 3; j++) {
p->average += p->score[j];
}
p->average /= 3;
p++;
}
}
float average(struct Student *p, int n) {
float sum = 0;
int i;
for (i = 0; i < n; i++) {
sum += p->average;
p++;
}
return sum / n;
}
void max(struct Student *p, int n) {
struct Student *p1;
int i, maxi = 0;
float max_avg = p->average;
for (i = 1; i < n; i++) {
p++;
if (p->average > max_avg) {
max_avg = p->average;
maxi = i;
}
}
p1 = p - n + maxi;
printf("\n平均成绩最高分的学生:\n");
printf("学号:%s\n", p1->num);
printf("姓名:%s\n", p1->name);
for (i = 0; i < 3; i++) {
printf("成绩%d:%6.2f\n", i + 1, p1->score[i]);
}
printf("平均成绩:%6.2f\n", p1->average);
}
void print(struct Student *p, int n) {
int i, j;
printf("\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for (i = 0; i < n; i++) {
printf("%s\t%s\t", p->num, p->name);
for (j = 0; j < 3; j++) {
printf("%6.2f\t", p->score[j]);
}
printf("%6.2f\n", p->average);
p++;
}
}
int main() {
struct Student stud[10];
input(stud, 10);
print(stud, 10);
printf("总平均分:%6.2f\n", average(stud, 10));
max(stud, 10);
return 0;
}
结果:
输入学生1的数据:
学号(最多9个字符):01
姓名(最多19个字符):a1
成绩1:77
成绩2:65
成绩3:15
输入学生2的数据:
学号(最多9个字符):02
姓名(最多19个字符):a2
成绩1:86
成绩2:48
成绩3:35
输入学生3的数据:
学号(最多9个字符):03
姓名(最多19个字符):a3
成绩1:87
成绩2:94
成绩3:75
输入学生4的数据:
学号(最多9个字符):04
姓名(最多19个字符):a4
成绩1:68
成绩2:95
成绩3:73
输入学生5的数据:
学号(最多9个字符):05
姓名(最多19个字符):a5
成绩1:63
成绩2:52
成绩3:41
输入学生6的数据:
学号(最多9个字符):06
姓名(最多19个字符):a6
成绩1:46
成绩2:13
成绩3:79
输入学生7的数据:
学号(最多9个字符):07
姓名(最多19个字符):a7
成绩1:78
成绩2:91
成绩3:37
输入学生8的数据:
学号(最多9个字符):08
姓名(最多19个字符):a8
成绩1:87
成绩2:96
成绩3:18
输入学生9的数据:
学号(最多9个字符):09
姓名(最多19个字符):a9
成绩1:98
成绩2:39
成绩3:76
输入学生10的数据:
学号(最多9个字符):10
姓名(最多19个字符):a10
成绩1:55
成绩2:66
成绩3:44
学号 姓名 成绩1 成绩2 成绩3 平均成绩
01 a1 77.00 65.00 15.00 52.33
02 a2 86.00 48.00 35.00 56.33
03 a3 87.00 94.00 75.00 85.33
04 a4 68.00 95.00 73.00 78.67
05 a5 63.00 52.00 41.00 52.00
06 a6 46.00 13.00 79.00 46.00
07 a7 78.00 91.00 37.00 68.67
08 a8 87.00 96.00 18.00 67.00
09 a9 98.00 39.00 76.00 71.00
10 a10 55.00 66.00 44.00 55.00
总平均分: 63.23
平均成绩最高分的学生:
学号:02
姓名:a2
成绩1: 86.00
成绩2: 48.00
成绩3: 35.00
平均成绩: 56.33
Process returned 0 (0x0) execution time : 73.527 s
Press any key to continue.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异