您好,欢迎访问三七文档
#includestdio.h#defineM20#defineN20floatA[M][N];//定义了含有400个浮点型数组元素的二维数组floatB[M][N];floatC[M][N];inti,j,m,n,p,q,k;intmain(){printf(###########################################\n);printf(###欢迎您使用矩阵计算器系统。###\n);printf(###系统功能:###\n);printf(###计算两个矩阵相加,相减;###\n);printf(###矩阵相乘;矩阵转置;###\n);printf(######\n);printf(#########################################\n\n);intx;do{printf(请选择您需要的运算,若退出则选择0后按回车键结束\n);printf(******************************************************************\n);printf(0,退出\n);printf(1,矩阵相加\n);printf(2,矩阵相减\n);printf(3,矩阵相乘\n);printf(4,矩阵转置\n);printf(******************************************************************\n);scanf(%d,&x);switch(x){case0:printf(谢谢您使用该系统!);break;//退出系统case1://选择加法运算{printf(请输入矩阵A的行数和列数(用逗号隔开):);scanf(%d,%d,&i,&j);printf(请输入矩阵B的行数和列数(用逗号隔开):);scanf(%d,%d,&m,&n);while(i!=m||j!=n)//判断是否满足加法运算条件:既两个矩阵的行、列数是否相等{printf(***对不起,您输入的两个矩阵不能相加,两个矩阵的行列数必须相等,请重新输入.***\n\n);printf(请输入矩阵B的行数和列数(用逗号隔开):);scanf(%d,%d,&m,&n);}printf(请输入矩阵A:\n);//输入矩阵A的元素for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&A[p][q]);printf(输出矩阵A:\n);//输出矩阵Afor(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);//输入矩阵B的元素for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&B[p][q]);printf(输出矩阵B:\n);//输出矩阵Bfor(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);while(i!=m||j!=n)//判定两个矩阵想减的运算条件:矩阵A和B必须同行数同列数{printf(***对不起,您输入的两个矩阵不能相减,请重试.***\n\n);printf(请输入矩阵B的行数和列数(用逗号隔开):);scanf(%d,%d,&m,&n);}printf(请输入矩阵A:\n);//输入矩阵A的元素for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&A[p][q]);printf(输出矩阵A:\n);//输出矩阵Afor(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);//输入矩阵B的元素for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&B[p][q]);printf(输出第矩阵B:\n);//输出矩阵Bfor(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://选择乘法运算{printf(请输入矩阵A的行数和列数(用逗号隔开):);scanf(%d,%d,&i,&j);printf(请输入矩阵B的行数和列数(用逗号隔开):);scanf(%d,%d,&m,&n);while(j!=m)//判定两个矩阵能否相乘:A的列数必须等于B的行数{printf(***对不起,您输入的两个矩阵不能相乘,B矩阵的行数必须和A矩阵的列数相等,请重试.***\n);printf(请重新输入矩阵B的行数和列数(用逗号隔开):\n);scanf(%d,%d,&m,&n);}printf(请输入矩阵A:\n);//输入矩阵A的元素for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&A[p][q]);printf(输出矩阵A:\n);//输出矩阵Afor(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);//输入矩阵B的元素for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&B[p][q]);printf(输出矩阵B:\n);//输出矩阵Bfor(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;qn;q++){C[p][q]=0;for(k=0;kj;k++)C[p][q]+=A[p][k]*B[k][q];}for(p=0;pi;p++)for(q=0;qn;q++){printf(%10.2f,C[p][q]);if((q+1)%n==0)printf(\n);}};break;case4://矩阵转置{printf(请输入矩阵A的行数和列数(用逗号隔开):);scanf(%d,%d,&i,&j);printf(请输入矩阵A:\n);//输入矩阵A的元素for(p=0;pi;p++)for(q=0;qj;q++)scanf(%f,&A[p][q]);printf(输出矩阵A\n);//输出矩阵Afor(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;default:printf(error\n);break;}}while(x);//当选择0时程序结束return0;}
本文标题:c语言-矩阵计算器
链接地址:https://www.777doc.com/doc-7388375 .html