码迷,mamicode.com
首页 > 编程语言 > 详细

矩阵相乘(C语言实现)

时间:2016-10-22 07:17:08      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:--   赋值   void   int   .com   需要   return   分享   bsp   

---恢复内容开始---

矩阵相乘程序的简单C语言实现:

  这是矩阵相乘的公式:

技术分享

 

  源代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define M 100
 4 
 5 int main(void)
 6 {
 7     int i,j,k,matrix1[M][M],matrix2[M][M],row1,col1,row2,col2,matrix[M][M];   
 8     /*为需要相乘的两个矩阵赋值:*/ 
 9     printf("输入第一个矩阵的行数和列数:"); 
10     scanf("%d%d",&row1,&col1);
11     printf("输入第一个矩阵:\n");
12     for(i=0;i<row1;i++){
13         for(j=0;j<col1;j++){
14             scanf("%d",&matrix1[i][j]); 
15         } 
16     } 
17     printf("输入第二个矩阵的行数和列数:");
18     scanf("%d%d",&row2,&col2);
19     printf("输入第二个矩阵:\n");
20     for(i=0;i<row2;i++){
21         for(j=0;j<col2;j++){
22             scanf("%d",&matrix2[i][j]); 
23         } 
24     }
25     /*初始化matrix:*/
26     for(i=0;i<row1;i++){
27         for(j=0;j<col2;j++){
28             matrix[i][j]=0; 
29         } 
30     } 
31     
32     if(col1!=row2){
33         fprintf(stderr,"enput error!");
34         exit(EXIT_FAILURE); 
35     } 
36     printf("The result:\n"); 
37     for(i=0;i<row1;i++){
38         for(j=0;j<col2;j++){
39             for(k=0;k<col1;k++){
40                 matrix[i][j]=matrix[i][j]+matrix1[i][k]*matrix2[k][j]; 
41             } 
42         } 
43     }
44 
45     for(i=0;i<row1;i++){
46         for(j=0;j<col2;j++){
47             printf("%d ",matrix[i][j]); 
48         } 
49         printf("\n"); 
50     } 
51     return 0;
52 } 

  程序中先初始化矩阵,然后判断第一个矩阵的列数和第二个矩阵的行数是否相等,如果不相等则直接提示错误后退出程序

  相等的话则利用公式计算乘积,结果赋给matrix二维数组。

  最后用for循环打印出结果验证

  eg:

技术分享

  由于该矩阵是用二维数组存储,并不是用链表或其他结构,效率可能较低,尤其是对于稀疏矩阵的情况。

    程序在devcpp中编译通过。

                                                   2016-10-21     23:49:14

矩阵相乘(C语言实现)

标签:--   赋值   void   int   .com   需要   return   分享   bsp   

原文地址:http://www.cnblogs.com/dtdyq/p/5986454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!