用结构体存储三个学生的成绩,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成,绩),计算出平均成绩,然后按照平均分的降序排列。输出界面如图/5-2所示。具体要求为:
(1)定义结构体类型:typedef structint num;char name[20];int Score/,Score2,Score3;float average;}student;(2)函数void sort(student st[]): 按照平均分的降序排列;(3)主函数:定义3个元素的结构体数组st,按5-2界面输入输出三个学生的信息,并计算出平均成绩;调用函数sort对st三个元素按照平均分的降序排列;输出排序
代码如下:
#include<stdio.h>
struct student
{
int num;
char name[20];
double Score1,Score2,Score3;
double aver;
};
void sort(struct student stu[]);
int main()
{
int i;
struct student stu[3];
for(i=0;i<3;i++)
{
printf(“请输入学生%d的资料\n”,i+1);
printf(“学号为:”);
scanf("%d",&stu[i].num);
printf(“姓名为:”);
scanf("%s",stu[i].name);
printf(“第一门成绩是:”);
scanf("%lf",&stu[i].Score1);
printf(“第二门成绩是:”);
scanf("%lf",&stu[i].Score2);
printf(“第三门成绩是:”);
scanf("%lf",&stu[i].Score3);
stu[i].aver=1.0/3*(stu[i].Score1+stu[i].Score2+stu[i].Score3);
}
printf(“学号\t姓名\t语文\t数学\t英语\t平均分 \n”);
sort(stu);
return 0;
}
void sort(struct student stu[])
{
int i,j;
struct student temp;
for(i=1;i<=3;i++)
for(j=0;j<3;j++)
{
if(stu[j].aver<stu[j+1].aver)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
for(i=0;i<3;i++)
printf("%d\t%s\t%f\t%f\t%f\t%f \n",stu[i].num,stu[i].name,stu[i].Score1,stu[i].Score2,stu[i].Score3,stu[i].aver);
}
结果:
2020-06-02
最新推荐文章于 2024-06-18 15:23:09 发布