C语言-方阵循环右移

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

输入格式:

输入第一行给出两个正整数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 
cpp 复制代码
#include "stdio.h"
//矩阵右移函数
void MatrixShiftRight(int arr[][6],int pow){
    //总行后一位值寄存器1
    int temp1;
    for (int i = 0; i < pow; ++i) {
        //换行刷新
        temp1 = 0;
        for (int j = 0; j < pow; ++j) {
            //如果当前为该行最后一位
            if (j+1 == pow){
                arr[i][0] = temp1;
            //如果当前为该行第一位
            } else if(j == 0){
                temp1 = arr[i][j+1];
                arr[i][j+1] = arr[i][j];
            //如果当前为非首尾位
            } else{
                //后一位值寄存器2
                int temp2 = arr[i][j+1];
                arr[i][j+1] = temp1;
                temp1 = temp2;
            }
        }
    }
}
int main(){
    int times,pow;
    scanf("%d %d",&times,&pow);
    int arr[6][6];
    for (int i = 0; i < pow; ++i) {
        for (int j = 0; j < pow; ++j) {
            scanf("%d",&arr[i][j]);
        }
    }
    //方阵循环右移
    while (times--){
        //调用矩阵右移函数
        MatrixShiftRight(arr,pow);
    }
    for (int i = 0; i < pow; ++i) {
        for (int j = 0; j < pow; ++j) {
            printf("%d ",arr[i][j]);
            if(j+1 == pow)
                printf("\n");
        }
    }
    return 0;
}

以上代码全为本人亲自手敲,可能有一些错误和不足之处,如有更好的方法和建议,欢迎您在评论区友善讨论。

相关推荐
Joern-Lee1 分钟前
机器学习算法:支持向量机SVM
算法·机器学习·支持向量机
秋说11 分钟前
【PTA数据结构 | C语言版】计算1~n与1~m每一项相互乘积的和
c语言·数据结构·算法
秋说15 分钟前
【PTA数据结构 | C语言版】计算1~n平方的和加上1~n的和
c语言·数据结构·算法
C++ 老炮儿的技术栈17 分钟前
Visual Studio 2022 MFC Dialog 添加Toolbar及Tips提示
服务器·c语言·数据库·c++·ide·算法·visual studio
水果里面有苹果1 小时前
18-C#改变形参内容
java·数据结构·算法
前端拿破轮1 小时前
女朋友要和我分手?!!居然是因为交不出赎金信,不会用哈希表😭😭😭
算法·leetcode·typescript
CoovallyAIHub1 小时前
基于YOLOv11的CF-YOLO,如何突破无人机小目标检测?
深度学习·算法·计算机视觉
huihui4501 小时前
一天一道Sql题(day04)
算法
草莓熊Lotso1 小时前
【洛谷题单】--顺序结构(一)
c语言·c++·其他·刷题
lightqjx1 小时前
【数据结构】复杂度分析
c语言·开发语言·数据结构·算法