P033 矩阵运算:实现B=A+A’★★

03-程序设计题 软件121, 唐鼎威 1227浏览

所属年份:2011.9;2012.3
编写函数fun,其功能是:实现B=A+A’,即将矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。
例如,输入下面的矩阵:其转置矩阵为:

P033
     
程序输出:

#include <stdio.h>

void  fun ( int a[3][3], int b[3][3])
{

}

main( )   /* 主程序 */
{  int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ;
   int i, j ;

   fun(a, t) ;
   for (i = 0 ; i < 3 ; i++) {
      for (j = 0 ; j < 3 ; j++)
        printf("%7d", t[i][j]) ;
      printf("\n") ;
   }
}

【考点分析】
本题考查:矩阵的操作,如何表示矩阵及其转置矩阵的各个元素。

【解题思路】
行列数相等的二维数组的转置就是行列互换,即转置后的第i行第j列正好对应原矩阵的第j行第i列。本题使用双层循环实现矩阵的转置,并将计算结果存入矩阵B中,外层循环控制矩阵的行下标,内层循环控制矩阵的列下标。

【解题宝典】
若要将矩阵a转置后还存入a中,可用程序:

int i,j,t;
for(i=0;i<N;i++)
   for(j=i;j<N;j++)
      {t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}

注意第2个循环的初值。
若要将矩阵a转置后存入c中:

int i,j;
for(i=0;i<N;i++)
   for(j=0;j<N;j++)
      c[i][j]=a[j][i];

注意数组c和a的下标。

【参考答案】

void  fun ( int a[3][3], int b[3][3])
{
int i,j;
  for(i=0;i<3;i++)
    for(j=0;j<3;j++)
       b[i][j]=a[i][j]+a[j][i];/*把矩阵a加上a的转置,存放在矩阵b中*/
}