变了一个程序,但是不能达到预期结果!大家帮忙看看!
这个程序,我定义了一个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");
}
大家指点一下!谢了!!








