#include <iostream>
#include <string>
#include <iomanip>
#define N 3
#define M 5
using namespace std;
struct stu
{string name;
float score[M];
int mingci;
float ave;
}student[N];
float ave[M];
string kemu[M];
void getin() //主录入函数
{
float sum=0;
int i=0,j;
while (i<N)
{cout<<"###################################"<<endl;
cout<< "输入学生的姓名:";
cin>>student[i].name;
cout<<"输入学生的五科成绩:";
for(j=0;j<M;j++)
cin>>student[i].score[j];
i++;
}
}
void getinkm() //录入科目名
{
kemu[0]="电路";
kemu[1]="高数";
kemu[2]="c++";
kemu[3]="线代";
kemu[4]="英语";
}
void serch()//找出最高的分数所对应的学生和课程并输出
{
int j=0,i,k,max;
getinkm();
cout<<endl<<endl<<"各科目最高分:\n";
do
{ for(i=0;i<N-1;i++)
{
max=i;
for(k=i+1;k<N;k++)
if(student[max].score[j]<=student[k].score[j])
max=k;
cout<<setw(8)<<kemu[j]<<setw(8)<<student[max].name<<':'<<student[max].score[j]<<endl;
++j;
}
}while(j<M);
}
int main()
{
getin() ;
serch();
}
**************************************************************
结果如下
###################################
输入学生的姓名:yy
输入学生的五科成绩:99 88 77 66 55
###################################
输入学生的姓名:pp
输入学生的五科成绩:99 98 65 88 55
###################################
输入学生的姓名:uu
输入学生的五科成绩:55 88 77 98 23
各科目最高分:
电路 pp:99
高数 pp:98
c++ uu:77
线代 uu:98
英语 pp:55
uu:0
Press any key to continue
************************************************************
问题
serch();函数运行结果不对,达不到我预定的结果
输出后还多出最后一个结果 uu:0
当最高分成绩相同时也不能全部把他们的名字输出(我选者了输出后面的名字)
有时输出的个别结果甚至根本不是最高分
小弟做了 3天了也没找出毛病
遗憾啊!!
希望高手指点一下,只修改serch();函数,小弟万分感谢!!!!
再谢!!!
再谢!!!!