一个班有 N个同学, 修 5 门课从键盘输入他们的性名、 学号、 性别和成绩。
1 )按平均成绩从高到底打印全班的成绩单。
2 )求第三门课的平均分
3 )找出平均分在 90 以上或全部功课在 85以上的女生。
要求:输入、输出、计算、排序和查找分别用函数实现,主函数只是调用这些函数。不得使用全局变量。
#include <stdio.h>
#define N 5
struct Student
{
char name[20];
int number;
int sex;
float score[5];
float aver;
};
void Input(struct Student *stu);
void Average(struct Student *stu,float *aver);
void Sort(struct Student *stu);
void Search(struct Student *stu,float score);
main()
{
struct Student stu[N];
float score=85.0;
float aver3;
Input(stu);
Sort(stu);
Average(stu,&aver3);
printf("average3 is %.2f\n",aver3);
Search(stu,score);
}
void Input(struct Student *stu)
{
int i,j;
float aver=0;
for(i=0;i<N;i++) {
aver=0;
printf("please enter name:");
gets(stu[i].name);
printf("please enter number sex:");
scanf("%d%d",&stu[i].number,&stu[i].sex);
printf("please enter score(5):");
for(j=0;j<5;j++) {
scanf("%f",&stu[i].score[j]);
aver +=stu[i].score[j];
}
stu[i].aver = aver/5;
getchar();
}
}
void Sort(struct Student *stu)
{
int i,j;
struct Student temp;
for(i=0;i<N-1;i++){
for(j=i+1;j<N;j++){
if(stu[i].aver<stu[j].aver){
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
printf("Name Numb Sex score(5) aver\n");
for(i=0;i<N;i++){
printf("%8s %d %d %.2f %.2f %.2f %.2f %.2f %.2f\n",stu[i].name,stu[i].number,stu[i].sex,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].aver);
}
}
void Average(struct Student *stu,float *average3){
float sum3=0;
int i;
for(i=0;i<N;i++)
sum3 += stu[i].score[2];
*average3=sum3/N;
}
void Search(struct Student *stu,float score){
int i,j;
int flag =1;
printf("\naver>90 score>85\n");
printf("Name Numb Sex score(5) aver\n");
for(i=0;i<N;i++){
for(j=0;j<5;j++)
flag = flag&&(stu[i].score[j]>score);
if(stu[i].aver>90.0&&flag) {
printf("%8s %d %d
%.2f %.2f %.2f %.2f %.2f %.2f\n",stu[i].name,stu[i].number,stu[i].sex,stu[i].score[0],
stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].aver);
}
}
printf("\n\n");
}