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
来源:oschina
链接:https://my.oschina.net/u/588967/blog/73505