用C语言实现矩阵运算.docx
《用C语言实现矩阵运算.docx》由会员分享,可在线阅读,更多相关《用C语言实现矩阵运算.docx(10页珍藏版)》请在冰点文库上搜索。
![用C语言实现矩阵运算.docx](https://file1.bingdoc.com/fileroot1/2023-5/16/82370ddc-4bd7-4b2a-b1a1-94ba03395c56/82370ddc-4bd7-4b2a-b1a1-94ba03395c561.gif)
用C语言实现矩阵运算
资料范本
本资料为word版本,可以直接编辑和打印,感谢您的下载
用C语言实现矩阵运算
地点:
__________________
时间:
__________________
说明:
本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容
//任务二:
矩阵的基本运算
#include
#include
#defineR14//矩阵MA行数,可以按具体情况修改
#defineC14//矩阵MA列数,可以按具体情况修改
#defineR24//矩阵MB行数,可以按具体情况修改
#defineC24//矩阵MB列数,可以按具体情况修改
voidScalar(floatMA[][C1]);
voidTransposition(floatMA[][C1]);
voidAdd(floatMA[][C1],floatMB[][C2]);
voidSubtraction(floatMA[][C1],floatMB[][C2]);
voidMultiplication(floatMA[][C1],floatMB[][C2]);
voidmain()
{
floatMA[R1][C1],MB[R2][C2];
intc;
while
(1)
{
printf("功能如下:
\n");
printf("数乘矩阵1\n");
printf("矩阵转换2\n");
printf("矩阵相加3\n");
printf("矩阵相减4\n");
printf("矩阵乘法5\n");
printf("结束0\n");
printf("请选定您需要的操作:
\n");
scanf("%d",&c);
switch(c)
{
case1:
Scalar(MA);
break;
case2:
Transposition(MA);
break;
case3:
if((R1==R2)&&(C1==C2))
Add(MA,MB);
else
printf("矩阵MA与矩阵MB不能相减!
\n");
break;
case4:
if((R1==R2)&&(C1==C2))
Subtraction(MA,MB);
else
printf("矩阵MA与矩阵MB不能相加!
\n");
break;
case5:
if(C1==R2)
Multiplication(MA,MB);
else
printf("矩阵MA与矩阵MB不能相乘!
\n");
break;
case0:
printf("结束!
\n");
exit(0);
break;
default:
printf("对不起,您的输入不合法!
\n");
break;
}
}
}
voidScalar(floatMA[][C1])//矩阵数乘函数
{
inti,j,k;
printf("请输入乘数:
\n");
scanf("%d",&k);
printf("请输入%d*%d矩阵MA(每行以回车结束):
\n",R1,C1);
for(i=0;i{
for(j=0;j{
scanf("%f",&MA[i][j]);
}
}
printf("%d乘矩阵MA结果为:
\n",k);
for(i=0;i{
for(j=0;j{
printf("%6.2f",k*MA[i][j]);
}
printf("\n");
}
}
voidTransposition(floatMA[][C1])//矩阵转置函数
{
inti,j;
floatMD[C1][R1]={0};
printf("请输入%d*%d矩阵MA(每行以回车结束):
\n",R1,C1);
for(i=0;i{
for(j=0;j{
scanf("%f",&MA[i][j]);
}
}
for(i=0;i{
for(j=0;j{
MD[j][i]=MA[i][j];
}
}
printf("矩阵MA转置后的结果为:
\n");
for(i=0;i{
for(j=0;j{
printf("%6.2f",MD[i][j]);
}
printf("\n");
}
}
voidAdd(floatMA[][C1],floatMB[][C2])//矩阵加法函数
{
inti,j;
floatME[R1][C1]={0};
printf("请输入%d*%d矩阵MA(每行以回车结束):
\n",R1,C1);
for(i=0;i{
for(j=0;j{
scanf("%f",&MA[i][j]);
}
}
printf("请输入%d*%d矩阵MB(每行以回车结束):
\n",R2,C2);
for(i=0;i{
for(j=0;j{
scanf("%f",&MB[i][j]);
}
}
for(i=0;i{
for(j=0;j{
ME[i][j]=MA[i][j]+MB[i][j];
}
}
for(i=0;i{
for(j=0;j{
printf("%6.2f",ME[i][j]);
}
printf("\n");
}
}
voidSubtraction(floatMA[][C1],floatMB[][C2])//矩阵减法函数
{
inti,j;
floatMF[R1][C1]={0};
printf("请输入%d*%d矩阵MA(每行以回车结束):
\n",R1,C1);
for(i=0;i{
for(j=0;j{
scanf("%f",&MA[i][j]);
}
}
printf("请输入%d*%d矩阵MB(每行以回车结束):
\n",R2,C2);
for(i=0;i{
for(j=0;j{
scanf("%f",&MB[i][j]);
}
}
for(i=0;i{
for(j=0;j{
MF[i][j]=MA[i][j]-MB[i][j];
}
}
for(i=0;i{
for(j=0;j{
printf("%6.2f",MF[i][j]);
}
printf("\n");
}
}
voidMultiplication(floatMA[][C1],floatMB[][C2])//矩阵相乘函数
{
inti,j,k;
floatMG[R1][C2]={0};
printf("请输入%d*%d矩阵MA(每行以回车结束):
\n",R1,C1);
for(i=0;i{
for(j=0;j{
scanf("%f",&MA[i][j]);
}
}
printf("请输入%d*%d矩阵MB(每行以回车结束):
\n",R2,C2);
for(i=0;i{
for(j=0;j{
scanf("%f",&MB[i][j]);
}
}
for(i=0;i{
for(j=0;j{
for(k=0;k{
MG[i][j]=MG[i][j]+MA[i][k]*MB[k][j];
}
}
}
for(i=0;i{
for(j=0;j{
printf("%6.2f",MG[i][j]);
}
printf("\n");
}
}