本题目要求读入1个n×n的矩阵A,然后输出该矩阵正对角线与反对角线互换后的矩阵。具体过程如下图所示:
输入格式:
输入在一行中给出1个不超过1000的正整数n。
输出格式:
输出对角线互换后的矩阵。
输入样例:
3
16 5 7
30 2 3
-8 0 5
输出样例:
在这里给出相应的输出。例如:
7 5 16
30 2 3
5 0 -8
C语言:
#include <stdio.h>
#define N 1000
void swap(int a[N][N], int x, int y1, int y2) {
int temp = a[x][y1];
a[x][y1] = a[x][y2];
a[x][y2] = temp;
}
int main() {
int n;
scanf("%d", &n);
int a[N][N];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
for (int i = 0; i < n; i++) {
swap(a, i, i, n - 1 - i);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (j == 0)
printf("%d", a[i][j]);
else
printf(" %d", a[i][j]);
}
if (i < n - 1)
printf("\n");
}
return 0;
}
-
包含头文件和宏定义:
cCopy code
#include <stdio.h> #define N 1000
- 使用
#include <stdio.h>
导入标准输入输出的头文件。 - 通过
#define
定义宏N
,表示数组的最大大小。
- 使用
-
交换函数的设计:
cCopy code
void swap(int a[N][N], int x, int y1, int y2) { int temp = a[x][y1]; a[x][y1] = a[x][y2]; a[x][y2] = temp; }
- 定义了一个交换函数
swap
,接受一个二维数组a
,以及两个列索引y1
和y2
进行交换。 - 使用了中间变量
temp
进行值的交换。
- 定义了一个交换函数
-
主函数的设计:
cCopy code
int main() { int n; scanf("%d", &n); int a[N][N]; // 输入数组元素 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%d", &a[i][j]); } } // 进行交换 for (int i = 0; i < n; i++) { swap(a, i, i, n - 1 - i); } // 输出交换后的数组 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (j == 0) printf("%d", a[i][j]); else printf(" %d", a[i][j]); } if (i < n - 1) printf("\n"); } return 0; }
- 使用
scanf
函数接受用户输入的整数n
。 - 使用嵌套的循环,通过
scanf
输入二维数组a
的元素。 - 调用交换函数
swap
进行数组元素的交换。 - 使用
printf
输出交换后的数组。
- 使用