您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > 矩阵的运算程序(C语言版)
#includestdio.h#defineM20#defineN20floatA[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;pi;p++)for(q=0;qj;q++)scanf(%f,&A[p][q]);printf(输出矩阵A:\n);for(p=0;pi;p++)for(q=0;qj;q++){printf(%10.2f,A[p][q]);if((q+1)%j==0)printf(\n);}printf(请输入矩阵B:\n);for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&B[p][q]);printf(输出矩阵B:\n);for(p=0;pi;p++)for(q=0;qj;q++){printf(%10.2f,B[p][q]);if((q+1)%j==0)printf(\n);}printf(矩阵A+矩阵B为:\n);//计算两个矩阵相加for(p=0;pi;p++)for(q=0;qj;q++)C[p][q]=A[p][q]+B[p][q];for(p=0;pi;p++)for(q=0;qj;q++){printf(%10.2f,C[p][q]);if((q+1)%j==0)printf(\n);}};break;case2:{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;pi;p++)for(q=0;qj;q++)scanf(%f,&A[p][q]);printf(输出矩阵A:\n);for(p=0;pi;p++)for(q=0;qj;q++){printf(%10.2f,A[p][q]);if((q+1)%j==0)printf(\n);}printf(请输入矩阵B:\n);for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&B[p][q]);printf(输出第矩阵B:\n);for(p=0;pi;p++)for(q=0;qj;q++){printf(%10.2f,B[p][q]);if((q+1)%j==0)printf(\n);}printf(矩阵A-矩阵B为:\n);//计算两个矩阵相减for(p=0;pi;p++)for(q=0;qj;q++)C[p][q]=A[p][q]-B[p][q];for(p=0;pi;p++)for(q=0;qj;q++){printf(%10.2f,C[p][q]);if((q+1)%j==0)printf(\n);}};break;case3:{floatk;printf(请输入矩阵A的行数和列数(用逗号隔开):);scanf(%d,%d,&i,&j);printf(请输入矩阵A\n);for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&A[p][q]);printf(输出矩阵A\n);for(p=0;pi;p++)for(q=0;qj;q++){printf(%10.2f,A[p][q]);if((q+1)%j==0)printf(\n);}printf(请输入一个实数:\n);scanf(%f,&k);for(p=0;pi;p++)//数乘矩阵for(q=0;qj;q++)B[p][q]=k*A[p][q];printf(输出k乘矩阵A的结果\n);for(p=0;pi;p++)for(q=0;qj;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;pi;p++)for(q=0;qj;q++)scanf(%f,&A[p][q]);printf(输出矩阵A\n);for(p=0;pi;p++)for(q=0;qj;q++){printf(%10.2f,A[p][q]);if((q+1)%j==0)printf(\n);}for(p=0;pi;p++)//转置for(q=0;qj;q++)B[q][p]=A[p][q];printf(输出矩阵A的转置矩阵:\n);for(p=0;pj;p++)for(q=0;qi;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;iT;i++)for(j=0;jT;j++)scanf(%f,&b[i][j]);printf(原矩阵为:\n);for(i=0;iT;i++){for(j=0;jT;j++)printf(%10.3f,b[i][j]);printf(\n);}for(i=0;iT;i++)for(j=0;j(2*T);j++){if(jT)a[i][j]=b[i][j];elseif(j==T+i)a[i][j]=1.0;elsea[i][j]=0.0;}for(i=0;iT;i++){for(k=0;kT;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;iT;i++){t=a[i][i];for(j=0;j(2*T);j++)a[i][j]=a[i][j]/t;}for(i=0;iT;i++)y=y*a[i][i];if(y==0)printf(对不起,您输入的矩阵没有逆矩阵,请重新输入。\n);else{for(i=0;iT;i++)for(j=0;jT;j++)b[i][j]=a[i][j+T];printf(逆矩阵为:\n);for(i=0;iT;i++){for(j=0;jT;j++)printf(%10.3f,b[i][j]);printf(\n);}};break;case6:;break;default:printf(\n********您选择错误,请重试.********\n);break;}printf(#########再次感谢您使用本系统,合作愉快!############);printf(\n);printf(******************************************************************\n);}
本文标题:矩阵的运算程序(C语言版)
链接地址:https://www.777doc.com/doc-5142037 .html