C语言实现矩阵旋转90度

问题描述:

输入矩阵阶数 n,给 n 阶矩阵的元素按行序由 1 到 n*n 顺序赋值,然后将其向右旋转 90 度,输出旋转后的矩阵。

输入形式:

控制台输入阶数 n。

输出形式:

输出旋转 90 度后的矩阵,其中每个数字占 4 位字符的宽度,向右对齐。

样例输入:

4

样例输出:

13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4

样例说明:

输入整数 n = 4,输出旋转后的矩阵。

解题思路:

  1. 顺序赋值: 使用两重循环,外层循环控制行数,内层循环控制列数,每次循环将赋值的数字加一即可。

  2. 矩阵旋转: 可以分解为先对角线翻转,再左右翻转,也可以先左右翻转,再对角线翻转。这里我们采用先对角线翻转的方法,即先将矩阵的主对角线上方的元素和下方的元素交换,然后再将每一行左右翻转。

  3. 输出格式: 旋转后的矩阵输出时,每个数字占 4 位字符的宽度,向右对齐,可以使用 printf 函数的格式控制符来实现。

参考代码:

#include <stdio.h>

int main() {
    int n, i, j, temp;
    scanf("%d", &n);
    int matrix[n][n];

    // 顺序赋值
    int num = 1;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            matrix[i][j] = num++;
        }
    }

    // 对角线翻转
    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }

    // 左右翻转
    for (i = 0; i < n; i++) {
        for (j = 0; j < n / 2; j++) {
            temp = matrix[i][j];
            matrix[i][j] = matrix[i][n - j - 1];
            matrix[i][n - j - 1] = temp;
        }
    }

    // 输出旋转后的矩阵
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("%4d", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}
C语言实现矩阵旋转90度

原文地址: https://www.cveoy.top/t/topic/nSeq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录