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 }