用c语言怎么编写输入一个矩阵求其逆矩阵的程序?

?小静 2024-05-18 09:22:48
最佳回答
这是我编的一个简易矩阵计算器,c++语言,非常容易理解的,你可以参考求行列式和逆部分#include <iostream>#include <iomanip>#include <conio.h>#include "windows.h"#include <string>using namespace std;void gotoxy(int x,int y) // 列x: 0~79 行y: 0~24 { handle hconsole=getstdhandle(std_output_handle); coord coordscreen={x,y}; setconsolecursorposition(hconsole,coordscreen); return; } void setcolor(unsigned short forecolor,unsigned short backcolor) // 0--黑 1--暗蓝 2--暗绿 3--暗青 4--暗红 5--暗紫 6--蟹黄 7--暗白 // 8--灰 9--亮蓝 10-亮绿 11-亮青 12-亮红 13-亮紫 14-黄 15-亮白{ handle hcon = getstdhandle(std_output_handle); setconsoletextattribute(hcon,(forecolor % 16)|(backcolor % 16 * 16));};int main(){ void plu(); void sub(); void amo(); void mul(); void ran(); void ord(); char sel='1'; while(sel != '0') { int i; system("cls"); // 清屏 setcolor(15,0); // 下面显示黑底亮青字 gotoxy(8,1); cout<<"┌───────────────────────────┐"; for(i=2;i<20;i++) {gotoxy(8,i);cout<<"│";gotoxy(64,i);cout<<"│";} setcolor(15,6); // 下面显示红底白字 gotoxy(10,3); cout<<" "; gotoxy(10,4); cout<<" 简 易 矩 阵 计 算 器 "; gotoxy(10,5); cout<<" "; setcolor(15,0); // 下面显示黑底亮青字 gotoxy(10,7); cout<<" 1 ---- 矩阵加法 2 ---- 矩阵减法 "; gotoxy(10,9); cout<<" 3 ---- 矩阵数乘 4 ---- 矩阵乘法 "; gotoxy(10,11); cout<<" 5 ---- 矩阵行列式 6 ---- 矩阵的逆 "; gotoxy(10,13); cout<<" 0 ---- 退出 "; gotoxy(10,15); cout<<" 请选择(0--6):"; gotoxy(8,20); cout<<"└───────────────────────────┘"; do { gotoxy(28,15); sel=getche( );} while ( sel!='1' && sel!='2' && sel!='3' && sel!='4' && sel!='5' && sel!='6'&& sel!='0'); switch(sel) { case '1':plu(); break; case '2':sub(); break; case '3':amo(); break; case '4':mul(); break; case '5':ran(); break; case '6':ord(); break; case '0': break; } } system("cls"); gotoxy(25,10); cout<<"谢 谢 使 用 系 统 !"<<endl; return 0;}void plu()//加法{ char l; system("cls"); // 清屏 setcolor(14,0); // 下面用黑底黄字int a,b,i,j;gotoxy(0,0);cout<<">>>>>> 矩阵加法 ";gotoxy(0,2);cout<<"请输入矩阵的行数:";cin>>a;cout<<endl; cout<<"请输入矩阵的列数:"; cin>>b; cout<<endl;double m[10][10],n[10][10];cout<<"请输入第一个矩阵:"<<endl;for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(6*j+20,2*i+6); cin>>m[i][j];}cout<<endl<<endl<<"请输入第二个矩阵:"<<endl;for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(6*j+20,2*a+2*i+7);cin>>n[i][j];} cout<<endl<<">>>>>>>"<<endl<<"矩阵加法结果为:";for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(6*j+20,4*a+2*i+8);cout<<m[i][j]+n[i][j];} gotoxy(0,6*a+9);cout<<">>>>>>>>按任意键退出:";l=getche();}void sub()//减法{ char l; system("cls"); // 清屏 setcolor(14,0); // 下面用黑底黄字int a,b,i,j;gotoxy(0,0);cout<<">>>>>矩阵减法";gotoxy(0,2);cout<<"请输入矩阵的行数:";cin>>a;cout<<endl; cout<<"请输入矩阵的列数:"; cin>>b; cout<<endl;double m[10][10],n[10][10];cout<<"请输入第一个矩阵:"<<endl;for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(6*j+20,2*i+6); cin>>m[i][j];}cout<<endl<<endl<<"请输入第二个矩阵:"<<endl;for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(6*j+20,2*a+2*i+7);cin>>n[i][j];} cout<<endl<<">>>>>>>"<<endl<<"矩阵减法结果为:";for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(6*j+20,4*a+2*i+8);cout<<m[i][j]-n[i][j];} gotoxy(0,6*a+9);cout<<">>>>>>>>按任意键退出:";l=getche();}void amo()//数乘{ char h; system("cls"); // 清屏 setcolor(14,0); // 下面用黑底黄字int a,b,i,j;gotoxy(0,0);cout<<">>>>>>矩阵数乘";gotoxy(0,2);cout<<"请输入矩阵的行数:";cin>>a;cout<<endl; cout<<"请输入矩阵的列数:"; cin>>b; cout<<endl;double m[10][10],c;cout<<"请输入矩阵:"<<endl;for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(6*j+20,2*i+6);cin>>m[i][j];} cout<<endl<<"请输入与矩阵相乘的实数:";cin>>c; cout<<endl<<endl<<"矩阵数乘结果为:";for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(8*j+20,2*a+2*i+9);cout<<m[i][j]*c;} gotoxy(0,4*a+12);cout<<">>>>>>>按任意键退出:";h=getche();}void mul()//乘法{ char k; system("cls"); // 清屏 setcolor(14,0); // 下面用黑底黄字int a,b,c,i,j,q;gotoxy(0,0);cout<<">>>>>>矩阵乘法";gotoxy(0,2);cout<<"请输入第一个矩阵的行数:";cin>>a;cout<<endl<<"请输入第一个矩阵的列数:"; cin>>b;cout<<endl<<"则第二个矩阵的行数也为:"<<b; cout<<endl<<endl<<"请输入第二个矩阵的列数:"; cin>>c; cout<<endl;double m[10][10],n[10][10],p[10][10]={0};cout<<"请输入第一个矩阵:"<<endl;for(i=0;i<a;i++) for(j=0;j<b;j++) {gotoxy(6*j+18,2*i+10); cin>>m[i][j];}cout<<endl<<endl<<"请输入第二个矩阵:";for(i=0;i<b;i++) for(j=0;j<c;j++) {gotoxy(6*j+18,2*a+2*i+11);cin>>n[i][j];} cout<<endl<<">>>>>>>"<<endl<<"矩阵相乘结果为: ";for(i=0;i<a;i++) for(j=0;j<c;j++) for(q=0;q<b;q++) p[i][j]=p[i][j]+m[i][q]*n[q][j];for(i=0;i<a;i++) for(j=0;j<c;j++) {gotoxy(10*j+18,2*a+2*b+2*i+12);cout<<p[i][j];}gotoxy(16,2*a+2*b+2*i+15);cout<<">>>>>>>按任意键退出:";k=getche();}//===================================================行列式float fun(int n1,float a1[10][10]);void ran(){ system("cls"); // 清屏 setcolor(15,0); // 下面用黑底黄字char k;int n,i,j;cout<<">>>>>矩阵行列式"<<endl<<endl<<"请输入矩阵阶数: ";cin>>n;cout<<endl<<"请输入矩阵:"<<endl;float a[10][10];for(i=0;i<n;i++)for(j=0;j<n;j++){gotoxy(6*j+12,2*i+4);cin>>a[i][j];}cout<<endl<<"行列式为: "<<fun(n,a)<<endl<<endl;cout<<">>>>>>按任意键退出:";k=getche();}float fun(int n1,float a1[10][10])//求行列式的递归函数{int i_1,j_1,c;//c为数组b的行 float b[10][10];int p=0,q=0;float sum=0;if(n1==1) return a1[0][0];for(i_1=0;i_1<n1;i_1++){for(c=0;c<n1-1;c++){if(c<i_1) p=0;else p=1;for(j_1=0;j_1<n1-1;j_1++){b[c][j_1]=a1[c+p][j_1+1];}}if(i_1%2==0)q=1;else q=(-1);sum=sum+a1[i_1][0]*q*fun(n1-1,b);}return sum;}//================================================================void ord(){char g;system("cls"); // 清屏 setcolor(15,0); // 下面用黑底黄字int i,j,n;gotoxy(0,0);cout<<">>>>>矩阵的逆";gotoxy(0,2);cout<<"请输入矩阵的阶数:";cin>>n;cout<<endl; cout<<"请输入矩阵:";float l[10][10],m[10][10],p;for(i=0;i<n;i++) for(j=0;j<n;j++) {gotoxy(4*j+12,2*i+4); cin>>l[i][j];} if(fun(n,l)==0) cout<<endl<<"该矩阵无逆!!!"<<endl;else{p=fun(n,l); cout<<endl<<"矩阵的逆为: "; for(i=0;i<n;i++)for(j=0;j<n;j++){{float f[10][10]; int r,w,e,d;//e为数组f的行数 for(int j_1=0,e=0;j_1<n-1,e<n-1;j_1++,e++) for(int i_1=0,d=0;i_1<n-1,d<n-1;i_1++,d++) {if(e<i) r=0;else r=1; if(d<j) w=0;else w=1; f[i_1][j_1]=l[i_1+w][j_1+r];}; if((i+j)%2==0) m[i][j]=fun(n-1,f)/p; else m[i][j]=-fun(n-1,f)/p; }; gotoxy(9*j+12,2*n+2*i+4);cout<<m[i][j];};}; cout<<endl<<endl<<">>>>>>按任意键退出:";g=getche();} 20210311
汇率兑换计算器

类似问答
  • 为什么会有矩阵这东西,矩阵到底有什么用
    • 2024-05-18 16:56:27
    • 提问者: 未知
    郭敦顒回答:代数中由二元一次联立方程到多元一次联立方程的一般性解法,之后产生了行列式的解法,这表明行列式是用于解二元到多元一次联立方程的,是公式化方法,而能如此做到是由行列式的特征性能决定的。相来对此你有所了解,那么在此基础上你就能了解矩阵了。矩阵与行列式有相通相近之处,它们都是属于线性代数的,即都具有二元到多元一次的性质,而在表达形式上都具规范化阵列的直观形式;不同点在于要解决的问题有差异,矩阵...
  • 矩阵a’是什么啊
    • 2024-05-18 10:15:06
    • 提问者: 未知
    a的转置矩阵,对于实数矩阵,是a沿着主对角线的镜像. 对于复数矩阵,是a的共轭沿着主对角线的镜像.
  • 矩阵a,矩阵b .写成(a,b)是表示什么?
    • 2024-05-18 02:03:47
    • 提问者: 未知
    还是矩阵,只不过用分块矩阵的形式表示出来,这个矩阵,左侧是a,右侧是b,行数跟a、b相同,列数是二者列数之和
  • 求帮忙,怎么将矩阵化为约当标准型,那个变化矩阵p怎么求
    • 2024-05-18 01:52:56
    • 提问者: 未知
    先用不同的特征值求出对应的特征向量,求法是(a1*e-a)=0求解x1,这样一个约当块能求出一个特征向量。(a1为特征值) 然后同一个约当块里的其他的特征向量,是广义特征向量,求法是(a1*e-a)=-x1(x1是上一步求出来的特征向量),求解x2。该约当块里的第三个广义特征向量,求法是(a1*e-a)=-x1...
  • 求矩阵
    • 2024-05-18 22:42:20
    • 提问者: 未知
    对矩阵分块。
  • 解矩阵ax=b
    • 2024-05-18 03:35:32
    • 提问者: 未知
    你计算的没错,是题目出的有问题 这类矩阵方程 ax=b,线性代数范围内应该有 a 可逆 化成 (a|b)=1 3 2|3 4-1 0 0 1|2 0 5 0 0 0|0 0 0 说明a不可逆.
  • efe矩阵的内容
    • 2024-05-18 16:43:00
    • 提问者: 未知
    efe矩阵,ife矩阵,cmp矩阵。企业内外部环境分析工具 百度知道 提问 搜一搜 知道首页 登录/注册 消息提醒 举报反馈 战队 efe矩阵的内容 写回答 有奖励 efe...
  • 矩阵三期
    • 2024-05-18 04:06:13
    • 提问者: 未知
    1、周围有什么嫌恶设施吗?2、这些嫌恶设施在哪里?3、小区是否有嫌恶设施的公示或提醒?...矩阵小区东侧1000米左右的高压线,会对人体有辐射作用,尤其是小孩,会有潜在的风险。...
  • 将人质的困境的博弈写成矩阵表达式,写出四个表达式.一定要写成矩阵形式.
    • 2024-05-18 14:55:06
    • 提问者: 未知
    1 l r 2 u 0,0 0,1 d 1,0 1,1 是这个吗?1,2囚徒;l,r囚徒1的两种选择;up,down囚徒2的两种选择;00,···11,集体选择的结果yale un. 有门公开课,在讲博弈论
  • 哪些是 用c语言 编写的程序
    • 2024-05-18 06:09:34
    • 提问者: 未知
    cobol(common business oriented language)—是数据处理领域最为广泛的程序设计语言。cobol历史 cobol(common business oriented language)是第一个广泛使用的高级编程语言。在企业管理中,...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。