用C语言写:【问题描述】 输入矩阵阶数,最大10阶。输入矩阵元素值,要求为正整数。以反对角线为界翻转两个三角区域的元素值,反对角线上元素不变。反对角线指矩阵右上角到左下角的斜线。 【输入形式】 第一行,输入一个正整数,范围在2~10.。超界则结束程序。 以下各行,输入矩阵元素值,各元素用一个空格隔开 【输出形式】 翻转后的矩阵。各元素占3位宽度 【样例输入】 4 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 【样例输出】 7 6 5 4 6 5 4 3 5 4 3 2 4 3 2 1
时间: 2024-01-04 15:03:15 浏览: 116
好的,以下是用C语言编写的程序:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入一个正整数n(范围在2~10):");
scanf("%d", &n);
if (n < 2 || n > 10) {
printf("输入超界,程序结束。\n");
return 0;
}
int matrix[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i + j < n - 1) {
int temp = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][n - 1 - i];
matrix[n - 1 - j][n - 1 - i] = temp;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%3d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
程序中,首先通过 `scanf` 函数获取用户输入的整数 `n`,并进行范围判断。然后定义一个 `n` 行 `n` 列的数组 `matrix`,用于存储用户输入的矩阵元素。接着使用双重循环,将用户输入的矩阵元素一一存储到 `matrix` 数组中。再使用双重循环,遍历矩阵中反对角线上、左下角、右上角的元素,进行值交换,从而实现矩阵的翻转。最后再次使用双重循环,将翻转后的矩阵按照题目要求输出即可。
阅读全文