#include <stdio.h>

int rotateMatrix(int matrix1[10][10], int matrix2[10][10], int n);

int main() { int n; int matrix1[10][10], matrix2[10][10];

printf("请输入矩阵的阶数N:");
scanf("%d", &n);

printf("请输入第一个矩阵:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        scanf("%d", &matrix1[i][j]);
    }
}

printf("请输入第二个矩阵:\n");
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        scanf("%d", &matrix2[i][j]);
    }
}

int angle = rotateMatrix(matrix1, matrix2, n);
printf("旋转角度:%d\n", angle);

return 0;

}

int rotateMatrix(int matrix1[10][10], int matrix2[10][10], int n) { int angle = -1; int temp[10][10];

// 顺时针旋转90度
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        temp[i][j] = matrix1[n - j - 1][i];
    }
}

// 判断是否与第二个矩阵相等
int equal = 1;
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        if (temp[i][j] != matrix2[i][j]) {
            equal = 0;
            break;
        }
    }
    if (!equal) {
        break;
    }
}

if (equal) {
    angle = 90;
    return angle;
}

// 顺时针旋转180度
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        temp[i][j] = matrix1[n - i - 1][n - j - 1];
    }
}

// 判断是否与第二个矩阵相等
equal = 1;
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        if (temp[i][j] != matrix2[i][j]) {
            equal = 0;
            break;
        }
    }
    if (!equal) {
        break;
    }
}

if (equal) {
    angle = 180;
    return angle;
}

// 顺时针旋转270度
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        temp[i][j] = matrix1[j][n - i - 1];
    }
}

// 判断是否与第二个矩阵相等
equal = 1;
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        if (temp[i][j] != matrix2[i][j]) {
            equal = 0;
            break;
        }
    }
    if (!equal) {
        break;
    }
}

if (equal) {
    angle = 270;
    return angle;
}

return angle;

}

C语言判断矩阵旋转关系 - 旋转角度检测

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

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