C语言程序错误分析与修正:矩阵转置相加
#include <stdio.h> #define m 3 #define n 3 void main() { //begin*** int a[m][n],b[n][m],i,j,c[m][n]={0,0,0,0,0,0,0,0,0}; for(i=0;i<3;i++) for(j=0;j<3;j++) { scanf('%d',&a[i][j]); } for(i=0;i<3;i++) for(j=0;j<3;j++) c[m][n]=a[i][j]+b[j][i]; printf('%7d',c[m][n]); //end*** } 这段程序有什么问题,给出修改后程序内容:问题:b数组未定义,c数组计算错误,printf语句错误。
修改后程序:
#include <stdio.h> #define m 3 #define n 3 void main() { int a[m][n], b[n][m], c[m][n] = {0}; int i, j; printf('请输入矩阵A:\n'); for(i = 0; i < m; i++) for(j = 0; j < n; j++) scanf('%d', &a[i][j]); printf('请输入矩阵B:\n'); for(i = 0; i < n; i++) for(j = 0; j < m; j++) scanf('%d', &b[i][j]); printf('矩阵A和B的转置矩阵相加结果为:\n'); for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { c[i][j] = a[i][j] + b[j][i]; printf('%7d', c[i][j]); } printf('\n'); } }
修改后程序解释:
-
定义了b数组,并初始化了c数组。
-
增加了输入矩阵B的代码。
-
修改了计算c数组的代码,将错误的c[m][n]改为c[i][j]。
-
修改了printf语句,使其按矩阵的形式输出结果。
原文地址: https://www.cveoy.top/t/topic/nKa5 著作权归作者所有。请勿转载和采集!