变了一个程序,但是不能达到预期结果!大家帮忙看看!
这个程序,我定义了一个sort函数,就是求各科成绩的最高分,并输出,但是我总是达不到预期的结果,望大侠帮忙。程序运行没问题!!谢谢了!!程序代码:
#include <stdio.h> #define N 4 #include <conio.h> struct student { long num; char name[20]; char sex; float score[5]; float sum; }stu[N]; /*定义一个结构体数组*/ void sum(struct student []); /*求学生总成绩的函数*/ void sort(struct student []);/*求总分的排名*/ void average(struct student []);/*求各科平均分的函数*/ void search(struct student [] );/*求出有不及格的学生成绩*/ void highest(struct student []);/*求各科最高分的函数*/ void asearch(struct student []);/*查询成绩*/ int main(void) { int i=0,j=0; float f; f = 0.0; for(i=0;i<N;i++) { printf("input ----num----name----sex\n"); scanf("%ld,%s,%c",&stu[i].num,stu[i].name,&stu[i].sex); /*输入学生数据*/ printf("input score1----score2----score3----score4----score5\n"); for(j=0;j<5;j++) { scanf("%3f", &f); stu[i].score[j] = f; } } printf("output----num----name----sex"); for(i=0;i<N;i++) { printf("%ld,%s,%c",stu[i].num,stu[i].name,stu[i].sex); /*输出学生数据*/ printf("output score1----score2----score3----score4----score5\n"); for(j=0;j<5;j++) printf("%10f ",stu[i].score[j]); printf("\n"); } sum( stu ); sort(stu); average( stu ); /*函数调用*/ search( stu ); highest(stu); asearch(stu); getch(); return 0; } void sum( struct student stu[]) /*定义求总分的函数*/ { float sum=0.0,saverage=0.0; /*saverage为每个学生的平均分*/ int i,j; for(i=0;i<N;i++) { printf("No. %d ",stu[i].num); sum = 0.0; for(j=0;j<5;j++) sum+=stu[i].score[j]; saverage=sum/5; printf("%5f,%5f\n",sum,saverage); printf("\n"); } } void sort (struct student stu[]) /**/ { int i,j,t; for(i=0;i<N;i++) { for(j=0;j<5;j++) stu[i].sum+=stu[i].score[j]; } for(i=0;i<N-1;i++) { for(j=i+1;j<N;j++) if(stu[i].sum<stu[j].sum) { t=stu[i].sum; stu[i].sum=stu[j].sum; stu[j].sum=t; } } for(i=0;i<N;i++) printf("No.%ld,%3f\n",stu[i].num,stu[i].sum); } void average(struct student stu[ ]) /*定义求各科成绩平均分的函数*/ { float sum=0.0,average=0.0; int i,j; for(j=0;j<5;j++) { printf("the average of %d score:", j+1); sum = 0.0; for(i=0;i<N;i++) sum+=stu[i].score[j]; average=sum/N; printf("%f\n",average); } } void search(struct student stu[]) /*定义求出不及格学生的成绩的函数*/ { int m=0; int i,j; for(i=0;i<N;i++) { m=0; for(j=0;j<5;j++) { if(stu[i].score[j]<60) m++; } if(m) { printf("%ld,%s,%c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%3f ",stu[i].score[j]); /*输出不及格学生的成绩*/ } printf("\n"); } } void highest(struct student stu[]) /*定义求出各科成绩的最高分函数*/ { int i,j,k; float high; for(j=0;j<5;j++) { for(i=0;i<N-1;i++) for(k=i+1;k<N;k++) if(stu[i].score[j]<stu[k].score[j]); { high=stu[i].score[j]; stu[i].score[j]=stu[k].score[j]; stu[k].score[j]=high; printf("The highest score of %d is %f\n",j+1,stu[i].score[j]); } } printf("\n"); } void asearch( struct student stu[]) /*定义查询成绩的函数*/ { long num; int i,j; printf("please input the num:"); scanf("%ld",&num); for(i=0;i<N;i++) if( stu[i].num==num) { printf("%ld,%s,%c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%6f",stu[i].score[j]); } printf("\n"); }大家指点一下!谢了!!