急!C语言学生成绩管理问题
有10个学生3门课程
(1) 输出每个学生的总成绩及平均成绩
(2) 根据每个学生的总成绩进行排序
(3) 找出有两门课程不及格学生的姓名和学号
(要求:每个学生的数据包括学号、姓名和各科成绩,从键盘输入10个学生的数据;根据总成绩进行排序时用选择排序或冒泡排序。)
参考答案:struct student
{
int id;
char name[20];
int class1,class2,class3;
int av,to; //av为平均成绩,to为总成绩
}
struct student stu1[20];
main()
{
int i,j,k;
for(i=0;i<10;i++)
{
scanf("%d",&stu1[i].id);
scanf("%s",stu1[i].name);
scanf("%d",&stu1[i].class1);
scanf("%d",&stu1[i].class2);
scanf("%d",&stu1[i].class3);
stu[i].to=stu[i].class1+stu[i].class2+stu[i].class3;
stu1[i].av=stu[i].to/3;
}
for(i=1;i<10;1++)
for(j=0;j<9-i;j++)
{
if stu1[j].to<stu1[j+1].to
{
k=stu1[j+1].to;
stu1[j+1].to=stu1[j].to;
stu1[j].to=k;
}
} //排序
for(i=0;i<10;i++)
{
if (stu1[i].class1<60&&stu1[i].class2<60||stu1[i].class1<60&&stu1[i].class3<60||stu1[i].class2<60&&stu1[i].class3<60)
printf("%d %s\n",&stu1[i].id,stu1[i].name);
}
}