有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.33Process returned 0 (0x0) execution time : 73.527 s
Press any key to continue.