请问一下这个程序的算法有什么问题?新手,编译没有问题,执行结果错误
不知道算法有什么问题?请问一下。。
只是一个按年龄排名输出的小程序。
#include <iostream>
using namespace std;
class stu{
char name;
int age;
public:
void getname(){cin>>name;}
void getage(){cin>>age;}
int outage(){return age;}
};
void main()
{
stu ss[5];
cout<<"请输入数据"<<endl;
for (int i=0;i<5;i++)
{
ss[i].getage();
cout<<"输入姓名"<<endl;
ss[i].getname();
}
int i,j;
for(i=4;i>0;i--)
{
stu sss;
for(j=0;j<=i;j++)
{
if(ss[j].outage()>ss[j+1].outage())
{
sss=ss[j];
ss[j]=ss[j+1];
ss[j+1]=sss;
}
}
cout<<ss[i].outage()<<endl;
}
}
[解决办法]
#include <iostream>using namespace std;class stu{ char name; int age;public: void getname(){cin>>name;} void getage(){cin>>age;} int outage(){return age;}};void main(){ stu ss[5]; cout<<"请输入数据"<<endl; for (int i=0;i<5;i++) { ss[i].getage(); cout<<"输入姓名"<<endl; ss[i].getname(); } int i,j; for(i=4;i>0;i--) { stu sss; for(j=0;j<i;j++) { if(ss[j].outage()>ss[j+1].outage()) { sss=ss[j]; ss[j]=ss[j+1]; ss[j+1]=sss; } } cout<<ss[i].outage()<<endl; }}
[解决办法]
#include <iostream>using namespace std;class stu{ char name; int age;public: void getname(){cin>>name;} void getage(){cin>>age;} int outage(){return age;}};void main(){ stu ss[5]; cout<<"请输入数据"<<endl; for (int i=0;i<5;i++) { ss[i].getage(); cout<<"输入姓名"<<endl; ss[i].getname(); } int i,j; for(i=4;i>0;i--) { stu sss; for(j=0;j<i;j++) { if(ss[j].outage()>ss[j+1].outage()) { sss=ss[j]; ss[j]=ss[j+1]; ss[j+1]=sss; } } cout<<ss[i].outage()<<endl; }}
[解决办法]
#include <iostream>
using namespace std;
class stu
{
char name;
int age;
public:
void getname(){cin>>name;}
void getage(){cin>>age;}
int outage(){return age;}
};
void main()
{
stu ss[5];
cout<<"请输入数据"<<endl;
int i,j;
for ( i=0;i<5;i++)
{
cout<<"请输入年龄";
ss[i].getage();
cout<<"输入姓名"<<endl;
ss[i].getname();
}
for(i=4;i>0;i--)
{
stu sss;
for(j=0;j<=i;j++)
{
if(ss[j].outage()>ss[j+1].outage())
{
sss=ss[j];
ss[j]=ss[j+1];
ss[j+1]=sss;
}
}
cout<<ss[i].outage()<<endl;
}
}
用这个,可以从大到小排序