八目i 发表于 2018-11-30 22:25:29

输入是个整数对其进行从大到小的排序。

为什么要出现这样的问题。
形式参数和实际参数有什么样的规定。

rencaixiaomeng 发表于 2018-11-30 22:41:46

void sort (int a, int a, inti);        //这句改成void sort (int a[],int i);
void sort (int a, int a, inti)//这句改成void sort (int a[],int i)

...
if (j-1>0)
{
        j--;
        sort(a, a, j); //这句改成 sort(&a, j);
}


main里面
sort(a, a, i); //这句改成sort(&a, i);

八目i 发表于 2018-11-30 22:52:18

rencaixiaomeng 发表于 2018-11-30 22:41
void sort (int a, int a, inti);        //这句改成void sort (int a[],int i);
void sort (int a, int a, int ...

为啥要这样,能帮我解释一下嘛。

rencaixiaomeng 发表于 2018-11-30 23:06:05

本帖最后由 rencaixiaomeng 于 2018-11-30 23:08 编辑

第一点 参数名不能相同,你声明两个a参数,肯定会出错,而且看你的程序,第二个参数是不需要用到的,直接删去就可以
第二点 C语言里,函数的参数如果是数组的话,实际上传过去的是一个指向该数组第一个成员的指针,并不是传整个数组过去,所以在声明参数的时候不需要写数组大小也不能写数组的大小,void sort (int a, int a, inti) a里的i要去掉
第三点 你每次调用函数的传的不是数组的首地址,这样运行结果可能跟你想要的不一样

sort(&a, j); 这是我刚刚让你改的,要改成sort(a, j);
sort(&a, i); 这句改成 sort(a, i);

八目i 发表于 2018-11-30 23:19:31

rencaixiaomeng 发表于 2018-11-30 23:06
第一点 参数名不能相同,你声明两个a参数,肯定会出错,而且看你的程序,第二个参数是不需要用到的,直接删 ...

fault

八目i 发表于 2018-11-30 23:23:39

八目i 发表于 2018-11-30 23:19
fault

就是改成你说的那样了,然后准备输出的时候就会报错成segmentation fault,这是为什么。

rencaixiaomeng 发表于 2018-11-30 23:25:47

你代码复制上来啊, 不然怎么知道你代码错在哪
页: [1]
查看完整版本: 输入是个整数对其进行从大到小的排序。