读书人

帮忙改善一下代码解决方法

发布时间: 2012-04-28 11:49:53 作者: rapoo

帮忙改善一下代码
#include<iostream>
using namespace std;
struct Student
{
float MT,EN,PH; //三门课
float totalscore,averscore;
long num;
};
int ReadScore(Student stu[]) //输入成绩
{
int count=0;
for(int i=0;i<=31;i++)
{
cout<<"请输入学号:";
cin>>stu[i].num;
cout<<"请输入成绩(为负数时结束)"<<endl;
cout<<"数学:";
cin>>stu[i].MT;
if(stu[i].MT<0)
break;
cout<<"英语:";
cin>>stu[i].EN;
if(stu[i].MT<0)
break;
cout<<"物理:";
cin>>stu[i].PH;
if(stu[i].MT<0)
break;
count++;
cout<<endl;
}
return count;
}
float GetTotalScore(Student stu[],int i) //计算总分
{
stu[i].totalscore=stu[i].MT+stu[i].EN+stu[i].PH;
return stu[i].totalscore;
}
float GetAverScore(Student stu[],int i) //计算平均分
{
stu[i].averscore=stu[i].totalscore/3;
return stu[i].averscore;
}
void Rank(Student stu[],int n) //排名
{
for(int i=0;i<n;i++)
for(int j=n-1;j>i;j--)
if(stu[j-1].totalscore<stu[j].totalscore)
{
Student tem;
tem=stu[j-1];
stu[j-1]=stu[j];
stu[j]=tem;
}
}
void printf(Student stu[],int n) //输出学生信息
{
cout<<"学号"<<'\t'<<"数学"<<'\t'<<"英语"<<'\t'<<"物理"<<'\t'<<"总分"<<'\t'<<"平均分"<<endl;
for(int i=0;i<n;i++)
cout<<stu[i].num<<'\t'<<stu[i].MT<<'\t'<<stu[i].EN<<'\t'<<stu[i].PH<<'\t'<<stu[i].totalscore<<'\t'<<stu[i].averscore<<endl;
}
void Search(Student stu[],int input,int n) //查找
{
for(int i=0;i<n;i++)
{
if(stu[i].num!=input)
cout<<"查找错误!!"<<endl;
else
cout<<"该学生的排名是:"<<i+1<<","<<"成绩如下:"<<endl;
cout<<"数学"<<'\t'<<"英语"<<'\t'<<"物理"<<'\t'<<"总分"<<'\t'<<"平均分"<<endl;
cout<<stu[i].MT<<'\t'<<stu[i].EN<<'\t'<<stu[i].PH<<'\t'<<stu[i].totalscore<<'\t'<<stu[i].averscore<<endl;
}
}
int main()
{
Student stu[60];
int n=ReadScore(stu);
for(int p=0;p<n;p++)
{
GetTotalScore(stu,p);
GetAverScore(stu,p);
}
Rank(stu,n);
printf(stu,n);
while(1)
{
int nm=0;
cout<<"请输入要查询的编号:(当输入-1时结束)"<<endl;
cin>>nm;
if(nm==-1)
break;
else
Search(stu,nm,n);
}
return 0;
}
在查找时,如果输入的是查不到的,要在屏幕上输出提示信息,该怎么改才行??


[解决办法]
你可以修改一下查找函数的返回值,通过返回值来判断是否查找到了。如果找到了可以返回查找到的数据,如果没查找到可以返回-1,在主函数理可以通过返回值来确定是否找到了。
[解决办法]
Search函数的定义实现都有问题
bool Search(Student stu[],int input,int n) //查找
{
for(int i=0;i<n;i++)
if(stu[i].num!=input)
continue;
cout<<"该学生的排名是:"<<i+1<<","<<"成绩如下:"<<endl;
cout<<"数学"<<'\t'<<"英语"<<'\t'<<"物理"<<'\t'<<"总分"<<'\t'<<"平均分"<<endl;
cout<<stu[i].MT<<'\t'<<stu[i].EN<<'\t'<<stu[i].PH<<'\t'<<stu[i].totalscore<<'\t'<<stu[i].averscore<<endl;
return true;
}
return false;
}
判断返回值,如为false则输出提示信息

读书人网 >C++

热点推荐