【问题描述】 输入矩阵阶数,最大10阶。输入矩阵元素值,要求为正整数。以反对角线为界翻转两个三角区域的元素值,反对角线上元素不变。反对角线指矩阵右上角到左下角的斜线。 【输入形式】 第一行,输入一个正整数,范围在2~10.。超界则结束程序。 以下各行,输入矩阵元素值,各元素用一个空格隔开 【输出形式】 翻转后的矩阵。各元素占3位宽度用C语言
时间: 2024-04-01 16:35:47 浏览: 82
以下是C语言实现的代码:
```
#include <stdio.h>
int main() {
int n, matrix[10][10], i, j, temp;
// 读入矩阵阶数
printf("请输入矩阵阶数:\n");
scanf("%d", &n);
if (n < 2 || n > 10) {
printf("矩阵阶数超出范围!\n");
return 0;
}
// 读入矩阵元素值
printf("请输入矩阵元素值:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 翻转
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (i + j < n - 1) {
// 翻转左下角的元素
temp = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][n - 1 - i];
matrix[n - 1 - j][n - 1 - i] = temp;
} else if (i + j > n - 1) {
// 翻转右上角的元素
temp = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][n - 1 - i];
matrix[n - 1 - j][n - 1 - i] = temp;
}
// 反对角线上元素不变
}
}
// 输出矩阵
printf("翻转后的矩阵为:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%3d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
输入示例:
```
请输入矩阵阶数:
4
请输入矩阵元素值:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
```
输出示例:
```
翻转后的矩阵为:
16 7 3 1
14 11 8 2
15 10 6 4
13 9 5 12
```
阅读全文