题目描述
(要求通过下标和指针访问数组元素)从键盘输入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;
}