这个程序为什么很不稳定,有时候成功有时候执行错误
对n个整数进行排序的程序#include "stdio.h"
#define N 100
main()
{void sort(int**p,int n);
int a[N],i,*p[N],**pointer,n;
printf("请输入要对几个数进行排序:");
scanf("%d",&n);
printf("请输入要排序的数:\n");
for(i=0;i<n;i++)
p[i]=a+i;
for(i=0,pointer=p;i<n;i++,pointer++)
scanf("%d",*pointer);
pointer=p;//在进行函数处理前先让其回到初始地点//
sort(pointer,n);
}
void sort(int**p,int n)
{int i,j,*temp;
for(j=1;j<n;j++)
{for(i=0;i<n-j;i++)
if(**p>=**(p+1))
{temp=*p;*p=*(p+1);*(p+1)=temp;p++;}
p=p-(n-j);} //每比完1论让指针回归//
printf("排序后的数字顺序是:\n");
for(i=0;i<n;i++)
printf("%d ",**p++);
}
----------------解决方案--------------------------------------------------------
不要重复发帖!
帖一:[url]http://bbs.bc-cn.net/thread-195128-1-1[/url]
帖二:[url]http://bbs.bc-cn.net/thread-195127-1-1[/url]
----------------解决方案--------------------------------------------------------
网线断了以下 以为没发成功 不好意思
----------------解决方案--------------------------------------------------------
已经知道了程序有错误,错误在ju色那里
void sort(int**p,int n)
{int i,j,*temp;
for(j=1;j<n;j++)
{for(i=0;i<n-j;i++)
if(**p>=**(p+1))
{temp=*p;*p=*(p+1);*(p+1)=temp;p++;}
p=p-(n-j);} //每比完1论让指针回归//
printf("排序后的数字顺序是:\n");
for(i=0;i<n;i++)
printf("%d ",**p++);
}
应该把p++放在if语句范围之外
[[italic] 本帖最后由 llp108 于 2007-12-30 23:22 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
我认为问题出现在这里。。 **pointer; 这个二级指针。。
for(i=0,pointer=p;i<n;i++,pointer++)
scanf("%d",*pointer); // 像(pointer+i)所代表空间, 楼主事先并没有申请就进行
//对其读写。这样的操作,在大多数的时候是非法的,因为你
// 有可能覆盖其它进程的数据。
楼主对pointer 进行申请一块内存后再读写, 应该就没有错了。。
----------------解决方案--------------------------------------------------------
已经知道了程序有错误,错误在红色那里
void sort(int**p,int n)
{int i,j,*temp;
for(j=1;j<n;j++)
{for(i=0;i<n-j;i++)
if(**p>=**(p+1))
{temp=*p;*p=*(p+1);*(p+1)=temp;p++;}
p=p-(n-j);} //每比完1论让指针回归//
printf("排序后的数字顺序是:\n");
for(i=0;i<n;i++)
printf("%d ",**p++);
}
应该把p++放在if语句范围之外,因为p++在if范围内所以当你输入5,4,3,2,1时就正确,输入5,4,3,1,2时就错误
用二及指针就是为了对指针进行一下练习
[[italic] 本帖最后由 llp108 于 2007-12-31 20:14 编辑 [/italic]]
----------------解决方案--------------------------------------------------------