m0_63366309 2022-05-29 03:12 采纳率: 61.5%
浏览 62
已结题

数组元素循环右移moodle

问题:在moodle上显示调用了受限函数应该怎么修改
原题:若有n个数的数组arr,循环右移一位指每个数移到相邻的右边一个位置,最右边的数移到最左边。如数组1,2,3,4,5;循环右移1位的结果为5,1,2,3,4;右移3位的结果为3,4,5,1,2。

使用指针方法,编写数组右移k位的函数。

编写主函数输入若干元素和右移位数,调用函数右移,在主函数中输出结果。元素个数不超过100。

输入:两行,第1行为若干用空格分隔的整数,以9999表示结束;第2行一个整数,表示右移的位数。

输出:一行,移位的结果,各个数值用一个空格隔开,末尾无空格。

【输入输出样例】
输入:
1 2 3 4 5 9999
3

输出:
3 4 5 1 2


#include <stdio.h>


int main()
{
    int a[20], n=0, m;
    int i;
    
    while ( a[i-1]!=9999 ){ scanf("%d", &a[i]);i++;}  //i = 0; i < n; i++
    n=i-1;
    scanf("%d",&m);
    ArrayShift(a, n, m);

    for ( i = 0; i < n; i++ ) {
        if (i != 0) printf(" ");
        printf("%d", a[i]);
    }
    printf("\n");

    return 0;
}
int ArrayShift( int a[], int n, int m )
{
  int i;
  int k;
  for(k=1;k<=m;k++)
  {
    int temp=a[n-1];
    for(i=n-1;i>0;i--)
     {
        a[i]=a[i-1];
     }
     a[0]=temp;
  }
}

  • 写回答

2条回答 默认 最新

  • 关注

    你题目的解答代码如下:

    #include <stdio.h>
    
    int ArrayShift(int a[], int n, int m)
    {
        int i;
        int k;
        if (m >= n)
            m = m % n;
        for (k = 1; k <= m; k++)
        {
            int temp = a[n - 1];
            for (i = n - 1; i > 0; i--)
            {
                a[i] = a[i - 1];
            }
            a[0] = temp;
        }
    }
    
    int main()
    {
        int a[101], n = 0, m;
        int i = 0;
        while (1)
        {
            scanf("%d", &a[i]);
            if (a[i] == 9999)
                break;
            i++;
        }
        n = i;
        scanf("%d", &m);
        ArrayShift(a, n, m);
        for (i = 0; i < n; i++)
        {
            if (i != 0)
                printf(" ");
            printf("%d", a[i]);
        }
        printf("\n");
    
        return 0;
    }
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab