【浙大版《C语言程序设计实验与习题指导(第4版)》】实验7-2-7 方阵循环右移(附测试点)

本题要求编写程序,将给定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 

代码呈现:

#include 

int main()
{
    int m, n, i, j, k, l;
    int det[6][6] = { 0 }, temp[6][6] = { 0 };
    scanf("%d %d", &m, &n);
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            scanf("%d", &det[i][j]);
    //存入数据
    for (i = 0; i < m; i++)//右移m次
    {
        for (j = 0; j < n; j++)
            for (k = 0; k < n; k++)//三重循环,一次判断处理数据
            {
                if (k != n - 1)
                    temp[j][k + 1] = det[j][k];
                else
                    temp[j][0] = det[j][k];//数据从最后一列换到第一列
            }
        //将数据右移后存入temp数组中
        for (l = 0; l < n; l++)
            for (j = 0; j < n; j++)
                det[l][j] = temp[l][j];
        //逐个将temp中的数据复制到det中,为下次循环准备
    }
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
            printf("%d ", det[i][j]);
        printf("\n");
        //行循环结束换行
    }
    return 0;
}

测试点

【浙大版《C语言程序设计实验与习题指导(第4版)》】实验7-2-7 方阵循环右移(附测试点)_第1张图片

你可能感兴趣的:(c语言,算法)