7-5 数组元素循环右移n位 (15 分)(c语言)

该博客介绍了一个C语言程序,用于实现数组元素向右移动指定位数的功能。程序通过读取用户输入的数组长度和移动位数,然后通过循环和取模运算实现元素的移动,无需额外的数组空间。在处理过程中,使用了一个while循环确保移动的位数在有效范围内。此代码适用于处理小规模数组的顺序移动操作。
摘要由CSDN通过智能技术生成

问题描述
从键盘接收两个整数m和n,分别表示一维整型数组的元素个数,和要向移动的位数。已知0<m<=100,以及n>0。

在用户输入m和n后,第二行输入相应个数的数组元素。

程序要实现的功能是,让数组元素往右移动n位。

例如,数组的5个元素是:1,2,3,4,5。

往右移动1位后:5,1,2,3,4

往右移动2位后:4,5,1,2,3

输入格式:
第一行输入两个整数,第二行输入数组元素。

输出格式:
移动后,数组的每一个元素,注意每个数组元素后有且仅有一个空格。

输入样例:
第一行的数据5和2,表示数组容量为5,让数组元素往右移动2个位置。

第二行是数组的每一个元素的值。

5 2
1 2 3 4 5 

输出样例:
输出移动后的数组元素值,注意每个元素后有且仅有一个空格。

4 5 1 2 3 

思路分析
题目仅仅要求按顺序输出,所以并不需要将数组赋值到另外的数组,只需要操作下标即可
代码实现

#include<stdio.h>
int main(){
	int m,n,i,temp;
	scanf("%d%d",&m,&n);
	int a[m];
	for(i=0;i<m;i++)	scanf("%d",&a[i]);
	for(i=0;i<m;i++){
		while(n>m)	n-=m;
		temp=(m-n+i)%m;
		printf("%d ",a[temp]);
	}
	return 0;
}

更新
添加说明,上述while语句,是为了处理m大于n的情况,经过while循环之后无论m比n大多少都能限制在0-n之间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值