c语言题目。。

c语言题目。。第三题,为什么答案是这样的?求解... c语言题目。。第三题,为什么答案是这样的?求解 展开
 我来答
mqcake
2018-06-20 · TA获得超过218个赞
知道小有建树答主
回答量:694
采纳率:0%
帮助的人:233万
展开全部
进行值交换。
更多追问追答
追问
10-i-1是什么情况
追答
比如,i=0的时候,就把下标0和9进行交换,1的时候就和8交换以此类推。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4f676c7
2018-06-20
知道答主
回答量:33
采纳率:50%
帮助的人:6.1万
展开全部

举个例子:1 2 3 4 5

要将其逆序就是:0位置的值放在最后位置上,最后位置放在0位置上(5 2 3 4 1),同理1位置的值放在最后位置上,最后位置往前一位放在1位置上(5 4 3 2 1),以此类推...发现了吗,简单交换位置上对称的值就可以了,而这里用循环就很合适

更多追问追答
追问
你能把题目中的数代入进去然后和我解释嘛?谢谢
追答
#include <cstdio>

int main() {
    int a[] = {3, 4, 5, 6, 8};
    int length = 5;
    //对称元素的交换次数,对称意味着对半!-1是因为从0开始计数
    int times = (length/2)-1;  
    for (int i=0; i<=times; i++) {
        int t = a[i];
        a[i] = a[length-i-1];
        a[length-i-1] = t;
    }

    for (int j=0; j<length; j++) {
        printf("%d ", a[j]);
    }
    return 0;
}

循环次数应该计算下,而不是直接以它的长度10作为上界(我这里直接用了5,都是一样的)

以下是它每次循环对数组带来的改动:

提示:括号内是要被交换的两个数

开始时:(3) 4 5 6 (8)
第一次:8 (4) 5 (6) 3
第二次:8 6 5 4 3

明白上面的过程之后,想想为什么不必关心数组长度的奇偶?

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式