gpt4 book ai didi

c - 打印转置的程序。程序不工作

转载 作者:行者123 更新时间:2023-11-30 16:40:25 26 4
gpt4 key购买 nike

我编写了以下程序来打印矩阵的转置。但我没有得到想要的结果。

#include <stdio.h>
#include <conio.h>

int main()
{
printf("Enter the number of rows");
int r;
scanf("%d",&r);
printf("Enter the number of columns");
int c;
scanf("%d",&c);
int x[r][c];
int i,j;
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("Enter the values");
scanf("%d",&x[i][j]);
}
}
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%d\n",x[i][j]);
}
}
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
if (i!=j)
{
int k=x[i][j];
x[i][j]=x[j][i];
x[j][i]=k;
}
}
}
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%d\n",x[i][j]);
}
}
return 0;
}

我相信我的代码背后的逻辑是正确的,但我仍然没有得到想要的结果。请在这件事上给予我帮助。输入-输出示例

Input elements in matrix: 
1 2 3
4 5 6
7 8 9
Output

Transpose:
1 4 7
2 5 8
3 6 9

最佳答案

问题是您将值存储在同一个数组中。

int k=x[i][j];
x[i][j]=x[j][i];
x[j][i]=k;

假设矩阵是 3x3。在第一次运行循环时,(0,0)、(0,1)、(0,2) 的值将被 (0,0)、(1,0)、(2,0) 互换。

但是当 i 为 1 时,(1,0) 将再次被 (0,1) 替换。类似地,当 i 为 2 时,(2,0) 与 (0,2) 对应;当 i 为 3 时,则 (3,0) 与 (0,3) 对应。

所有情况都会发生这种情况。

要解决此问题,您必须创建一个新矩阵并在其中分配值。

用此代码替换转置逻辑

 for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{


transpose[i][j]=x[j][i];

}
}

关于c - 打印转置的程序。程序不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46653109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com