练习7-8 方阵循环右移

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:52   2988   0

本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、、n1列变换为第nm、nm+1、、n1、0、1、、nm1列。

输入格式:

输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。

输出格式:

按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。

输入样例:

2 3
1 2 3
4 5 6
7 8 9

输出样例:

2 3 1 
5 6 4 
8 9 7 

思路:偏移量已知,如上图第一行,定义a[i][j],i=j=3。原本的在0位置跑到了2的位置,而1的位置在0,3的位置在1,所以可以看出是(j+2)%3,所以规律就是(j+m)%n

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP