使用结构体数组统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出
《程序设计基础-c语言》杨莉 刘鸿翔
ISBN-978-7-03-032903-5
p165
习题6
3.输入10个学生的信息(包括学号、姓名、性别、年龄、成绩)组成结构体数组,分别统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出
思路:
- 使用两个结构体
stuinf
、cnt1
分别存储学生信息和统计信息 - 使用
for循环
计算平均年龄和平均成绩 并用
for循环
嵌套if判断
高于平均成绩的学生,并输出信息include
define MAX 10
struct count
{int mcnt; /*女生人数*/
int fcnt; /*男生人数*/
int ysum; /*年龄总和*/
int ssum; /*成绩总和*/
float yaver; /*年龄平均*/
float saver; /*成绩平均*/
}cnt1;
struct stuinf
{int xuehao; /*学号*/
char name[20]; /*姓名*/
char sex; /*性别*/
int year; /*年龄*/
float score; /*成绩*/
}stu[MAX];
int main(void)
{int i;
/*接受10位学生信息输入*/
printf("输入%d的学生信息:\n",MAX);
for(i=0;i<MAX;i++)
{
scanf("%d %s %c %d %f",&stu[i].xuehao,stu[i].name,&stu[i].sex,&stu[i].year,&stu[i].score);
}
/*判断*/
for(i=0;i<MAX;i++)
{
if(stu[i].sex=='f'||stu[i].sex=='F') /*'f'||'F',男生人数+1*/
{
cnt1.fcnt++;
}
else if(stu[i].sex=='m'||stu[i].sex=='M') /*'m'||'M',女生人数+1*/
{
cnt1.mcnt++;
}
cnt1.ysum+=stu[i].year; /*求年龄总和*/
cnt1.ssum+=stu[i].score; /*求成绩总和*/
}
cnt1.yaver=cnt1.ysum/MAX; /*计算年龄平均*/
cnt1.saver=cnt1.ssum/MAX; /*计算成绩平均*/
/*输出平均年龄、平均成绩*/
printf("\n男生:%4d 女生:%4d 平均年龄:%4.f 平均成绩:%4.2f\n",cnt1.fcnt,cnt1.mcnt,cnt1.yaver,cnt1.saver);
printf("\n输出大于平均成绩的学生信息:\n");
for(i=0;i<MAX;i++)
{
if(stu[i].score>cnt1.saver) /*大于平均成绩,即输出学生信息*/
{
printf("\n%d %s %c %d %.2f\n",stu[i].xuehao,stu[i].name,stu[i].sex,stu[i].year,stu[i].score);
}
}
}
还没有评论,来说两句吧...