C语言数组不会做

这个题搞不懂,麻烦大家帮我讲解下,详细一点

第1个回答  2018-02-09
这个程序是数组的反序(自己取的名字,不知道术语怎么说,你理解就好了),比如将1 2 3变成3 2 1,怎么变呢?让1和3交换,2和2交换(其实不需要)。
回到这个程序,这个函数fun的功能就是将数组的n1到n2之间下标的元素反序,怎么实现呢?p保存的就是数组首地址,知道了这个首地址就可以操纵这个数组了,n1 n2都是下标(其实隐含n1小于n2),我们让数组n1下标元素与数组n2下标元素交换,之后n1++,n2--,继续循环的交换,直到n1小于n2,就说明n1到n2之间的元素都已经反序了。
知道这个函数的意思之后main函数就好理解了,将数组0到3 之间的元素交换,4到9之间的交换,0到9之间的交换,其实这就相当于什么也没做,相当于对数组整体做了两次反序,结果和起初的顺序就一样了,接下来的代码是数组的输出。追答

我给搞错了,尴尬

本回答被网友采纳
第2个回答  2018-02-09
1 2 3 4 5 6 7 8 9 0

第一次调用fun()进行1和4对调,2和3对调,得

4 3 2 1 5 6 7 8 9 0
第二次调用fun()进行5和0对调,6和9对调,7和8对调,得
4 3 2 1 0 9 8 7 6 5
第三次调用fun()进行4和5对调,3和6对调,2和7对调,1和8对调,0和9对调,得
5 6 7 8 9 0 1 2 3 4追问

那请问下执行完fun(p,0,3)后的数组,也就是a0,a1,a2,a3是几,有点蒙

追答

4 3 2 1

本回答被提问者采纳
第3个回答  2018-02-09
如果n1<n2 这俩个数组序列号互换追问

能详细点吗,我一个一个带,结果不对

追答

又是你 答案是
5 2 3 1 0 6 7 8 9 4 吗?

追问

5 6 7 8 9 0 1 2 3 4

追答

懂了? 懂了我就不说了