使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上 将学生中不及格学生的姓名显示出来 写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数
#include<stdio.h>
#define N 3
struct student
{
char sno[20];
char name[20];
int score[20];
double avg;
}s[N];
void input()
{
int i,j;
for(i=0;i<N;i++)
{
printf("输入学号:");
scanf("%s",s[i].sno);
printf("输入姓名:");
scanf("%s",s[i].name);
printf("输入功课成绩:");
scanf("%d",s[i].score);
printf("\n");
}
}
int sortl(int n)
{ int i,j;
double sum=0;
n=0;
for(i=0;i<N;i++)//求平均分
{
sum=sum+s[i].score[i];
s[i].avg=sum/N;}
for(i=0;i<N;i++)//排序(依据平均分)
if(s[i].avg<s[i+1].avg)
{struct student t;
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
}
printf("不及格:\n");//找不合格
for(i=0;i<N;i++)
if(s[i].score[i]<60)
{
n=n+1;
printf("%s\t",s[i].name);
printf("\n");
break;
}
return n;//返回不及格的人的个数
}
void output()
{
int i,j;
printf("排序后(升序):\n");
printf("学号\t 姓名\t 成绩组成 平均\n");
for(i=0;i<N;i++)
{
printf("%s\t%s\t%d\t",s[i].sno,s[i].name,s[i].score[i]);
printf("%.2lf",s[i].avg);
printf("\n");
}
}
int main()
{
int m,k;
input();
k=sortl(m);
output();
printf("不及格人数%d\n",k);
return 0;
}
我写的有好多问题,帮忙修改也行,最好能整理一下发代码