读书人

大师

发布时间: 2013-04-20 19:43:01 作者: rapoo

求助大师!
建立一个对象数组,内放五个学生数据(学号、成绩),用指针指向首地址,建立函数将学生成绩按照成绩递增排序输出,我自己做了一个,可是不能运行,请大师看看有什么错误:
#include<iostream>
using namespace std;
class Data
{
public:
int n;
float s;
Data(int num,float score):n(num),s(score){};
};
int main(void)
{
void Rank(Data* p);
Data stu[5]={Data(23,56),Data(67,45),Data(8,87),Data(37,99),Data(34,99)};
Data *q;
q=&stu[0];
Rank(q);
return 0;
}
void Rank(Data* p)
{
int i,j;
int a;
float b;
for(i=0;i<5;i++)
for(j=i+1;i<5;j++)
if(((p+i)->s)>((p+j)->s))
{
a=(p+i)->n;
b=(p+i)->s;
(p+i)->n=(p+j)->n;
(p+i)->s=(p+j)->s;
(p+j)->n=a;
(p+j)->s=b;
}
for(i=0;i<5;i++)
cout<<(p+i)->n<<" "<<(p+i)->s<<endl;
} 对象
[解决办法]
void Rank(Data* p) -> void Rank(Data** p)

Data* 指向一个DATA;
Data**指向一组DATA;
[解决办法]
#include<iostream>
using namespace std;
class Data
{
public:
int n;
float s;
Data(int num,float score):n(num),s(score){};
};
int main(void)
{
void Rank(Data* p);
Data stu[5]={Data(23,56),Data(67,45),Data(8,87),Data(37,99),Data(34,99)};
Data *q;
q=&stu[0];
Rank(q);
return 0;
}
void Rank(Data* p)
{
int i,j;
int a;
float b;
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(((p+j+1)->s)>((p+j)->s))
{
a=(p+j)->n;
b=(p+j)->s;
(p+j)->n=(p+j+1)->n;
(p+j)->s=(p+j+1)->s;
(p+j+1)->n=a;
(p+j+1)->s=b;
}
for(i=0;i<5;i++)
cout<<(p+i)->n<<" "<<(p+i)->s<<endl;
}

读书人网 >C++

热点推荐