回复 3楼 beyondyf
其实上次发错了, 这不是原来的C++程序 。我自己改了很长时间,然后给改砸了……万般无奈之下想到了求助,就稀里糊涂的发上来了。这是原先的程序,求大佬不吝赐教,给修改一下,感激万分,真的谢谢啦!
综合练习题:
给定一个班的学生(假定30人)学号(number)、姓名(name)、成绩(score),存入数组(stud)。
⑴ 根据学生学号进行排序;
⑵ 键盘输入一个学生名字,进行查找。若找到,将其学号、姓名、成绩输出。若没找到,输出“查无此人”;
⑶ 求平均成绩,并将全班高于平均成绩的成员输出(学号、姓名、成绩)。
⑷ 要求前三项,都是用函数实现。
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int const N=3;
void main()
{
void sort(int *,string[],int*);
void find(string,int *,string [],int*);
void average(int *,string [],int *);
int i;
int num[N],score[N];
string name[N],somebody;
cout<<"Please input data:"<<endl;
for(i=0;i<N;i++) //输入N个数据
{
cin>>num[i];
cin>>name[i];
cin>>score[i];
}
sort(num,name,score);
for(i=0;i<N;i++)
{
cout<<num[i]<<setw(7);
cout<<name[i]<<setw(7);
cout<<score[i]<<endl;
}
cout<<"Please input a name:"<<endl;
cin>>somebody;
find(somebody,num,name,score);
average(num,name,score);
}
void sort(int *nu,string na[],int *sc )//排序
{
int i,j,num_temp,score_temp;
string name_temp;
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(nu[i]<nu[j])
{
num_temp=nu[i];
nu[i]=nu[j];
nu[j]=num_temp;
score_temp=sc[j];
sc[j]=sc[i];
sc[i]=score_temp;
name_temp=na[i];
na[i]=na[j];
na[j]=name_temp;
}
}
void find(string one,int *num,string name[],int *score)//查找
{
bool flag=false;
for(int i=0;i<N;i++)
if(one==name[i])
{
flag=true;
cout<<num[i]<<setw(7);
cout<<name[i]<<setw(7);
cout<<score[i]<<endl;
}
if(!flag)
cout<<"No such people"<<endl;
}
void average(int *num,string name[],int *score)
//求平均值,输出高于平均的
{
int i,sum=0;
float ave;
for(i=0;i<N;i++)
sum+=score[i];
ave=(float)sum/N;
cout<<"Average="<<ave<<endl;
cout<<"Above the average:"<<endl;
for(i=0;i<N;i++)
if(score[i]>ave)
{
cout<<num[i]<<setw(7);
cout<<name[i]<<setw(7);
cout<<score[i]<<endl;
}
}