首页 > 编程语言 > 详细

矩阵相乘(C语言实现)

时间:2016-10-22 07:15:18      阅读:135      评论:0      收藏:0      [点我收藏+]

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

矩阵相乘程序的简单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语言实现)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!