东风财务有限公司招聘:请大家帮我改下这程序 我有点功能无法实现 谢谢

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/02 07:33:29
从键盘输入5个学生的信息(含学号、姓名、3门课成绩,平均分),打印输出5个学生的全部信息,找出平均分数最高的学生并输出该学生的所有信息。我的程序只是无法实现找出平均分数最高的学生并输出该学生的所有信息,麻烦大家帮一下:
#define N 5
struct student
{
char num[6];
char name[8];
int score[4];
float avr;
}stu[N];
main()
{
int i,j,max,maxi,sum;
float average;
for(i=0;i<N;i++)
{
printf("\nInput scores of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
}
}
average=0;
max =0;
maxi=0;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<N;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3.0;
if(stu[i].avr>max)
{
max=average;
maxi=i;
}
}
average/=N;
printf(" NO. name score1 score2 score3 average\n");
for(i=0;i<N;i++)
{
printf("%2s%5s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%7d",stu[i].score[j]);
printf("%8.2f\n",stu[i].avr);
}
printf("The highest average score is : %s",stu[maxi].name,average);
}


改了一下,看注释吧:
#define N 5
struct student
{
char num[6];
char name[8];
int score[4];
float avr;
}stu[N];
main()
{
int i,j,max,maxi,sum;
float average;
for(i=0;i<N;i++)
{
printf("\nInput scores of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
}
}
average=0;
max =0;
maxi=0;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<N;j++)
{
sum+=stu[i].score[j];
}
stu[i].avr=sum/3.0; /*在后面加上average=stu[i].avr;*/
if(stu[i].avr>max) /*注意这里,你的average为0,那么max也始终为0*/
{
max=average;
maxi=i;
}
}
average/=N; /*把这句去掉,不应该让average=average/N,average并不是总分*/
printf(" NO. name score1 score2 score3 average\n");
for(i=0;i<N;i++)
{
printf("%2s%5s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%7d",stu[i].score[j]);
printf("%8.2f\n",stu[i].avr);
}
printf("The highest average score is : %s",stu[maxi].name,average); /*输出average改为输出max*/
}

最后一句改成
printf("The highest average score is : 、\nname\t%s\nscore\t%f\n",stu[maxi].name,stu[maxi].avr);

你好象写了好多没用的代码啊,我给你写一个吧
#include<stdio.h>
struct student
{
char s_id[10];
char name[50];
int score[3];
float avg;
}stu[5],stus;
//声明一个存信息的数组和一个临时存储的结构体变量
void main()
{
int i,j,count=0;
stus.avg=0;
for(i=0;i<5;i++) //循环输入记录
{
printf("\nInput scores of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].s_id);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
count=count+stu[i].score[j]; //计算总分
}
stu[i].avg=count/3; //计算平均分
if(stu[i].avg>stus.avg)
//如果平均分大于stus的把它整体赋给stus
stus=stu[i];
}
for(i=0;i<N;i++) //循环输出所有记录
{
printf("%2s%5s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%7d",stu[i].score[j]);
printf("%8.2f\n",stu[i].avr);
}
printf("The highest average score is : %s",stus.name); // 我只写了个姓名,剩下的你自己加吧.
}
我没在vc中试,估计没有错误,有的话你自己看看吧

你好象写了好多没用的代码啊,我给你写一个吧
#include<stdio.h>
struct student
{
char s_id[10];
char name[50];
int score[3];
float avg;
}stu[5],stus;
//声明一个存信息的数组和一个临时存储的结构体变量
void main()
{
int i,j,count=0;
stus.avg=0;
for(i=0;i<5;i++) //循环输入记录
{
printf("\nInput scores of student %d:\n",i+1);
printf("NO.:");
scanf("%s",stu[i].s_id);
printf("name:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
count=count+stu[i].score[j]; //计算总分
}
stu[i].avg=count/3; //计算平均分
if(stu[i].avg>stus.avg)
//如果平均分大于stus的把它整体赋给stus
stus=stu[i];
}
for(i=0;i<N;i++) //循环输出所有记录
{
printf("%2s%5s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%7d",stu[i].score[j]);
printf("%8.2f\n",stu[i].avr);
}
printf("The highest average score is : %s",stus.name); // 我只写了个姓名,剩下的你自己加吧.
}
我没在vc中试,估计没有错误,有的话你自己看看吧