1 //矩阵的基本操作:矩阵相加,矩阵相乘,矩阵转置
2 #include<stdio.h>
3 #include<stdlib.h>
4 #define M 2
5 #define N 3
6 #define P 4
7 int main()
8 {
9 //函数声明
10 void JuZhenXiangJia();
11 void JuZhenXiangCheng();
12 void JuZhenZhuanZhi();
13 JuZhenZhuanZhi();
14 JuZhenXiangJia();
15 JuZhenXiangCheng();
16 system("pause");
17 return 0;
18 }
19 void JuZhenXiangJia()
20 {//两个二维数组相加
21 int i,j;
22 int A[M][N],B[M][N],C[M][N];
23 printf("请输入矩阵A的元素:\n");
24 for(i=0;i<M;i++)
25 {
26 for(j=0;j<N;j++)
27 {
28 scanf("%d",&A[i][j]);
29 }
30 }
31 printf("\n矩阵A如下所示:\n");
32 for(i=0;i<M;i++)
33 {
34 for(j=0;j<N;j++)
35 {
36 printf("%3d",A[i][j]);
37 }
38 printf("\n");
39 }
40 printf("\n请输入矩阵B的元素:\n");
41 for(i=0;i<M;i++)
42 {
43 for(j=0;j<N;j++)
44 {
45 scanf("%d",&B[i][j]);
46 }
47 }
48 printf("\n矩阵B如下:\n");
49 for(i=0;i<M;i++)
50 {
51 for(j=0;j<N;j++)
52 {
53 printf("%3d",B[i][j]);
54 }
55 printf("\n");
56 }
57 printf("\n");
58 //矩阵A和矩阵B的和放在矩阵C中
59 for(i=0;i<M;i++)
60 {
61 for(j=0;j<N;j++)
62 {
63 C[i][j] = A[i][j]+B[i][j];
64 }
65 }
66 printf("\n矩阵C如下:\n");
67 for(i=0;i<M;i++)
68 {
69 for(j=0;j<N;j++)
70 {
71 printf("%3d",C[i][j]);
72 }
73 printf("\n");
74 }
75 printf("\n");
76 }
77
78 void JuZhenXiangCheng()
79 {//两个二维数组相乘
80 int i,j,k;
81 int A[M][N],B[N][P],C[M][P];
82 printf("请输入矩阵A的元素:\n");
83 for(i=0;i<M;i++)
84 {
85 for(j=0;j<N;j++)
86 {
87 scanf("%d",&A[i][j]);
88 }
89 }
90 printf("\n矩阵A如下所示:\n");
91 for(i=0;i<M;i++)
92 {
93 for(j=0;j<N;j++)
94 {
95 printf("%3d",A[i][j]);
96 }
97 printf("\n");
98 }
99 printf("\n请输入矩阵B的元素:\n");
100 for(i=0;i<N;i++)
101 {
102 for(j=0;j<P;j++)
103 {
104 scanf("%d",&B[i][j]);
105 }
106 }
107 printf("\n矩阵B如下:\n");
108 for(i=0;i<N;i++)
109 {
110 for(j=0;j<P;j++)
111 {
112 printf("%3d",B[i][j]);
113 }
114 printf("\n");
115 }
116 printf("\n");
117 //矩阵A和矩阵B相乘,积放在矩阵C中
118 for(i=0;i<M;i++)
119 {
120 for(j=0;j<P;j++)
121 {
122 C[i][j] = 0;
123 for(k=0;k<N;k++)
124 {
125 C[i][j] = C[i][j]+A[i][k]*B[k][j];
126 }
127 }
128 }
129 printf("\n矩阵C如下:\n");
130 for(i=0;i<M;i++)
131 {
132 for(j=0;j<P;j++)
133 {
134 printf("%5d",C[i][j]);
135 }
136 printf("\n");
137 }
138 printf("\n");
139 }
140
141 void JuZhenZhuanZhi()
142 {//矩阵的转置
143 int i,j;
144 int A[M][N],B[N][M];
145 printf("请输入矩阵A的元素:\n");
146 for(i=0;i<M;i++)
147 {
148 for(j=0;j<N;j++)
149 {
150 scanf("%d",&A[i][j]);
151 }
152 }
153 printf("\n矩阵A如下所示:\n");
154 for(i=0;i<M;i++)
155 {
156 for(j=0;j<N;j++)
157 {
158 printf("%3d",A[i][j]);
159 }
160 printf("\n");
161 }
162 //矩阵转置为矩阵B
163 for(i=0;i<M;i++)
164 {
165 for(j=0;j<N;j++)
166 {
167 B[j][i] = A[i][j];
168 }
169 }
170 printf("转置后得到的矩阵B为:\n");
171 for(i=0;i<N;i++)
172 {
173 for(j=0;j<M;j++)
174 {
175 printf("%3d",B[i][j]);
176 }
177 printf("\n");
178 }
179 }
![]()