C语言的一道题。 这题为什么选a,怎么算都是b?

如题所述

首先你看reverse函数完成得功能是啥,就是把数组倒置嘛
reverse(b, 8)是什么意思?
就是把数组b的前8个元素倒置
调用这个函数之后
数组b中的元素为8,7,6,5,4,3,2,1,9,10
然后你在看main函数中下面的那个for循环完成什么操作
很明显是求b中下标为6到9的这几个元素的和

即2+1+9+10 所以s = 22嘛
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-28
你注意到调用revers函数的参数了吗,是8,而不是10
所以只是把1-8逆置了一下
最后求和=2+1+9+10 = 22
第2个回答  2015-02-28
数组有10个数,但是只是翻转了8个数,翻转后的结果是8,7,6,5,4,3,2,1,9,10
下标6到9的数是2,1,9,10 和为22
第3个回答  2015-02-28
主函数调用函数reserve(b,8),把8传递给函数中n。并不是像你想的那样把数组完全逆置。运算后数组应该是8 7 6 5 4 3 2 1 9 10.所以结果是2 +1 +9 +10=22追问

穿了之后逆置4个数啊,后四个不是4 3 2 1吗?加起来不是还是10?

追答

n=8. a[i] 和a[n-1-i]互换。不是首尾互换

第4个回答  2015-02-28
把代码往机器一敲就行了追答

傻逼,你自己设置断点看下就不知道为什么了吗?傻逼,只知道结果