C++问题,来帮帮啊

来源:百度知道 编辑:UC知道 时间:2024/05/27 20:08:34
#include<iostream>
using namespace std;
int main()
{
void st(int *p,int *q,int n);
int a[10],*p,*q;
for(p=a;p<a+10;p++)
cin>>*p;
p=a;
q=a;
st(p,q,10);
for(p=a;p<a+10;p++)
cout<<*p;
return 0;
}
void st(int *p,int *q,int n)
{
int a[10],t,te;
for(p=a;p<a+n-1;p++)
{
for(q=a+1;q<a+n;q++)
if(*q<*p)
{
t=*q;
*q=*p;
*p=t;
}
}
}
排序 答案不对
改完怎么样 写出来让我看看 子函数中 就要用 纯指针这样的 懂吗

void st(int *p,int *q,int n)
{
int a[10],t,te;

在for循环中,p,q都被你重新付了初值,改的只是一个临时变量。

st()函数编写有问题,修改如下:

#include<iostream>
using namespace std;
int main()
{
void st(int *q,int n);
int a[10],*p,*q;
for(p=a;p<a+10;p++)
cin>>*p;

st(a,10);
for(p=a;p<a+10;p++)
cout<<*p;
return 0;
}
void st(int *q,int n)
{
int i,t,te;
for(i=0;i<n-1;++i)
{
for(t=i+1;t<n;++t)
if(*(q+i)<*(q+t))
{
te=*(q+i);
*(q+i)=*(q+t);
*(q+t)=te;
}
}
}

你这个愚 蠢的笨 旦!

怎么改不是已经写在下面了吗??懂吗??看清楚:

void st(int *q,int n)
{
int i,t,te;
for(i=0;i<n-1;++i)
{
for(t=i+1;t<n;++t)
if(*(q+i)<*(q+t))
{
te=*(q+i);
*(q+i)=*(q+t);
*(q+t)=te;
}
}
}

调用时要这样:st(a,10)/*a是数组基地址,10是数组的长度*/

自己不仅愚 蠢,口气还这么大!你以为你是谁呀!只不过是一个连这