1 #include<iostream>
2 using namespace std;
3 struct Juzhen
4 {
5 int hang;
6 int lie;
7 int **b;
8
9
10 };
11
12
13
14 void main(){
15 while(1)
16 {
17 Juzhen A;
18 Juzhen B;
19 Juzhen C;
20
21 while(1){
22 int choice;
23 cout<<"1.矩阵乘法 2.矩阵加法 3矩阵减法"<<endl;
24
25 cin>>choice;
26 if(choice==1)
27 {
28
29 cout<<"请输入你第一个矩阵的行数和列数";
30 cin>>A.hang>>A.lie;
31 cout<<"请输入第二个矩阵的列数";
32 B.hang=A.lie;
33 cin>>B.lie;
34 cout<<"请输入一个"<<A.hang<<"*"<<A.lie<<"的矩阵";
35 A.b=new int*[A.hang]; //分配一个指针数组,将其首地址保存在b中
36
37 for(int i=0;i<A.hang;i++) //为指针数组的每个元素分配一个数组
38 {
39 A.b[i]=new int[A.lie];
40 }
41
42 for(int i=0;i<A.hang;i++)
43 {
44 for(int j=0;j<A.lie;j++)
45 {
46 cin>>A.b[i][j];
47 }
48
49
50 }
51 cout<<"请输入一个"<<B.hang<<"*"<<B.lie<<"的矩阵";
52 B.b=new int*[B.hang]; //分配一个指针数组,将其首地址保存在b中
53
54 for(int i=0;i<B.hang;i++) //为指针数组的每个元素分配一个数组
55 {
56 B.b[i]=new int[B.lie];
57 }
58
59 for(int i=0;i<B.hang;i++)
60 {
61 for(int j=0;j<B.lie;j++)
62 {
63 cin>>B.b[i][j];
64 }
65
66
67 }
68
69
70 C.b=new int*[A.hang]; //分配一个指针数组,将其首地址保存在b中
71
72 for(int i=0;i<A.hang;i++) //为指针数组的每个元素分配一个数组
73 {
74 C.b[i]=new int[B.lie];
75 }
76
77 for(int i=0; i<A.hang; i++)
78 {
79 for(int j=0; j<B.lie; j++)
80 {
81 C.b[i][j]=0;
82 for(int x=0; x<A.lie; x++)
83 {
84 C.b[i][j]=C.b[i][j]+A.b[i][x]*B.b[x][j];
85 }
86 }
87 }
88 cout<<"运算结果是";
89 for(int i=0; i<A.hang; i++)
90 {
91 for(int j=0; j<B.lie; j++)
92 {
93 cout<<C.b[i][j]<<" ";
94 }
95 cout<<endl;
96 }
97 }else if(choice==2)
98 {
99
100
101 cout<<"请输入矩阵的行数和列数";
102 cin>>A.hang>>A.lie;
103 B.hang=A.hang;
104 B.lie=A.lie;
105 C.hang=A.hang;
106 C.lie=A.lie;
107
108
109 cout<<"请输入一个"<<A.hang<<"*"<<A.lie<<"的矩阵";
110 A.b=new int*[A.hang]; //分配一个指针数组,将其首地址保存在b中
111
112 for(int i=0;i<A.hang;i++) //为指针数组的每个元素分配一个数组
113 {
114 A.b[i]=new int[A.lie];
115 }
116
117 for(int i=0;i<A.hang;i++)
118 {
119 for(int j=0;j<A.lie;j++)
120 {
121 cin>>A.b[i][j];
122 }
123
124
125 }
126 cout<<"请输入一个"<<B.hang<<"*"<<B.lie<<"的矩阵";
127 B.b=new int*[B.hang]; //分配一个指针数组,将其首地址保存在b中
128
129 for(int i=0;i<B.hang;i++) //为指针数组的每个元素分配一个数组
130 {
131 B.b[i]=new int[B.lie];
132 }
133
134 for(int i=0;i<B.hang;i++)
135 {
136 for(int j=0;j<B.lie;j++)
137 {
138 cin>>B.b[i][j];
139 }
140
141
142 }
143
144 C.b=new int*[A.hang]; //分配一个指针数组,将其首地址保存在b中
145
146 for(int i=0;i<A.hang;i++) //为指针数组的每个元素分配一个数组
147 {
148 C.b[i]=new int[B.lie];
149 }
150
151 for(int i=0; i<A.hang; i++)
152 {
153 for(int j=0; j<B.lie; j++)
154 {
155 C.b[i][j]=0;
156
157
158 C.b[i][j]=A.b[i][j]+B.b[i][j];
159
160 }
161 }
162 cout<<"运算结果是";
163 for(int i=0; i<A.hang; i++)
164 {
165 for(int j=0; j<B.lie; j++)
166 {
167 cout<<C.b[i][j]<<" ";
168 }
169 cout<<endl;
170 }
171
172 }else if(choice==3)
173 {
174 cout<<"请输入矩阵的行数和列数";
175 cin>>A.hang>>A.lie;
176 B.hang=A.hang;
177 B.lie=A.lie;
178 C.hang=A.hang;
179 C.lie=A.lie;
180
181
182 cout<<"请输入一个"<<A.hang<<"*"<<A.lie<<"的矩阵";
183 A.b=new int*[A.hang]; //分配一个指针数组,将其首地址保存在b中
184
185 for(int i=0;i<A.hang;i++) //为指针数组的每个元素分配一个数组
186 {
187 A.b[i]=new int[A.lie];
188 }
189
190 for(int i=0;i<A.hang;i++)
191 {
192 for(int j=0;j<A.lie;j++)
193 {
194 cin>>A.b[i][j];
195 }
196
197
198 }
199 cout<<"请输入一个"<<B.hang<<"*"<<B.lie<<"的矩阵";
200 B.b=new int*[B.hang]; //分配一个指针数组,将其首地址保存在b中
201
202 for(int i=0;i<B.hang;i++) //为指针数组的每个元素分配一个数组
203 {
204 B.b[i]=new int[B.lie];
205 }
206
207 for(int i=0;i<B.hang;i++)
208 {
209 for(int j=0;j<B.lie;j++)
210 {
211 cin>>B.b[i][j];
212 }
213
214
215 }
216
217 C.b=new int*[A.hang]; //分配一个指针数组,将其首地址保存在b中
218
219 for(int i=0;i<A.hang;i++) //为指针数组的每个元素分配一个数组
220 {
221 C.b[i]=new int[B.lie];
222 }
223
224 for(int i=0; i<A.hang; i++)
225 {
226 for(int j=0; j<B.lie; j++)
227 {
228 C.b[i][j]=0;
229
230
231 C.b[i][j]=A.b[i][j]-B.b[i][j];
232
233 }
234 }
235 cout<<"运算结果是";
236 for(int i=0; i<A.hang; i++)
237 {
238 for(int j=0; j<B.lie; j++)
239 {
240 cout<<C.b[i][j]<<" ";
241 }
242 cout<<endl;
243 }
244 }else if(choice==4)
245 {
246 break;
247 }
248
249
250
251
252 }
253
254 }
255 }