当前位置:首页 » 编程语言 » 矩阵的简单乘法c语言代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

矩阵的简单乘法c语言代码

发布时间: 2022-07-25 19:56:33

Ⅰ 用c语言实现两个矩阵相乘怎么做

1、程序运行输入数据时,第一行为A矩阵的行列数和B矩阵的行列数,接着分别输入A、B两个矩阵的值。

Ⅱ c语言程序设计,设计两个矩阵相乘的程序。已知:

#include<stdio.h>
#include<stdlib.h>
#defineM3

intmain(void)
{
inti,j,k,matrix1[M][M],matrix2[M][M],row1=M,col1=M,row2=M,col2=M,matrix[M][M];
/*为需要相乘的两个矩阵赋值:*/
printf("输入第一个矩阵: ");
for(i=0;i<row1;i++){
for(j=0;j<col1;j++){
scanf("%d",&matrix1[i][j]);
}
}
printf("输入第二个矩阵: ");
for(i=0;i<row2;i++){
for(j=0;j<col2;j++){
scanf("%d",&matrix2[i][j]);
}
}
/*初始化matrix:*/
for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
matrix[i][j]=0;
}
}

printf("Theresult: ");
for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
for(k=0;k<col1;k++){
matrix[i][j]=matrix[i][j]+matrix1[i][k]*matrix2[k][j];
}
}
}

for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
printf("%d",matrix[i][j]);
}
printf(" ");
}
return0;
}

Ⅲ 用C语言实现 矩阵的乘法

void main()
{int a[100][100],b[100][100],c[100][100],i,j,k,m,n,h;<br/> scanf("%d%d%d",&k,&m,&n);<br/> for(i=0;i<k;i++)<br/> for(j=0;j<m;j++)<br/> scanf("%d",&a[i][j]);<br/> printf("\n");<br/> for(i=0;i<m;i++)<br/> for(j=0;j<n;j++)<br/> scanf("%d",&b[i][j]);<br/> for(i=0;i<k;i++)<br/> {for(j=0;j<n;j++)<br/> {c[i][j]=0;<br/> for(h=0;h<m;h++)<br/> c[i][j]+=a[i][h]*b[h][j];}}
for(i=0;i<k;i++)
{printf("\n");<br/> for(j=0;j<n;j++)<br/> printf("%d ",c[i][j]);}
printf("\n");}
说明k,m,n分别为矩阵的行和列,比如4X5,5X7,这k,m,n分别为4,5,7,然后在输入4X5和5X7的矩阵

Ⅳ C语言实现矩阵乘法

#include<stdio.h>
intp,q,k;
voidmain()
{
floatA[2][2]={1,1,2,1},B[2][1]={2,1};
floatC[2][1]={0};
printf("矩阵A*矩阵B为: ");//计算两个矩阵相乘;以[2][2]*[2][1]为例
for(p=0;p<2;++p)
{
for(q=0;q<1;++q)
{
for(k=0;k<2;++k)
C[p][q]+=A[p][k]*B[k][q];
}
}
for(p=0;p<2;p++){
for(q=0;q<1;q++)
{
printf("%f",C[p][q]);
printf(" ");
}
}
}

Ⅳ C语言编程:编写一个函数,实现矩阵的乘法。

#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语言编一个计算矩阵相乘结果的程序

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
intmain()
{
ints,m,n,i,j,k;
printf(": ");
scanf("%d%d%d",&s,&m,&n);//s,m是第一个矩阵的行数和列数,m,n是第二个矩阵的行数和列数
double**A,**B,**C;
A=(double**)malloc(sizeof(double*)*s);
B=(double**)malloc(sizeof(double*)*m);
C=(double**)malloc(sizeof(double*)*s);//给三个二级指针分配下一级内存空间
for(i=0;i<s;i++)A[i]=(double*)malloc(sizeof(double)*m);
for(i=0;i<m;i++)B[i]=(double*)malloc(sizeof(double)*n);
for(i=0;i<m;i++)C[i]=(double*)malloc(sizeof(double)*n);//给一级指针分配内存空间
for(i=0;i<s;i++)
for(j=0;j<m;j++)
scanf("%lf",&A[i][j]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%lf",&B[i][j]);
for(i=0;i<s;i++)
for(j=0;j<n;j++)
C[i][j]=0;
for(i=0;i<s;i++)
for(j=0;j<n;j++)
for(k=0;k<m;k++)
C[i][j]+=A[i][k]*B[k][j];
for(i=0;i<s;i++)
free(A[i]);
for(i=0;i<m;i++)
free(B[i]);
free(A);
free(B);
for(i=0;i<s;i++)
{
for(j=0;j<n;j++)
printf("%-5g",C[i][j]);//最好开始输入的数字不要超过五位数,不然排版不好看
printf(" ");
}
for(i=0;i<s;i++)
free(C[i]);
free(C);
return0;
}

Ⅶ 求c语言矩阵加法和乘法代码

#include<stdio.h>
#include<stdlib.h>
void memory(int **p,int m,int n); //分配的内存的函数;
void readdata(int**p,int m,int n);
void plus(int **u,int **i,int m,int n); //求和函数,要求两个矩阵同型
void re(int **u,int **i,int m,int n); //求差,要求两个矩阵同型
void mult(int **u,int **i,int m,int n); //矩阵的积;乘法要求前一个矩阵的行数等于后一个矩阵的列数;
void release(int **p,int m,int n); //释放内存的函数;
int main() //也可使用switch语句来选择求和求差求积
{
int m,n;
scanf("%d%d",&m,&n); //输入m,n两个数,确定矩阵要分配内存的大小
int **k,**q,**o;
memory(**k,m,n);
memory(**q,m,n);
memory(**o,m,n); //备用,用来存放结果的一块内存;
readdata(**k,m,n);
readdata(**q,m,n);
plus(**k,**q,m,n);
re(**k,**q,m,n);
mult(**k,**q,m,n); //在本行加//则可不求矩阵乘法,使程序适用于一切m*n的矩阵加法;
realease(**k,m,n);
realease(**q,m,n);
}

void memory(int **p,int m,int n)
{
p=*(int**)malloc(m*sizeof(int*);
for(i=0;i<n;i++)
{
p[i]=*(int*)malloc(n*sizeof(int));
}
}

void release(int **p,int m,int n)
{
for(i=0;i<n;i++)
{
free(p[i]);
p[i]=0;
}
free(p);
p=0;
}

void readdata(int **p,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&p[i][j]); //要求用户由行到列输入矩阵的数据;
}
}

void plus(int **u,int **i,int m,int n)
{
int r,j;
for(r=0;r<m;r++)
{
for(j=0;j<n;j++)
printf("%5d",u[r][j]+i[r][j]);
printf("\n");
}
}
void re(int **u,int **i,int m,int n)
{
int r,j;
for(r=0;r<m;r++)
{
for(j=0;j<n;j++)
printf("%5d",u[r][j]-i[r][j]);
printf("\n");
}

void mult(int **u,int **i,int m,int n)
{
int r,j,k,d=0;
for(r=0;r<m;r++)
{
for(j=0;j<n;j++)
{
for(k=0;k<m;k++) //这里分号错写成了逗号
d=d+u[r][k]*i[k][r];
printf("%d",d);
}
d=0;
printf("\n");
}
}