题干:
本题目要求读入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
题解:
本题是一道二维数组应用题
首先先输入一个整数n,以此来定义一个二维数组a[n][n]
遍历数组输入二维数组元素
然后是本题的核心,先遍历数组,找到对角线元素( if(i==j) )将其与该行列数和为n-1的元素互换,则成功交换主对角线与副对角线。(换成行同理)
最后遍历输出数组,注意控制空格和回车的输出。
代码如下:
#include <stdio.h>
int main(void)
{
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]);
}
}
int temp;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j){
temp=a[i][j];
a[i][j]=a[i][n-j-1];
a[i][n-j-1]=temp;
}
}
}
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;
}