当前位置: 代码迷 >> C语言 >> [求助]用指针给一个数组排序的问题(解决了 谢谢)
  详细解决方案

[求助]用指针给一个数组排序的问题(解决了 谢谢)

热度:157   发布时间:2006-07-26 20:54:18.0
[求助]用指针给一个数组排序的问题(解决了 谢谢)

几天刚刚学了用指针
在做题的时候要求用指针进行冒泡排序我写的代码没用
能帮帮忙分析下吗?
#include <stdio.h>
#define N 6
void main()
{
int a[N],i,j,*p,*q,*k;

printf("请输入6个整数:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("输入的数是:");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
for(i=0;i<N;i++)
{
for(p=a,q=&a[1];q<N-1-i;q++,p++)
{
if(*p>*q)
{ //交换2个数
*k=*q;
*q=*p;
*p=*k;
}
}
}
printf("排序后的数:");
}

[此贴子已经被作者于2006-7-26 21:41:18编辑过]

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

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

#include <stdio.h>
#define N 6
void main()
{
int a[N],i,j,*p,*q,k,counter;

printf("请输入6个整数:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("输入的数是:");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
for(i=0;i<N;i++)
{
for(counter=1,p=a,q=&a[1];counter<N-i;q++,p++,counter++)
{
if(*p>*q)
{
k=*q;
*q=*p;
*p=k;
}
}
}
printf("排序后的数:");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
getch();
}

源程序主要有两个问题 :指针k为野指针,您在没指向任何内容就直接使用;
            指针不能比较,另外范围也算错了,是N-i,not N-1-i;


----------------解决方案--------------------------------------------------------
明白了 谢谢了哈
----------------解决方案--------------------------------------------------------
你太狠了,版主
----------------解决方案--------------------------------------------------------
int *w;
w=a+N;
for(p=a;p<w;p++)
{if(*p>*q)
k=*q;
*q=*p;
*p=k;
}
我只写了循环部分,看我这个,没那么复杂,老谭书上的原作,比那个简单点,我认为,
版主看看,代替两个for循环体
----------------解决方案--------------------------------------------------------

我错了,5555
我只想用w=a+N代替counter


----------------解决方案--------------------------------------------------------
  相关解决方案