C++实验02(04)数组循环左移

题目描述
(要求通过下标和指针访问数组元素)从键盘输入n* n个整数,将它们存放在二维数组A中;然后将A中整数循环左移k次(1<k<n);最后输出循环左移后的A数组。
循环左移方法如下所示。在这个实例中k=3。 (本题中n为5)
如果循环左移前,A中存放的内容是:
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55
则循环左移后,A中存放的内容变成:
14 15 21 22 23
24 25 31 32 33
34 35 41 42 43
44 45 51 52 53
54 55 11 12 13
输入描述
两批数据:第一批:左移的次数k
第二批:5 * 5个整数
输出描述
左移k位后的数组,按行输出,数据间用"\t"分隔
输入样例
3
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55
输出样例
左移3位后的数组为:
14 15 21 22 23
24 25 31 32 33
34 35 41 42 43
44 45 51 52 53
54 55 11 12 13

#include <iostream>
using namespace std;
int main()
{
    
    
	int a[5][5],i,j,k,t,s;
	cin>>k;
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
		   cin>>*(*(a+i)+j);
	if(k>1&&k<5)
	{
    
    
		for(s=1;s<=k;s++)
		{
    
    
			t=a[0][0];
			for(i=0;i<5;i++)
				for(j=0;j<5;j++)
				{
    
    
					if(j!=4)
						*(*(a+i)+j)=*(*(a+i)+j+1);
					else
						*(*(a+i)+j)=*(*(a+i+1)+0);
				}
			a[4][4]=t;
		}
	}
	cout<<"左移"<<k<<"位后的数组为:"<<endl;
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
		{
    
    
			cout<<a[i][j]<<'\t';
			if(j==4)
				cout<<endl;
		}
		return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44179485/article/details/105890640