1008 数组元素循环右移问题 循环嵌套 PTAbasic 浙大c++

题目:
在这里插入图片描述输入样例:
6 2
1 2 3 4 5 6

输出样例:
5 6 1 2 3 4

分析:
循环右移有两种办法
1、数组中的每个数直接移动M位,这样对移到翻头的数字处理比较复杂。
2、每次只移动一位,循环M次。这样只需每个数后移,最后一位保存到第一位即可。
移一位有两种办法:从前往后,从后往前。有什么区别呢?
①从前往后,每次都需保存前一位数字在temp中,否则前一位就是前前一位,即都保存的是第一位数字(易错点)。未达到移动目的。
②从后往前,只需保存最后一位,直接后移即可。这样比较简单快速。

代码:

#include<iostream>
using namespace std;

int main() {
	int all,move,temp;
	cin>>all>>move; 
	int num[all];
	for(int i=0;i<all;i++){
		cin>>num[i];
	}
	for(int i=0;i<move;i++){     //循环move次,每个循环右移一位 
		temp=num[all-1];
		for(int j=all-1;j>0;j--)    //后一位保存前一位 
		{
			num[j]=num[j-1];
		}
		num[0]=temp;                  //第一位保存最后一位 
	}
	for(int i=0;i<all-1;i++){
		cout<<num[i]<<" ";
	}
	cout<<num[all-1];
}
发布了9 篇原创文章 · 获赞 13 · 访问量 288

猜你喜欢

转载自blog.csdn.net/qnsEmma/article/details/104822861
今日推荐