C:转置矩阵,分割错误

标签 c arrays matrix transpose

我在处理教科书上的矩阵转置问题时遇到了一些麻烦 学习C语言。

当代码运行时,它会输出大量任意数字,后跟“段错误(核心转储)”。

在查看类似问题的其他答案时,大多数都涉及指针/标志,但本书尚未达到该阶段,因此问题应该在没有它们的情况下解决。

问。编写一个函数 transposeMatrix,它将 4x5 矩阵和 5x4 矩阵作为参数。让函数转置 4x5 矩阵并将结果存储在 5x4 矩阵中。还编写了一个主例程来测试该功能。

#include <stdio.h>

void transposeMatrix (int matrix1[4][5], int matrix2[5][4])
{
int i, j;

for(i = 0; i < 4; ++i) {
    for(i = 0; i < 5; ++i) {
        matrix2[j][i] = matrix1[i][j];
    }
}

for(i = 0; i < 5; ++i) {
    for(j = 0; j < 4; ++i) {
        printf("%i ", matrix2[i][j]);
    }
    printf("\n");
}
}

int main (void) 
{
void transposeMatrix (int matrix1[4][5], int matrix2[5][4]);
int imatrix2[5][4]; 

int imatrix1[4][5] = 
  { 
    {5, 6, 7, 8, 9},
    {1, 2, 3, 4, 5},
    {5, 4, 3, 2, 1},
    {9, 8, 7, 6, 5}
  };


transposeMatrix(imatrix1, imatrix2);

return 0;
}

最佳答案

for(i = 0; i < 4; ++i) {
    for(i = 0; i < 5; ++i) {
        matrix2[j][i] = matrix1[i][j];
    }
}

这里的内循环计数器应该是j,但你已经使用了i,它也在制作

matrix2[j][i] = matrix1[i][j];

该语句使用 j 的未初始化值,这会导致未定义的行为

关于C:转置矩阵,分割错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47131688/

相关文章:

c - 如何用C关闭GTK窗口

c - 程序不会打印矩阵

java - 有人可以告诉我一个好的依赖矩阵是什么样子并说明原因吗?

c++ - 2x2 自邻(埃尔米特)矩阵的对角化

c - ARM Cortex-M3 上的 ELF 重定位

c - `-pedantic` 生成的这个编译器警告是什么意思?

c - 写入关闭前不可见的文件; fflush(stdout) 无效

javascript - JSON 数据到 Javascript 数组未定义

Java - 将 byte[] 转换为 double[],反之亦然

javascript - 清除数组中的空元素