矩阵的运算程序C语言版.docx
《矩阵的运算程序C语言版.docx》由会员分享,可在线阅读,更多相关《矩阵的运算程序C语言版.docx(6页珍藏版)》请在冰点文库上搜索。
矩阵的运算程序C语言版
矩阵的运算程序(C语言版)
#include
#defineM20
#defineN20
floatA[M][N];
floatB[M][N];
floatC[M][N];
inti,j,m,n,p,q;
floaty=1.0;
voidmain()
{
printf("###########################################\n");
printf("#####欢迎您使用矩阵函数包系统。
######\n");
printf("#####系统功能:
######\n");
printf("#####计算两个矩阵相加,相减;######\n");
printf("#####数乘矩阵;矩阵转置;求逆######\n");
printf("#####矩阵######\n");
printf("###########################################\n");
printf("请选择您需要的运算,按回车键结束\n");
printf("******************************************************************\n");
printf("1,矩阵相加\n");
printf("2,矩阵相减\n");
printf("3,数乘矩阵\n");
printf("4,矩阵转置\n");
printf("5,逆矩阵\n");
printf("6,退出\n");
printf("******************************************************************\n");
intx;
scanf("%d",&x);
switch(x)
{
case1:
{
printf("请输入矩阵A的行数和列数(用逗号隔开):
");
scanf("%d,%d",&i,&j);
printf("请输入矩阵B的行数和列数(用逗号隔开):
");
scanf("%d,%d",&m,&n);
if(i!
=m||j!
=n)
printf("***对不起,您输入的两个矩阵不能相加,请重试.***\n");
elseprintf("请输入矩阵A:
\n");
for(p=0;p
for(q=0;qscanf("%f",&A[p][q]);
for(p=0;p
for(q=0;q{
printf("%10.2f",A[p][q]);
if((q+1)%j==0)
printf("\n");
}
printf("请输入一个实数:
\n");
scanf("%f",&k);
for(p=0;p
for(q=0;qB[p][q]=k*A[p][q];
printf("输出k乘矩阵A的结果\n");
for(p=0;p
for(q=0;q{
printf("%10.2f",B[p][q]);
if((q+1)%j==0)
printf("\n");
}
};break;
case4:
{
printf("请输入矩阵A的行数和列数(用逗号隔开):
");
scanf("%d,%d",&i,&j);
printf("请输入矩阵A:
\n");
for(p=0;p
for(q=0;qscanf("%f",&A[p][q]);
printf("输出矩阵A\n");
for(p=0;p
for(q=0;q{
printf("%10.2f",A[p][q]);
if((q+1)%j==0)
printf("\n");
}
for(p=0;p
for(q=0;qB[q][p]=A[p][q];
printf("输出矩阵A的转置矩阵:
\n");
for(p=0;pfor(q=0;q
{
printf("%10.2f",B[p][q]);
if((q+1)%i==0)
printf("\n");
}
}
;break;
case5:
floata[M][2*M];
floatb[N][2*N];
floatt,x;
intk,T;
printf("输入方阵的维数:
\n");//请输入方阵,即行和列相等的矩阵。
scanf("%d",&T);
printf("请输入矩阵:
\n");
for(i=0;ifor(j=0;jscanf("%f",&b[i][j]);
printf("原矩阵为:
\n");
for(i=0;i{
for(j=0;jprintf("%10.3f",b[i][j]);
printf("\n");
}
for(i=0;ifor(j=0;j<(2*T);j++)
{if(ja[i][j]=b[i][j];
elseif(j==T+i)
a[i][j]=1.0;
else
a[i][j]=0.0;
}
for(i=0;i{
for(k=0;k{
if(k!
=i)
{
t=a[k][i]/a[i][i];
for(j=0;j<(2*T);j++)
{
x=a[i][j]*t;
a[k][j]=a[k][j]-x;
}
}
}
}
for(i=0;i{
t=a[i][i];
for(j=0;j<(2*T);j++)
a[i][j]=a[i][j]/t;
}
for(i=0;iy=y*a[i][i];
if(y==0)
printf("对不起,您输入的矩阵没有逆矩阵,请重新输入。
\n");
else
{
for(i=0;ifor(j=0;jb[i][j]=a[i][j+T];
printf("逆矩阵为:
\n");
for(i=0;i{
for(j=0;jprintf("%10.3f",b[i][j]);
printf("\n");
}
};break;
case6:
;break;
default:
printf("\n********您选择错误,请重试.********\n");
break;
}
printf("#########再次感谢您使用本系统,合作愉快!
############");
printf("\n");
printf("******************************************************************\n");
}