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 }