定义结构数组,输入以下学生信息表,计算出每个学生的平均成绩,并按降序排列输出。
学号 | 姓名 | 语文 | 数学 | 计算机 | 平均分 |
010 | 张三 | 60 | 82 | 72 | |
102 | 李四 | 90 | 82 | 65 | |
030 | 王五 | 86 | 78 | 90 |
#include<stdio.h>
#define N 3
struct Stu
{
char num[4];
char name[10];
int score[3];
double avg;
};
void input(struct Stu s[],int n);
void sort(struct Stu s[],int n);
void output(struct Stu s[],int n);
int main()
{
struct Stu s[N];
input(s,N);
sort(s,N);
output(s,N);
return 0;
}
void input(struct Stu s[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("请输入第%d个学生成绩:\n",i+1);
printf("学号:");
gets(s[i].num);
printf("姓名:");
gets(s[i].name);
printf("数学 语文 计算机:");
scanf("%d%d%d",&s[i].score[0],&s[i].score[1],&s[i].score[2]);
s[i].avg=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;
getchar();
}
}
void output(struct Stu s[],int n)
{
int i;
printf("学号\t姓名\t语文\t数学\t计算机\t平均分\n");
for(i=0;i<n;i++)
printf("%s\t%s\t%d\t%d\t%d\t%.2f\n",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].avg);
}
void sort(struct Stu s[],int n)
{
int i,j;
struct Stu t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(s[j].avg<s[j+1].avg)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
}