艾草837 2022-05-03 16:48 采纳率: 50%
浏览 139

编写函数,其功能是把包含N个整数的数组a中从第m数开始的n个数按逆序重新存放。

编写函数void rev(int a[],int m,int n),其功能是把包含N个整数的数组a中从第m数开始的n个数按逆序重新存放。在主函数中调用输入函数输入N个整数及m、n,调用rev函数进行逆序处理后,调用输出函数输出结果;当m+n>N时,即表示从第m个数开始到最后一个数进行逆序存放。程序提交时N设定为10。
如输入:10 2 30 4 50 6 70 8 90 1
6 8
10 2 30 4 50 1 90 8 70 6

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-05-03 21:24
    关注

    供参考:

    #include <stdio.h>
    #define N 10
    void rev(int a[],int m,int n)
    {
        int i,t;
        m+n > N ? n = N - m : n = n;
        for (i = m - 1;i < m + n/2; i++){
            {t = a[i];a[i] = a[N - i + m - 2]; a[N - i + m - 2] = t;}
        }
    }
    int main()
    {
        int a[N],i,m,n;
        for (i = 0;i < N; i++)
            scanf("%d", &a[i]);
        scanf("%d%d", &m, &n);
        rev(a,m,n);
        for (i = 0;i < N; i++)
                printf("%4d",a[i]);
        return 0;
    }
    
    

    指针的写法:

    #include <stdio.h>
    #define N 10
    void rev(int* a,int m,int n)
    {
        int i,t;
        m+n > N ? n = N - m : n = n;
        for (i = m - 1;i < m + n/2; i++){
            {t = *(a + i);*(a + i) = *(a + N - i + m - 2); *(a + N - i + m - 2) = t;}
        }
    }
    
    int main()
    {
        int a[N],i,m,n;
        for (i = 0;i < N; i++)
            scanf("%d", &a[i]);
        scanf("%d%d", &m, &n);
        rev(a,m,n);
        for (i = 0;i < N; i++)
                printf("%4d",a[i]);
        return 0;
    }
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月3日

悬赏问题

  • ¥50 决策面并仿真,要求有仿真结果图
  • ¥15 springboot接入微信支付SDK
  • ¥50 大区域的遥感影像匹配 怎么做啊
  • ¥15 求解答:pytorch跑yolov8神经网络受挫
  • ¥20 Js代码报错问题不知道怎么解决
  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?