请C++高手帮我看一下这个程序运行结果不对,是什么问题?

2025-01-03 15:34:19
推荐回答(2个)
回答1:

#include
using namespace std;
class CArray{
int size;
int *p;
public:
CArray(int=100){
size=10;
p=new int[size];
}
~CArray( ){delete []p;}
int GetElem(int i){ //这个不用返回对象,返回数值
return p[i-1]; //这个p[i-1]
}
void Input( ){
cout<<"请输入数据\n";
for(int i=0;i cin>>p[i];
}
}
void Print( ){
for(int i=0;i cout< }
}
void Sort( ){
float t;
for(int i=1;i for(int j=0;j if(p[j]>p[j+1]){
t=p[j];p[j]=p[j+1];p[j+1]=t;
}
}
}
}
void Search(int a){
for(int i=0;i if(p[i]==a){
cout<<"找到了!是序列中第"< break;
}
}
if(i==size) cout<<"未找到!\n";
}
};
int main(void){
CArray s;
int a,i;
s.Input( );
cout<<"请输入想取数组中的第几个元素\n";
cin>>i;
cout<<"所取的元素为:\n"<
s.Sort( );
cout<<"排序后数组元素为:\n";
s.Print( );
cout< cout<<"请输入想要查找的元素\n";
cin>>a;
s.Search(a);
return 0;
}

回答2:

#include
using namespace std;
class CArray{
int size;
int *p;
public:
CArray(int=100){
size=10;
p=new int[size];
}
~CArray( ){delete []p;}
int &GetElem(int i){
return p[i];
}
void Input( ){
cout<<"请输入数据\n";
for(int i=0;i cin>>p[i];
}
}
void Print( ){
for(int i=0;i cout< }
}
void Sort( ){
float t;
for(int i=0;i for(int j=i;j if(p[j]>p[j+1]){
t=p[j];p[j]=p[j+1];p[j+1]=t;
}
}
}
}
void Search(int a){
int i;
for(i=0;i if(p[i]==a){
cout<<"找到了!是序列中第"< break;
}
}
if(i==size) cout<<"未找到!\n";
}
};
int main(void){
CArray s;
int a,i;
s.Input( );
cout<<"请输入想取数组中的第几个元素\n";
cin>>i;
cout<<"所取的元素为:\n";
s.GetElem(i);
s.Sort( );
cout<<"排序后数组元素为:\n";
s.Print( );
cout< cout<<"请输入想要查找的元素\n";
cin>>a;
s.Search(a);
return 0;
}
你的排序有问题