题目链接:
解题思路:
1. 将矩阵的行列互换得到的新矩阵称为转置矩阵
2. 首先创建一个二维数组存放输入的矩阵数列,常见的错误做法就是直接在放入数据的二维数组中将行号和列号翻转,但是因为二维数组的存储结构,这样做实际上并没有正真的达到转置,这样操作下来,会有0的产生,因为翻转后的存储结构并没有改变
所以,只需要在打印时不光要改变行数和列数,也需要改变数组的下标数(这一点是要通过仔细观察题目中所给数据的规律得出的)
3. 二维数组的输入不需要在每一行结束时添加 printf ( " \n " ) 这一行代码
但是二维数组的输出却需要在每一行结束时添加这一行代码
答案代码:
#include <stdio.h>
int main ()
{
int data1 = 0,data2 = 0;
scanf("%d %d\n",&data1,&data2);
int arr[10][10] = {0};
int i = 0;
for (i = 0;i < data1;i++)
{
int j = 0;
for (j = 0;j < data2;j++)
{
scanf("%d ",&arr[i][j]);
}
} //数据输入
int m = 0;
for (m = 0;m < data2;m++)
{
int n = 0;
for (n = 0;n < data1;n++)
{
printf("%d ",arr[data1][data2]); //注意数组的下标也要颠倒过来
}
printf("\n"); //这里要打印换行符
}
return 0;
}