请编写函数fun(),该函数的功能是:实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main()函数中输出。 例如,输入下面矩阵: 1 2 3 4 5 6 7 8 9

admin2010-09-14  24

问题 请编写函数fun(),该函数的功能是:实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main()函数中输出。
   例如,输入下面矩阵:
   1    2    3
   4    5    6
   7    8    9
   其转置矩阵为:
   1    4    7
   2    5    8
   3    6    9
   则程序输出:
   2     6    10
   6    10    14
   10   14    18
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
   试题程序:
   #include <stdio. h>
   #include<conio, 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;
     clrscr ();
     fun (a,t);
     for(i=0; i<3; i++)
       { for (j=0; j<3; j++)
           printf ("%7d",t [j] );
        printf ("\n");
       }
   }

选项

答案 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中*/ }

解析 在《线性代数》里面有矩阵转置的概念,行列数相等的二维数组的转置就是行列互换。即转置后的第i行第j列正好对应原矩阵的第j行第i列。  
   若要将矩阵a转置后还存入a中可用程序:
   int i,j,t;
   for(i=0;i<N;i++)
   for(j=i;j<N;j++)
   {t=a [j];a [j]=a[j] ;a[j] [ii=t; }
   注意第2个循环的初值。
   若要将矩阵a转置后存入c中:
   int i,j;
   for(i=0;i<N;i++)
   for(j=0;j<N;j++)
   c [j]=a[j] ;
   注意数组c和a的下标。
转载请注明原文地址:https://kaotiyun.com/show/TWID777K
0

相关试题推荐
最新回复(0)