太自由

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  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 }

posted on 2015-12-06 18:22  太自由  阅读(1338)  评论(0编辑  收藏  举报