导航:首页 > 编程语言 > 矩阵乘法编程

矩阵乘法编程

发布时间:2023-08-03 15:23:59

‘壹’ 输入m*n阶矩阵A和B,用函数编程实现两个函数相加和相乘

输入m*n阶矩阵A和B,用C语言编程实现两个函数相加和相乘:

一、矩阵相乘。程序中先初始化矩阵,然后判断第一个矩阵的列数和第二个矩阵的行数是否相等,如果不相等则直接提示错误后退出程序。相等的话则利用公式计算乘积,结果赋给matrix二维数组。最后用for循环打印出结果验证。

#include<stdio.h>

#include<stdlib.h>

#define M 100

int main(void)

{

int i,j,k,matrix1[M][M],matrix2[M][M],row1,col1,row2,col2,matrix[M][M];

printf("输入第一个矩阵的行数和列数:");

scanf("%d%d",&row1,&col1);

printf("输入第一个矩阵: ");

for(i=0;i<row1;i++){

for(j=0;j<col1;j++){

scanf("%d",&matrix1[i][j]);

}

}

printf("输入第二个矩阵的行数和列数:");

scanf("%d%d",&row2,&col2);

printf("输入第二个矩阵: ");

for(i=0;i<row2;i++){

for(j=0;j<col2;j++){

scanf("%d",&matrix2[i][j]);

}}

for(i=0;i<row1;i++){

for(j=0;j<col2;j++){

matrix[i][j]=0;

} }

if(col1!=row2){

fprintf(stderr,"enput error!");

exit(EXIT_FAILURE);

}

printf("The result: ");

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(" "); }

return 0;}



二、矩阵相加:

#include<stdio.h>

#define M 20

#define N 20

float A[M][N];

float B[M][N];

float C[M][N];

int i,j,m,n,p,q;

float y=1.0;

void main()

{

scanf("%d,%d",&i,&j);

printf("请输入矩阵B的行数和列数(用逗号隔开):");

scanf("%d,%d",&m,&n);

if(i!=m||j!=n)

printf("***对不起,您输入的两个矩阵不能相加,请重试.*** ");

else printf("请输入矩阵A: ");

for(p=0;p<i;p++)

for(q=0;q<j;q++)

scanf("%f",&A[p][q]);

printf("输出矩阵A: ");

for(p=0;p<i;p++)

for(q=0;q<j;q++)

{

printf("%10.2f",A[p][q]);

if((q+1)%j==0)

printf(" ");

}

printf("请输入矩阵B: ");

for(p=0;p<i;p++)

for(q=0;q<j;q++)

scanf("%f",&B[p][q]);

printf("输出矩阵B: ");

for(p=0;p<i;p++)

for(q=0;q<j;q++)

{

printf("%10.2f",B[p][q]);

if((q+1)%j==0)

printf(" ");

}

printf("矩阵A+矩阵B为: "); //计算两个矩阵相加

for(p=0;p<i;p++)

for(q=0;q<j;q++)

C[p][q]=A[p][q]+B[p][q];

for(p=0;p<i;p++)

for(q=0;q<j;q++)

{

printf("%10.2f",C[p][q]);

if((q+1)%j==0)

printf(" ");

}

};

‘贰’ C语言:编写完整程序:计算两个矩阵的乘积。

#include
"stdio.h"
#include
"stdlib.h"
void
main
()
{
int
m,l,p,q;
printf("输入第一个矩阵的维数m和l:\n");
scanf("%d%d",&m,&l);
printf("输入第二个矩阵的维数p和q:\n");
scanf("%d%d",&p,&q);
while
(l!=p)
{
printf("两个矩阵不匹配,不能进行相乘运算,请重新输入...\n\n");
printf("输入第一个矩阵的维数m和l:\n");
scanf("%d%d",&m,&l);
printf("输入第二个矩阵的维数p和q:\n");
scanf("%d%d",&p,&q);
}
double
a[200][200]={0},
b[200][200]={0},sum=0;
int
i,j,k=0;
for
(i=0;i<m;i++)
{
for
(j=0;j<l;j++)
{
a[i][j]=(double)rand()/RAND_MAX;
}
}
printf("随机矩阵a是:\n");
for
(i=0;i<m;i++)
{
for
(j=0;j<l;j++)
{
printf("%f
",a[i][j]);
}
printf("\n");
}
//cout<<"输入一个3*2的矩阵:"<<endl;
for
(i=0;i<p;i++)
{
for
(j=0;j<q;j++)
{
b[i][j]=(double)rand()/RAND_MAX;
}
}
printf("随机矩阵b是:\n");
for
(i=0;i<p;i++)
{
for
(j=0;j<q;j++)
{
printf("%f
",b[i][j]);
}
printf("\n");
}
printf("ab相乘结果为:\n");
for
(i=0;i<m;i++)
{
while
(k<q)
{
for
(j=0;j<q;j++)
{
sum
=
a[i][j]*b[j][k]+sum;
}
printf("%f
",sum);
k++;
sum=0;
}
k=0;
printf("\n");
}
}

阅读全文

与矩阵乘法编程相关的资料

热点内容
jsp源码不能运行 浏览:363
淘客助手源码下载 浏览:733
如何使用app记账报税 浏览:562
python线程捕捉键盘 浏览:25
地推统计图app怎么做 浏览:162
android文件夹不能用了 浏览:857
加密软件的日志 浏览:892
肾病pdf 浏览:230
网站怎么用本地服务器 浏览:120
javadoc导入android 浏览:517
文件扫描成pdf 浏览:696
凉山火灾救援命令 浏览:54
压缩机三相检测 浏览:861
linux怎么安装光盘 浏览:799
宽带服务器无响应是为什么 浏览:226
压缩包内看图 浏览:914
安卓手机如何发现app后台调用情况 浏览:561
程序员简历工作描述 浏览:159
服务器中强制疾跑的指令是什么 浏览:54
日语命令性 浏览:261