当前位置: 代码迷 >> C语言 >> [求助]简单的指针数组,交换的时候出现错误
  详细解决方案

[求助]简单的指针数组,交换的时候出现错误

热度:168   发布时间:2006-05-03 10:19:00.0
[求助]简单的指针数组,交换的时候出现错误

下面是输入10个整数,把最小的与第一个换,最大的与最后一个换;要求是无论实参还是形参,都用指针实现,不用数组
大家最好 是能帮我找下我下面写的这个的错误,因为找不到这个错误让我心里很不舒服,就算是看到其它写的对的程序,可是这个错误找不出来,以后还会犯同样的错误的
我在这里谢谢了啊


#include"stdio.h"

void swap(int *p1,int *p2)
{
int temp;

temp=*p1;
*p1=*p2;
*p2=temp;
}

void sort(int *q,int n)
{
int *max,*min;
*min=*max=*q;

for(q=q+1;q<q+n;q++)
{
if(*q>*max)
max=q;
else min=q;
}

swap(q,max);//此时的q指向的是数组的最后一位数
if(min==q)
swap(q-n+1,max);
else swap(q-n+1,min);

}


main()
{
int a[10],i=0;

printf("Input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);

p=a;
sort(p,10);
for(i=0;i<10;i++)
printf("\n%3d",a[i]);
return 0;

}

搜索更多相关的解决方案: 指针  int  temp  void  

----------------解决方案--------------------------------------------------------

老大,这好象是潭书题解上的吧


----------------解决方案--------------------------------------------------------
p=a;



你的p在什么地方定义的
----------------解决方案--------------------------------------------------------
int *max,*min;
*min=*max=*q;
swap(q,max);//此时的q指向的是数组的最后一位数
void swap(int *p1,int *p2)

思路有问题,自己在想想

----------------解决方案--------------------------------------------------------


----------------解决方案--------------------------------------------------------
你不用刻意的家'*'这个东西,数组名就是指针,而不是有'*'就是指针,没有就不是指针,该是指针的它还是指针,改变不了,你对指针理解有误
----------------解决方案--------------------------------------------------------
for(q=q+1;q<q+n;q++)


这能停止循环吗
----------------解决方案--------------------------------------------------------
void sort(int *q,int n)
这个好像是无返回值的吧,
----------------解决方案--------------------------------------------------------

#include"stdio.h"

void swap(int *p1,int *p2)
{
int temp;

temp=*p1;
*p1=*p2;
*p2=temp;
}

void sort(int *q,int n)
{
int *max,*min,*temp;
int counter=0;
temp=min=max=q;

for(q=q+1;q<temp+n-1;q++)
{
counter++;
if(*q>*max)
max=q;
if(*q<*min)
min=q;
}

swap(q,max);
if(min==q)
swap(q-n+1,max);
else swap(q-n+1,min);

}


main()
{
int a[10],i=0;
int *p;
printf("Input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);

p=a;
sort(p,10);
for(i=0;i<10;i++)
printf("\n%3d",a[i]);
return 0;

}
你自己比较下就知道错在哪了。


----------------解决方案--------------------------------------------------------
楼上的好人啊,程序都写了
----------------解决方案--------------------------------------------------------
  相关解决方案