在C语言中运用全局变量返回函数的数组运算结果(Lu Hongling)

      C语言中,数组可以通过函数的形参或实参输入到函数中, 但运算后返回时就有问题了,因为C语言的函数只能返回一个数,不能返回数组。这个问题可以通过设置全局变量的方式予以解决,请看下面的例题。

例题.  编制函数MT()用以计算一个3*3矩阵的转置,并将结果返回到main函数中。

   1:  #include <stdio.h>
   2:   
   3:  void PM(int x[3][3]);
   4:  void MT(int a[3][3]);
   5:   
   6:  int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
   7:   
   8:  main()
   9:  {
  10:      PM(a);
  11:      MT(a);
  12:      PM(a);
  13:  }
  14:   
  15:  void MT(int a[3][3])
  16:  {
  17:      int i,j,b[3][3];
  18:      for(i=0;i<=2;i++)
  19:      {
  20:          for(j=0;j<=2;j++)
  21:          {
  22:              b[j][i]=a[i][j];
  23:          }
  24:      }
  25:      for(i=0;i<=2;i++)
  26:      {
  27:          for(j=0;j<=2;j++)
  28:          {
  29:              a[i][j]=b[i][j];
  30:          }
  31:      }
  32:  }
  33:   
  34:  void PM(int x[3][3])
  35:  {
  36:      int i,j;
  37:      for(i=0;i<=2;i++)
  38:      {
  39:          for(j=0;j<=2;j++)
  40:          {
  41:              printf("%d ",x[i][j]);
  42:          }
  43:      printf("\n");
  44:      }
  45:  }

程序说明:

      本程序包含3个函数:main();MT() -- 用以求矩阵的转置;PM()-- 打印矩阵;

      第6行: int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

                  定义了一个3*3的全局数组,并对该数组初始化;

      第15行:void MT(int a[3][3])

                  定义了函数MT,并将全局数组a作为其形参;

      第11行:MT(a)

                   主程序调用函数MT后,全局数组的元素被转置。

计算结果:

1 2 3 
4 5 6 
7 8 9 
1 4 7 
2 5 8 
3 6 9 

你可能感兴趣的:(C++,c,函数,数组,返回)