用C语言求任意两个矩阵的乘积的子程序
#include #include int main(){ unsigned int m,p,n; int i,j,k,*a,*b,*c; scanf("%d %d %d",&m,&p,&n); a=malloc(m*p*sizeof(int)); for(i=0;i<m;i++) for(j=0;j<p;j++) scanf("%d",&a[i*p+j]); b=malloc(p*n*sizeof(int)); for(i=0;i<p;i++) for(j=0;j<n;j++) scanf("%d",&b[i*n+j]); c=calloc(m*n,sizeof(int)); for(i=0;i<m;i++) for(j=0;j<n;j++) for(k=0;k<p;k++) c[i*n+j]+=a[i*p+k]*b[k*n+j]; printf("
"); for(i=0;i<m;i++) { for(j=0;j<n;j++) printf("%d ",c[i*n+j]); printf("
"); } free(a);free(b);free(c); return 0;}
1、首先打开编程软件,新建一个项目,添加一个double.cpp文件,如图所示。
2、包含stdio.h头文件,如图所示。
3、接着输入main函数,如图所示。
4、然后定义两个double类型变量并初始化,如图所示。
5、使用scanf函数接受任意两个小数,计算两个小数的乘积并打印出来,如图所示。
6、然后运行程序,查看结果,如图所示。
#include "stdlib.h"
void pr(int **a,int m,int n)
{
int i,j;
printf("\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%5d",a[i][j]);
printf("\n");
}
printf("\n");
}
void AB(int **a,int m1,int n1,int **b,int m2,int n2,int **c)
{
int i,j,k;
for(i=0;i<m1;i++)
for(j=0;j<n2;j++)
for(k=0;k<n1;k++)
c[i][j]+=a[i][k]*b[k][j];
}void main()
{
int **a,**b,**c,m1,n1,m2,n2;
int i,j;
printf("输入第一个矩阵的行数列数:");
scanf("%d%d",&m1,&n1);
printf("输入第二个矩阵的行数列数:");
scanf("%d%d",&m2,&n2);
if(n1!=m2)
{
printf("第一个矩阵的列必须等于第二个矩阵的行数!");
return;
}
//建立A矩阵
a=(int **)calloc(m1,sizeof(int));
for(i=0;i<m1;i++)
a[i]=(int *)calloc(n1,sizeof(int));
printf("A:输入%d个整数:",m1*n1);
for(i=0;i<m1;i++)
for(j=0;j<n1;j++)
scanf("%d",&a[i][j]);
//建立B矩阵
b=(int **)calloc(m2,sizeof(int));
for(i=0;i<m2;i++)
b[i]=(int *)calloc(n2,sizeof(int)); printf("B:输入%d个整数:",m2*n2);
for(i=0;i<m2;i++)
for(j=0;j<n2;j++)
scanf("%d",&b[i][j]);
//建立C矩阵
c=(int **)calloc(m1,sizeof(int));
for(i=0;i<m1;i++)
c[i]=(int *)calloc(n2,sizeof(int));
AB(a,m1,n1,b,m2,n2,c);
printf("A:\n");
pr(a,m1,n1);
printf("B:\n");
pr(b,m2,n2);
printf("C=AB\n");
pr(c,m1,n2);}
#include
<stdio.h>
#include
"stdlib.h"
void
pr(int
**a,int
m,int
n)
{
int
i,j;
printf("\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%5d",a[i][j]);
printf("\n");
}
printf("\n");
}
void
AB(int
**a,int
m1,int
n1,int
**b,int
m2,int
n2,int
**c)
{
int
i,j,k;
for(i=0;i<m1;i++)
for(j=0;j<n2;j++)
for(k=0;k<n1;k++)
c[i][j]+=a[i][k]*b[k][j];
}void
main()
{
int
**a,**b,**c,m1,n1,m2,n2;
int
i,j;
printf("输入第一个矩阵的行数列数:");
scanf("%d%d",&m1,&n1);
printf("输入第二个矩阵的行数列数:");
scanf("%d%d",&m2,&n2);
if(n1!=m2)
{
printf("第一个矩阵的列必须等于第二个矩阵的行数!");
return;
}
//建立A矩阵
a=(int
**)calloc(m1,sizeof(int));
for(i=0;i<m1;i++)
a[i]=(int
*)calloc(n1,sizeof(int));
printf("A:输入%d个整数:",m1*n1);
for(i=0;i<m1;i++)
for(j=0;j<n1;j++)
scanf("%d",&a[i][j]);
//建立B矩阵
b=(int
**)calloc(m2,sizeof(int));
for(i=0;i<m2;i++)
b[i]=(int
*)calloc(n2,sizeof(int)); printf("B:输入%d个整数:",m2*n2);
for(i=0;i<m2;i++)
for(j=0;j<n2;j++)
scanf("%d",&b[i][j]);
//建立C矩阵
c=(int
**)calloc(m1,sizeof(int));
for(i=0;i<m1;i++)
c[i]=(int
*)calloc(n2,sizeof(int));
AB(a,m1,n1,b,m2,n2,c);
printf("A:\n");
pr(a,m1,n1);
printf("B:\n");
pr(b,m2,n2);
printf("C=AB\n");
pr(c,m1,n2);}
用C语言求任意两个矩阵的乘积的子程序
c[i][j]+=a[i][k]*b[k][j];}void main(){ int **a,**b,**c,m1,n1,m2,n2;int i,j;printf("输入第一个矩阵的行数列数:");scanf("%d%d",&m1,&n1);printf("输入第二个矩阵的行数列数:");scanf("%d%d",&m2,&n2);if(n1!=m2){ printf("第一个矩阵的列必须等于第...
C语言 用类编程实现两个矩阵的和、差、积,N×N,N可变 急!!!在线等_百...
\/\/原来写着玩儿的。还多一个求幂功能,我在devcpp 4.9.9.2 下编译运行通过测试。include <cstdio> include <iostream> include <cstring> include <cassert> include <algorithm> include <cmath> include <vector> include <windows.h> using namespace std ;const int maxR = 100 , maxC ...
如何用C语言编写一个求两个矩阵相乘的结果
\/* Matrix_main.cpp *\/ \/\/ include include include include \/* #include *\/ void main(void){ int col, row, row_s; \/* the column & row of the matrix *\/ int **pM_f = NULL, **pM_s = NULL; \/* point to two matrix,they will be multiplied *\/ int **pM_r = NULL;...
C语言实现 在编写图形界面软件的时候,经常会遇到处理两个矩形的关系
int x2 = Integer.parseInt(ss[2]);int y2 = Integer.parseInt(ss[3]);\/\/ 如果(x1,y1)(x2,y2)分别在(左上,右下,右上,左下)
C语言:编写完整程序:计算两个矩阵的乘积。
int arow,brow=0,p,q,i1,tp,t1,ctemp[10],ccol;if(M.n!=Q.m)cout<<"错误!"<<endl;Y.m=M.m;Y.n=Q.n;Y.t=0;if(M.t*Q.t!=0){ for(arow=1;arow<=M.m;++arow){ for(i1=1;i1<=M.m;i1++)ctemp[i1]=0;Y.rpos[arow]=Y.t+1;if(arow<M.m)tp=M....
请问,怎么有C语言来求两个距阵的乘积呢?
矩阵自己输不要紧呀,关键是计算的函数。我给你一个你可以参考:int *jc[](int a[M][N],int b[N,P],c[M,P){ int i,j,k,t[M,P];for(i=0;i<M;i++)for(j=0;j<P;j++)for(k=0;k<N;k++)c[i,j]=a[i,k]*b[k,j];} ...
C语言求大神,两个矩阵相乘( 矩阵不是编程的时候就定义好的,是用scan...
float a[100][100],b[100][100],c[100][100];\/\/定义三个数组,分别存储矩阵A,B,C intm1,n1,m2,n2,i1,j1,i2,j2,i3,j3,i4,j4,k;floats[100][100]={0};\/\/赋值使数组s元素初值全部为零 printf("请输入矩阵A行数m1,列数n1:");\/\/输入矩阵A行数,列数 scanf("%d,%d",&m1,&...
C语言中求两个矩阵的和
C语言中求两个矩阵的和具体如下:include<stdio.h> include<stdlib.h> include void main(){ int a[3][3];int b[3][3];int i,j,c,x;printf(" 求两个矩阵之和\\n");printf("请选择输入方式\\n");printf("0为随机自主输入,1为人工输入\\n");scanf("%d",&x);if(x==1){ prin...
用C语言实现两个矩阵的乘法,在主函数中输入和输出。输出结果放入C数组...
include void main() { int i,j,a[2][3],*p; for(i=0;i<2;i++) { printf("输入3个数:"); for(j=0;j<3;j++) scanf("%d",&a[i][j]); } p=a; for(i=0;i<2;i++) { for(j=0;j<3;j++) { printf("%d ",*(p+i)+j); if((j+1)%3==0)printf("\\n"...
C语言编程:编写一个函数求两个矩阵的差
int function(double **p, int p_r,int p_c, double **q,int q_r, int q_c, double **re) {int i,j;if(p == NULL || q == NULL || p_r != q_r || p_c != q_c) {re = NULL;return 1;}if(p_r * p_c > 1024) {re = NULL;return 2;}for(i = 0; i ...
项泪清脑: #include <stdio.h>#include "stdlib.h" void pr(int **a,int m,int n) { int i,j; printf("\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++)printf("%5d",a[i][j]); printf("\n"); } printf("\n"); } void AB(int **a,int m1,int n1,int **b,int m2,int n2,int **c) { int i,j,k; for(i=0;i<m1...
石首市13580743579: 用C语言写一个两个矩阵相乘的函数?
项泪清脑: matrix_mul(int**A,int**B,int**C,intm,intp,intn) { for(inti=0;i<m;i++) { for(intj=0;j<p;j++) { C[i][j]=0; for(intk=0;k<n;k++) { C[i][j]+=A[i][k]*B[k][j]; } } } }
石首市13580743579: 如何用C语言编写一个求两个矩阵相乘的结果 - ?
项泪清脑: /* Matrix_main.cpp *///#include #include #include #include /* #include */ void main(void) { int col, row, row_s; /* the column & row of the matrix */ int **pM_f = NULL, **pM_s = NULL; /* point to two matrix,they will be multiplied */ int **pM_r = NULL; /* the...
石首市13580743579: 用C语言求两矩阵相乘最好能在我写的上面改 谢谢了 - ?
项泪清脑: #include<stdio.h> int main() {int a[100][100],b[100][100],e[100][100],c,d,m,n,i,j,f; printf("输入第一个矩阵为多少行多少列"); scanf("%d,%d",&c,&d); printf("输入第二个矩阵为多少行多少列"); scanf("%d,%d",&m,&n); if(d!=m) printf(...
石首市13580743579: c语言两个矩阵相乘的程序怎么写? - ?
项泪清脑: #include main(){ int a[3][3]={1,2,3,4,5,6,7,8,9 }; int b[3][3]={1,2,3,4,5,6,7,8,9 }; int c[3][3]; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) c[i][j]=...
石首市13580743579: 用c语言程序求两个矩阵相乘 - ?
项泪清脑: int Q[N][N]; void Mul(int P1[N][N],int P2[N][N]) { int i,j,k; int sum; for(i=1;i<=n;i++){ for(j=1;j<=n;j++) { sum=0; for(k=1;k<=n;k++) sum+=P1[i][k]*P2[k][j]; Q[i][j]=sum; } } }
石首市13580743579: C语言输入两个矩阵,相乘,输出乘积矩阵;求指导 - ?
项泪清脑: #include "stdio.h" main() { int i,j,k,a[3][3],b[3][3],c[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",a[i][j]); //shu lu a[][] for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",b[i][j]); //shu lu b[][] for(i=0;i<3;i++) for(j=0;j<3;j++) for(k=0;k<3;k++) c[i][j]=a[i][k]*b[k][j]...
石首市13580743579: c语言中随机生成两个矩阵,并求两个矩阵的乘积?
项泪清脑: 矩阵乘法:2*3矩阵a与3*2矩阵b相乘得到一个2*2矩阵c,其中:其中k表示矩阵a的列数和矩阵b的行数;故有如下代码:#include<stdio.h> int main(){ int a[2][3]={1,2,3,4,5,6}; int b[3][2]={4,2,3,0,1,7}; int c[2][2]={0}; int i,j,k; for(k=0;k<2;k++){ for(i=0;i<...
石首市13580743579: C语言编程求矩阵乘积 - ?
项泪清脑: #define MAX 50 #define M MAX #define N MAX #define T MAX #define S MAXint Mult(double a[][N],int m,int n,double b[][T]int s,int t,double c[][T]) {int i,j,k;if(n != s) {printf("两矩阵相乘,左矩阵的列数与右矩阵的行数必须相等.\n");return ...
石首市13580743579: 帮我写个程序 两个任意大小的矩阵相乘 - ?
项泪清脑: 大兄弟有没有搞错 只有 a*b和b*c这种矩阵才可以相乘 for(i=0;i<a;i++) for(j=0;j<c;j++) { c[i][j]=0; for(k=0;k<b;k++)s[i][j]=s[i][j]+n[i][k]*m[k][j]; } n,m距阵分别为a*b和b*c距阵 s为相乘的结果