#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++) b[i][j]=a[j][i]; for(i=0;j<3;i++) for(j=0;j<3;j++) c[m][n]=a[i][j]+b[i][j]; printf('%7d',c[m][n]); //end*** }

指出这段程序的问题,并进行修改内容:问题:

  1. 在第三个for循环中,变量i和j的初始化写反了,应该是for(i=0;i<3;i++) for(j=0;j<3;j++),而不是for(i=0;j<3;i++) for(j=0;i<3;j++)。

  2. 在第三个for循环中,数组c的下标应该是c[i][j],而不是c[m][n]。

  3. 在第三个for循环中,应该是将a和b数组对应位置的元素相加,而不是将a数组的元素加上b数组的元素。

修改后的程序如下:

#include <stdio.h> #define m 3 #define n 3 void main() { //begin*** int a[m][n], b[n][m], c[m][n] = {0}; int i, j; 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++) b[i][j] = a[j][i]; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) c[i][j] = a[i][j] + b[i][j]; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) printf('%7d', c[i][j]); printf(' '); } //end*** }

C语言矩阵转置并相加:代码分析与优化

原文地址: https://www.cveoy.top/t/topic/nKbg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录