C语言实现矩阵相乘

    

 1 #include "stdio.h"
 2 #include "stdlib.h"
 3 #include "time.h"
 4 #define random(x) (rand()%x)
 5 
 6 int main ()
 7 {   
 8     int m,l,p,q;
 9     printf("输入第一个矩阵的维数m和l:");
10     scanf("%d%d",&m,&l);
11     printf("输入第二个矩阵的维数p和q:");
12     scanf("%d%d",&p,&q);
13     while (l!=p)
14     {
15         printf("两个矩阵不匹配,不能进行相乘运算,请重新输入...\n\n");
16         printf("输入第一个矩阵的维数m和l:\n");
17         scanf("%d%d",&m,&l);
18         printf("输入第二个矩阵的维数p和q:\n");
19         scanf("%d%d",&p,&q);
20     }
21     int a[1000][1000]={0}, b[1000][1000]={0},sum=0;
22     int i,j,k=0;
23     
24     for (i=0;i<m;i++)
25     {
26         for (j=0;j<l;j++)
27         {
28             a[i][j]=(int)random(10);
29         }
30     }
31     printf("随机矩阵a是:\n");
32     for (i=0;i<m;i++)
33     {
34         for (j=0;j<l;j++)
35         {
36             printf("%d ",a[i][j]);
37         }
38         printf("\n");
39     }
40 
41     for (i=0;i<p;i++)
42     {
43         for (j=0;j<q;j++)
44         {
45             b[i][j]=(int)random(10);
46         }
47     }
48     printf("随机矩阵b是:\n");
49     for (i=0;i<p;i++)
50     {
51         for (j=0;j<q;j++)
52         {
53             printf("%d ",b[i][j]);
54         }
55         printf("\n");
56     }
57     printf("ab相乘结果为:\n");
58     
59     for (i=0;i<m;i++)
60     {
61         while (k<q)
62         {
63             for (j=0;j<q;j++)
64             {
65                 sum = a[i][j]*b[j][k]+sum;     
66             }   
67             printf("%d ",sum);
68             k++;
69             sum=0;
70         }
71         k=0;
72         printf("\n");
73     }
74 }

 

posted @ 2020-07-08 01:28  ascertain  阅读(1519)  评论(0编辑  收藏  举报