用指向指针的指针的方法对n个整数排序。要求将排序单独写成一个函数。n和各整数在主函数中输入输出
我的程序,问题在哪?#include<stdio.h>voidmain(){voidsort(int*num[],intn);intn=5;inta[]={1,4,23,...
我的程序,问题在哪?
#include<stdio.h>
void main()
{
void sort(int * num[],int n);
int n=5;
int a[]={1,4,23,12,9};
int * num[]={&a[1],&a[2],&a[3],&a[4],&a[5]};
int ** p;
p=num;
sort(num,n);
int d;
for(d=0;d<n;d++)
printf("%d\n", ** p);
}
void sort(int * num[],int n)
{
int * t;
int i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(num[k]>num[j])
k=j;
if(k!=j)
{
t=num[i];num[i]=num[k];num[k]=t;
}
}
}
最好帮我修改一下 展开
#include<stdio.h>
void main()
{
void sort(int * num[],int n);
int n=5;
int a[]={1,4,23,12,9};
int * num[]={&a[1],&a[2],&a[3],&a[4],&a[5]};
int ** p;
p=num;
sort(num,n);
int d;
for(d=0;d<n;d++)
printf("%d\n", ** p);
}
void sort(int * num[],int n)
{
int * t;
int i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(num[k]>num[j])
k=j;
if(k!=j)
{
t=num[i];num[i]=num[k];num[k]=t;
}
}
}
最好帮我修改一下 展开
3个回答
展开全部
for(d=0;d<n;d++)
printf("%d\n", ** p);---%d是转义符这样用没见过
还有就是num[0]~~~num[3]分别指向的是a[0]~~~a[3]的地址
你sort函数里面处理num的时候好像是有问题
#include<stdio.h>
void main()
{
void sort(int * num[],int n);
int n=5;
int a[]={1,4,23,12,9};
int * num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};//你的数组越界
int ** p;
p=num;
sort(num,n);
int d;
for(d=0;d<n;d++)
printf("%d\n", ** (p+d));//这里你是想显示出来排序后的数字
}
void sort(int * num[],int n)//冒泡排序,应该没错。
{
int * t;
int i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(num[k]>num[j])//num指向的是一个指针,必须加*
k=j;
if(k!=j)
{
t=num[i];num[i]=num[k];num[k]=t;
}
}
}
试一试是不是正确的,我这里没有C编译器,没法帮你编译
printf("%d\n", ** p);---%d是转义符这样用没见过
还有就是num[0]~~~num[3]分别指向的是a[0]~~~a[3]的地址
你sort函数里面处理num的时候好像是有问题
#include<stdio.h>
void main()
{
void sort(int * num[],int n);
int n=5;
int a[]={1,4,23,12,9};
int * num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};//你的数组越界
int ** p;
p=num;
sort(num,n);
int d;
for(d=0;d<n;d++)
printf("%d\n", ** (p+d));//这里你是想显示出来排序后的数字
}
void sort(int * num[],int n)//冒泡排序,应该没错。
{
int * t;
int i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(num[k]>num[j])//num指向的是一个指针,必须加*
k=j;
if(k!=j)
{
t=num[i];num[i]=num[k];num[k]=t;
}
}
}
试一试是不是正确的,我这里没有C编译器,没法帮你编译
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
void sort(int *num[],int n);
int n=5;
int a[]={1,4,23,12,9};
int *num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};
int ** p;
p=num;
sort(p,n);
int d;
for(d=0;d<n;d++)
printf("%d\n", **(p+d));
}
void sort(int * num[],int n)
{
int *t;
int i,j;
for(i=0; i<n-1; i++)
{
for(j=i+1;j<n;j++)
if(*num[i]>*num[j])
{
t=num[i];
num[i]=num[j];
num[j]=t;
}
}
}
void main()
{
void sort(int *num[],int n);
int n=5;
int a[]={1,4,23,12,9};
int *num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};
int ** p;
p=num;
sort(p,n);
int d;
for(d=0;d<n;d++)
printf("%d\n", **(p+d));
}
void sort(int * num[],int n)
{
int *t;
int i,j;
for(i=0; i<n-1; i++)
{
for(j=i+1;j<n;j++)
if(*num[i]>*num[j])
{
t=num[i];
num[i]=num[j];
num[j]=t;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我怎么觉得你的sort函数的操作对象是地址而不是数字啊~*num[]数组里存的是地址啊!你怎么把它当成参数在做排序运算呢~!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询