#include<stdio.h>
#define N
80
#define M
10
struct student
{
int num;
float score[5];
float aver;
float sum;
};
//输入成绩
void input(struct student stu[])
{
int i;
printf("输入:学号 成绩:\n 号
a
b
c
d
e\n");
for(i=0;i<N;i++)
{
scanf("%d%f%f%f%f%f",&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3],&stu[i].score[4]);
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]+stu[i].score[4];
stu[i].aver=stu[i].sum/5.0;
}
}
//按总分高到低排列
struct student *cont(struct student stu[])
{
struct student sty;
int i,j;
for(j=0;j<N-1;j++)
//冒泡法排序
for(i=0;i<N-1-j;i++)
if(stu[i].sum<stu[i+1].sum)
{ sty=stu[i];
stu[i]=stu[i+1];
stu[i+1]=sty;
}
return (stu);
}
//打印
void print1(struct student stu[])
{
int i;
for(i=0;i<N;i++)
printf("学号:%d
a: %.1f
b: %.1f
c: %.1f
d: %.1f
e: %.1f
总分:%.1f
平均:%.1f\n",stu[i].num,stu[i].score[0],
stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].sum,stu[i].aver);
}
//指定某门课程 分析
void serch1(struct student stu[])
{
int i,m;
char h;
printf("请输入要查85分以上的科目(a b c d e)\n");
getchar();
//清除缓存
scanf("%c",&h);
printf("您查的是 %c 课成绩.\n",h);
switch(h)
{
case 'a': m=0; break;
case 'b': m=1; break;
case 'c': m=2; break;
case 'd': m=3; break;
case 'e': m=4; break;
default: printf("输入错误\n");break;
}
for(i=0;i<=M;i++)
if(stu[i].score[m]>=85)
printf("学号:%d
a: %.1f
b: %.1f
c: %.1f
d: %.1f
e: %.1f
总分:%.1f
平均成绩:%.1f\n",stu[i].num,stu[i].score[0],
stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].sum,stu[i].aver);
}
//六十分以下的 分析
void serch2(struct student stu[])
{
int i,j,k=1;
printf("分数少于60而不及格的有:\n");
for(i=0,k=1;i<N;i++)
for(j=0;j<5,k==1;j++)
{
if(stu[i].score[j]>60) continue;
{printf("学号:%d
a: %.1f
b: %.1f
c: %.1f
d: %.1f
e: %.1f
总分:%.1f
平均:%.1f\n",stu[i].num,stu[i].score[0],
stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].sum,stu[i].aver);
k=0;}
}
}
main()
{
struct student *p ,*q,stu[N];
p=stu;
input(p);
q=cont(p);
//print1(q);
//serch1(q);
serch2(q);
}
这个我写的,好像不太好,大家看看;