C语言 : 矩阵转置 (二维数组)
C语言:距阵转置(二维数组)【基本的二维数组的输入和输出】题目描述:输入N*N的矩阵,输出它的转置矩阵。矩阵的转置操作,即把矩阵的行元素变为列元素、列元素变为行元素的过程。输入:第一行为整数N,接着是一个N*N的矩阵。输出:转置矩阵。
文章共684字 · 阅读需要大约3分钟
一键AI生成摘要,助你高效阅读
问答
·
题目描述:
输入N*N的矩阵,输出它的转置矩阵。矩阵的转置操作,即把矩阵的行元素变为列元素、列元素变为行元素的过程。
输入:
第一行为整数N,接着是一个N*N的矩阵。
输出:
转置矩阵。
输入样例 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语句,输出的结果将会在一行,而不是像题目要求的矩阵。)【作者曾在这里错了好久都没想出来,还是同学帮忙才知道的】
- 记得用到二维数组,几乎每一步都要循环。(二维数组的一切都和一维数组不太一样)
更多推荐
已为社区贡献1条内容
所有评论(0)