(两种方法)顺序移动数组

方法一:需要定义两个数组

#include <stdio.h>
//顺序移动数组
int main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int b[10];
    int i,n;//n代表移动的位数
    printf("请输入移动的位数:");
    scanf("%d",&n);
    printf("移动前:\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    for(i=0;i<10;i++)//直接计算移动n次后,每个元素最终出现的位置,写入b数组
    {
        b[(i+n)%10]=a[i];
    }
    printf("\n移动后:\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",b[i]);
    }
    return 0;
}

方法二:定义一个数组,一个数组内部移动,无需借助外部数组变量 

#include <stdio.h>

int main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int i,n,m;//n代表移动的位数,m代表中间变量
    printf("请输入移动的位数:");
    scanf("%d",&n);
    printf("移动前:\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    for(int j=0;j<n;j++)//外层循环表示向后移动的次数,移动几次就循环几次
    {
        m=a[9];//先将最后一位元素赋值给中间变量,目的是空出最后元素的位置
        for(i=9;i>0;i--)//依次将前一个元素赋值到后一个元素的位置
        {
            a[i]=a[i-1];
        }
        a[0]=m;//全部移动一遍后,第一个元素的位置空出来了,再将中间变量保存的元素写入,这就算整个数组向后移动一位      
    }
    printf("\n移动后:\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值