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

旧城冷巷雨未停 提交于 2020-03-02 08:47:40

      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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!