题目描述:
输入N*N的矩阵,输出它的转置矩阵。矩阵的转置操作,即把矩阵的行元素变为列元素、列元素变为行元素的过程。
输入:
第一行为整数N,接着是一个N*N的矩阵。
输出:
转置矩阵。
输入样例 1输出样例 1 2
1 2
1 2 1 1
2 2
解题思路:
输入二维数组。(用到for循环)将二维数组的行与列互换。(需要两个二维数组)输出二维数组。(for循环)
解法:
#include int main(void) { int m,j,i; scanf("%d",&m); int a[m][m]; int b[m][m];
/* 二维数组的赋值 */ for(i=0;i scanf("%d",&a[i][j]); } }
/* 行,列的转化 */ for(i=0;i b[j][i]=a[i][j]; } }
/* 输出距阵 */ for(j=0;j if(i==m-1&&j!=m-1) printf("%d\n",b[j][i]); else printf("%d ",b[j][i]); } } return 0; }
小结:
做本题的关键点在于是否了解二维数组,知道二维数组的常用赋值方法(循环)。输出结果时要注意输出的格式(这里要特别小心,如果没有if语句,输出的结果将会在一行,而不是像题目要求的矩阵。)【作者曾在这里错了好久都没想出来,还是同学帮忙才知道的】记得用到二维数组,几乎每一步都要循环。(二维数组的一切都和一维数组不太一样)
|