程序要求是这样的:用结构体存储三个学生的成绩,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,然后按照平均分的降序排列,如下图所示:
请输入第1学生的资料:
学号为:009
姓名是:张三
第1门成绩是:98
第2门成绩是:67
第3门成绩是:87
请输入第2学生的资料:
学号为:005
姓名是:李四
第1门成绩是:92
第2门成绩是:87
第3门成绩是:80
请输入第3学生的资料:
学号为:016
姓名是:王五
第1门成绩是:88
第2门成绩是:90
第3门成绩是:67
学号 姓名 语文 数学 英语 平均分
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
009 张三 98 67 87 84
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
005 李四 92 87 80 86.33
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
016 王五 88 90 67 81.66
就是实现上面的功能,望懂的大虾不吝赐教,不胜感激。
最后还要排序哦,下面的大虾,你好像还没有把平均分排序吧?
排序你可以用最简单的冒泡或者选择排序,以平均分为标准
#include<stdio.h>
typedef struct student
{
int num;
char name[20];
int Score1;
int Score2;
int Score3;
float average;
}student;
student st[3];
void CreateStudent(student st[])
{
int i,j;
float Average;
for(i=0;i<3;i++)
{
printf("请输入学生%d的资料:\n",i+1);
printf("学号为:");
scanf("%d",&st[i].num);
printf("姓名是:");
scanf("%s",&st[i].name);
printf("第1门成绩是:");
scanf("%d",&st[i].Score1);
printf("第2门成绩是:");
scanf("%d",&st[i].Score2);
printf("第3门成绩是:");
scanf("%d",&st[i].Score3);
printf("\n");
st[i].average = (st[i].Score1+st[i].Score2+st[i].Score3)/3;
}
}
void SortStudent(student st[],int nLength)
{
int i, j, max;
student temp;
for(i=0; i<nLength;i++)
{
max = i;
for(j=i+1; j<nLength; j++)
{
if(st[j].average > st[max].average)
max = j;
}
if(max != i)
{
temp = st[i];
st[i] = st[max];
st[max] = temp;
}
}
}
int main()
{
int j;
CreateStudent(st);
SortStudent(st,3);
printf("学号\t姓名\t语文\t数学\t英语\t平均分\n");
for(j=0;j<3;j++)
{
printf("%d",st[j].num);
printf("\t%s",st[j].name);
printf("\t%d",st[j].Score1);
printf("\t%d",st[j].Score2);
printf("\t%d",st[j].Score3);
printf("\t%2f",st[j].average);
printf("\n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");
}
}
#include<stdio.h>
struct student
{
int num;
char name[20];
int Score1;
int Score2;
int Score3;
}student[2];
int main()
{
int i,j;
int Average;
for(i=0;i<3;i++)
{
printf("请输入学生%d的资料:\n",i+1);
printf("学号为:");
scanf("%d",&student[i].num);
printf("姓名是:");
scanf("%s",&student[i].name);
printf("第1门成绩是:");
scanf("%d",&student[i].Score1);
printf("第2门成绩是:");
scanf("%d",&student[i].Score2);
printf("第3门成绩是:");
scanf("%d",&student[i].Score3);
printf("\n\n");
}
printf("学号\t姓名\t语文\t数学\t英语\t平均分\n");
for(j=0;j<3;j++)
{
Average=(student[j].Score1+student[j].Score2+student[j].Score3)/3;
printf("%d",student[j].num);
printf("\t%s",student[j].name);
printf("\t%d",student[j].Score1);
printf("\t%d",student[j].Score2);
printf("\t%d",student[j].Score3);
printf("\t%d",Average);
printf("\n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");
}
}