有10个学生,每个学生的数据包括学号,姓名,及三门课成绩,总成绩和平均成绩,从键盘
这个代码是我之前写的,绝对符合要求,甚至能自定义学生数量,并按平均分从大到小排名
#include<stdio.h>
#include<windows.h>
int main()
{
system("cls");
//声明变量及要求用户输入学生数量
int a;
struct student
{
char e[20];//姓名
int b;//三科成绩
int c;
int d;
double g;//平均分
}f[101];
scanf("%d",&a);//输入学生数量
system("cls");
for(int i=0;i<a;i++)//进入循环 循环次数为学生数量
{
scanf("%s %2d %2d %2d",&f[i].e,&f[i].b,&f[i].c,&f[i].d);//输入学生姓名及成绩
f[i].g=(f[i].b+f[i].c+f[i].d)/3;//求出学生成绩的平均分
}
//根据成绩平均值从大到小排序
for(int j=a-1;j>0;j--)
{
for(int i=0;i<j;i++)
{
if(f[i].g<f[i+1].g)//如果前一个学生平均分比后一个低,则交换两名学生的位置,让高的靠前
{
auto t=f[i];
f[i]=f[i+1];
f[i+1]=t;
}
}
}
system("cls");
printf("********************成绩表****************** ");
printf(" 姓名 数学 语文 英语 平均分 总分 排名 ");
//按照排序后的数组,顺序输出
for(int i=0;i<a;i++)
{
printf("%10s %2d %2d %2d %3d %2.1f %d ",f[i].e,f[i].b,f[i].c,f[i].d,(f[i].b+f[i].c+f[i].d),f[i].g,i+1);//分别输出 名字、三科成绩、平均分、排名
}
}
上一篇:郑州市工程创优有什么奖