几天刚刚学了用指针
在做题的时候要求用指针进行冒泡排序我写的代码没用
能帮帮忙分析下吗?
#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
----------------解决方案--------------------------------------------------------