原题:
用指向指针的指针的方法对10个整数排序并输入。要求将排序单独写成一个函数。
请问以下两种Sort排序方法有什么区别哪中方法更好一点,请高手指点,多谢啊
主程序:
main()
{
int a[10];
int *num[10];
void Sort();
int i,**p;
p=num;
for(i=0;i<10;i++)
{
num[i]=&a[i];
scanf("%d",&a[i]);
}
Sort(p);
for(i=0;i<10;i++)
printf("%d ",**(p+i));
}
两个函数分别是:
void Sort(int **p)/*1、交换指针的指针排序法*/
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=**(p+i);
**(p+i)=**(p+j);
**(p+j)=t;
}
}
void Sort(int **p)/*2、交换指针排序法*/
{
int i,j,*t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
[此贴子已经被作者于2006-5-6 18:24:27编辑过]
----------------解决方案--------------------------------------------------------
今天人怎么这么少呢
----------------解决方案--------------------------------------------------------
大哥啊,指针和叔祖只是看起来不同,在内存中都是一样的,非要用指针
----------------解决方案--------------------------------------------------------
哈哈 练习啊,用熟了之后就不用了
----------------解决方案--------------------------------------------------------
两个函数分别是:
void Sort(int **p)/*1、交换指针的指针排序法*/
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=**(p+i);
**(p+i)=**(p+j);
**(p+j)=t;
}
}
for(i=0;i<10;i++)
下标超了
----------------解决方案--------------------------------------------------------
5楼的意思是?
不过执行可以啊
----------------解决方案--------------------------------------------------------
可以运行,但你下标过头了
----------------解决方案--------------------------------------------------------
原题:
用指向指针的指针的方法对10个整数排序并输入。要求将排序单独写成一个函数。
请问以下两种Sort排序方法有什么区别哪中方法更好一点,请高手指点,多谢啊
主程序:
main()
{
int a[10];
int *num[10];
void Sort();
int i,**p;
p=num;
for(i=0;i<10;i++)
{
num[i]=&a[i];
scanf("%d",&a[i]);
}
Sort(p);
for(i=0;i<10;i++)
printf("%d ",**(p+i));
}
两个函数分别是:/*这种方法在排序的同时把数组a[]的元素也排序了,你输出整个数组的时候是排序好了的*/
void Sort(int **p)/*1、交换指针的指针排序法*/
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=**(p+i);
**(p+i)=**(p+j);
**(p+j)=t;
}
}
/*这种方法并未对数组a[]的元素排序,只是对指向数组的指针进行排序,你输出指针数组是排序好了的,但当你直接输出数组时,还是原样子的*/
void Sort(int **p)/*2、交换指针排序法*/
{
int i,j,*t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
至于哪个好,就要看你具体要怎么用了.
----------------解决方案--------------------------------------------------------
原题:
用指向指针的指针的方法对10个整数排序并输入。要求将排序单独写成一个函数。
请问以下两种Sort排序方法有什么区别哪中方法更好一点,请高手指点,多谢啊
主程序:
main()
{
int a[10];
int *num[10];
void Sort();
int i,**p;
p=num;
for(i=0;i<10;i++)
{
num[i]=&a[i];
scanf("%d",&a[i]);
}
Sort(p);
for(i=0;i<10;i++)
printf("%d ",a[i] ); /*把**(p+i)换成a[i]后,第二个就不管用了!*/
}
两个函数分别是:
void Sort(int **p)/*1、交换指针的指针排序法*/
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=**(p+i);
**(p+i)=**(p+j);
**(p+j)=t;
}
}
void Sort(int **p)/*2、交换指针排序法*/
{
int i,j,*t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
----------------解决方案--------------------------------------------------------
这道题我明白了
谢谢各位的顶力帮助尤其是 soft_wind 和 忍者无敌谢谢你们
----------------解决方案--------------------------------------------------------