C语言实现矩阵转置交换行列输出结果错误如何解决?
问题根因
转置赋值逻辑正确,错误出在转置矩阵的输出循环逻辑:
转置后的reverseMatrixC尺寸为[N][M](对应N行M列),但输出时仍沿用了原矩阵的循环条件(外层遍历M行、内层遍历N列),和转置矩阵的实际尺寸不匹配,导致输出结果不符合预期。
修正方案
将转置矩阵的输出代码替换为以下内容即可:
printf("Reverse columns and rows in matrix C: \n"); for (i=0; i<N; i++){ for (j=0; j<M; j++){ printf("%d ", reverseMatrixC[i][j]); } printf("\n"); }
可选优化点
当前数值校验逻辑仅输出错误提示,未终止程序,若输入不符合0<N且M≤10的数值,后续矩阵操作仍会异常执行,建议在校验不通过的分支添加终止逻辑:
else { printf("Please enter valid number, which is 0 < N and M <= 10!"); return 1; // 校验不通过直接结束程序 }
内容的提问来源于stack exchange,提问作者MeowMeowpram
相关产品推荐
相关产品推荐

