实验10 结构体
(1)实验内容:
某班有50个学生,每个学生包含的信息为学号、姓名及语文、数学、英语成绩。
编程要求:
1. 求每个学生的平均成绩
2. 求每门课程的平均成绩
(2)算法说明:定义结构体数组变量student[51]存放个学生学号、姓名及语文、数学、英语成绩,其中student[50]存放全班各科课程总成绩;
通过void xshavg(struct stu student[],int n) //每个学生的平均成绩函数
和
void kchavg(struct stu student[],int n) //每门课程平均成绩函数,主函数中调用实现编程要求中的两个实验目的。
(3)程序源代码清单:
#include <stdio.h>
struct stu
{
char name[10]; //姓名
int no; //学号
int score[3]; //语数英三科成绩
int avg; //每个学生的平均成绩
}student[51];
void xshavg(struct stu student[],int n) //每个学生的平均成绩函数
{
for(int i=0;i<n;i++)
{
student[i].avg=0;
for(int j=0;j<3;j++)
student[i].avg+=student[i].score[j];
student[i].avg/=3;
}
}
void kchavg(struct stu student[],int n) //每门课程平均成绩函数
{
for(int j=0;j<3;j++)
{
for(int i=0;i<n;i++)
student[50].score[j]+=student[i].score[j];
student[50].score[j]/=n;
}
}
void main()
{
int n=50;
printf("请输入 姓名 学号 语文成绩 数学成绩 英语成绩/n");
for(int i=0;i<n;i++)
{
printf("第%d个学生:",i+1);
scanf("%s%d%d%d%d",&student[i].name,&student[i].no,&student[i].score[0],&student[i].score[1],&student[i].score[2]);
}
xshavg(student,n);
kchavg(student,n);
printf("姓名 学号 三科平均成绩/n");
for(i=0;i<n;i++)
{
printf("%s%d%d/n",student[i].name,student[i].no,student[i].avg);
}
printf("语文平均成绩 数学平均成绩 英语平均成绩/n");
printf("%d%d%d/n",student[50].score[0],student[50].score[1],student[50].score[2]);
}
(4)测试数据与实验结果:
数据量太大将50个学生改为2个:
输入:
a 100 50 60 70
b 101 60 70 80
输出:
a 100 60
b 101 70
55 65 75
必要的说明:无
(5)分析与思考
结构体数组相当重要,可以实现多种数据类型的组合以实现现实世界数据处理的需要,对数据结构影响很大;调试过程中数据量太大时,可适当改小以节省时间。