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

C语言学习 - 0006 行列式乘法

时间:2015-11-20 21:48:59      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 void main()
 4 {
 5     void read(int* m,int* n);
 6     int* ptable(int m,int n);
 7     int* math(int m1,int n1,int n2,int* num_1,int* num_2);
 8     void dyjz(int m,int n,int* num_1);
 9     int m1=0,n1=0;
10     int m2=0,n2=0;
11     
12     read(&m1,&n1);                            /*读出m*n行列*/
13     int* num_1=ptable(m1,n1);                /*读取行列式1*/
14     read(&m2,&n2);
15     int* num_2=ptable(m2,n2);                /*读取行列式2*/
16 
17     if(m2!=n1){                                /*判断正误*/
18             printf("输入错误");
19             while(getchar()!=d)
20                 getchar();
21             return;
22     }
23 
24     int* num_result=math(m1,n1,n2,num_1,num_2);    /*计算并返回结果*/
25     dyjz(m1,n2,num_result);
26 
27     while(getchar()!=d)
28         getchar();
29 }
30 void read(int* m,int* n)
31 {
32     printf("输入m行\n");
33     scanf("%d",m);
34     printf("输入n列\n");
35     scanf("%d",n);
36 }
37 int* ptable(int m,int n)
38 {
39     printf("%d*%d\n",m,n);
40     int* num_1=(int*)malloc(sizeof(int)*m*n);
41     for(int a=0;a<m;a++)
42         for(int b=0;b<n;b++)
43             scanf("%d",num_1+a*n+b);
44     for(int a=0;a<m;a++){
45         printf("\n");
46         for(int b=0;b<n;b++)
47             printf("%d ",*(num_1+a*n+b));
48     }
49     printf("\n");
50     return (num_1);
51 }
52 int* math(int m1,int n1,int n2,int* num_1,int* num_2)
53 {
54     int* num_result=(int*)malloc(sizeof(int)*m1*n2);
55     int cun=0,cun1=0,cun2=0;
56     for(int a=0;a<m1;a++)
57         for(int b=0;b<n2;b++){
58             for(int c=0;c<n1;c++){
59                 cun1=*(num_1+a*n1+c);
60                 cun2=*(num_2+c*n2+b);
61                 cun=cun+cun1*cun2;
62             }
63             *(num_result+a*n2+b)=cun;
64             cun=0;
65             cun1=0;
66             cun2=0;
67         }
68     return(num_result);
69 }
70 void dyjz(int m,int n,int* num_1)                        /*打印矩阵程序*/
71 {
72     for(int a=0;a<m;a++){
73         printf("\n");
74         for(int b=0;b<n;b++)
75             printf("%d ",*(num_1+a*n+b));
76     }
77     printf("\n");
78 }

 

C语言学习 - 0006 行列式乘法

标签:

原文地址:http://www.cnblogs.com/Yx37412/p/4982289.html

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