/*Description
有一个m*n的二维数组(m,n<10),请将每列的元素都右移一列,而原来最右边那
一列的元素移到最左边。
Input
输入数据有多组,每组的第1行有两个正整数m和n,后跟m行,每行n个数。
所有数都是整数,数据之间用空格分隔。
Output
对于每组测试数据,输出移动后的二维数组。
Sample Input
3 3
1 2 3
1 2 3
1 2 3
2 2
1 1
1 1
Sample Output
3 1 2
3 1 2
3 1 2
1 1
1 1*/
#define M 5
#define N 5
#define O 2
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
int a;
int b;
int num[M][N];
struct LNode *next;
}*LinkList,LNode;
int main()
{
int i,j,k,t;
LinkList head,p1,p2;
for(k = 0;k < O;k++)
{
p1 = (LinkList)malloc(sizeof(LNode));
//输入数据
scanf("%d %d",&p1->a,&p1->b);
for(i = 0;i < p1->a;i++)
{
for(j = 0;j < p1->b;j++ )
{
scanf("%d",&p1->num[i][j]);
}
}
//整理数据
for(i = 0;i < p1->a;i++)
{
t = p1->num[i][p1->b - 1];
for(j = p1->b - 2;j >= 0;j--)
{
p1->num[i][j + 1] = p1->num[i][j];
}
p1->num[i][0] = t;
}
if(k == 0) head = p1;
else p2->next = p1;
p2 = p1;
}
p2->next = NULL;
while(head)
{
for(i = 0;i < head->a;i++)
{
for(j = 0;j < head->b;j++)
{
printf("%d ",head->num[i][j]);
}
printf("\n");
}
head = head->next;
}
}
二维数组右移
最新推荐文章于 2022-12-02 20:17:47 发布