题目描述:
输入N*N的矩阵,输出它的转置矩阵。矩阵的转置操作,即把矩阵的行元素变为列元素、列元素变为行元素的过程。
输入:
第一行为整数N,接着是一个N*N的矩阵。文章来源:https://www.toymoban.com/news/detail-813047.html
输出:
转置矩阵。文章来源地址https://www.toymoban.com/news/detail-813047.html
输入样例 1 | 输出样例 1 |
2 1 2 1 2 |
1 1 2 2 |
解题思路:
- 输入二维数组。(用到for循环)
- 将二维数组的行与列互换。(需要两个二维数组)
- 输出二维数组。(for循环)
解法:
#include<stdio.h>
int main(void)
{
int m,j,i;
scanf("%d",&m);
int a[m][m];
int b[m][m];
/* 二维数组的赋值 */
for(i=0;i<m;i++){
for(j=0;j<m;j++){
scanf("%d",&a[i][j]);
}
}
/* 行,列的转化 */
for(i=0;i<m;i++){
for(j=0;j<m;j++){
b[j][i]=a[i][j];
}
}
/* 输出距阵 */
for(j=0;j<m;j++){
for(i=0;i<m;i++){
if(i==m-1&&j!=m-1)
printf("%d\n",b[j][i]);
else
printf("%d ",b[j][i]);
}
}
return 0;
}
小结:
- 做本题的关键点在于是否了解二维数组,知道二维数组的常用赋值方法(循环)。
- 输出结果时要注意输出的格式(这里要特别小心,如果没有if语句,输出的结果将会在一行,而不是像题目要求的矩阵。)【作者曾在这里错了好久都没想出来,还是同学帮忙才知道的】
- 记得用到二维数组,几乎每一步都要循环。(二维数组的一切都和一维数组不太一样)
到了这里,关于C语言 : 矩阵转置 (二维数组)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!