📄 one.cpp
字号:
#include<iostream.h>
void main()
{
double a[6][6],b[6],c[6][6],d=0,t=0,sum=0;
int hang=1,lie=0,i=0,j=0,n;
cout<<"请输入方程组中未知数的个数n (0<n<=5):"<<endl;
cin>>n;//考虑到实际应用,n大的情况已经很少了
if(n>5||n<=0)
{
cout<<"输入错误 方程组中未知数的个数n (0<n<=5)"<<endl;
return;
}
cout<<"请依次输入方程组各项系数:"<<endl;
for(int w=1;w<=n;w++)
{
for(int e=1;e<=n;e++)
{
cout<<"a["<<w<<","<<e<<"] = ";
cin>>a[w][e];
c[w][e]=a[w][e];
}
cout<<"b["<<w<<"] = ";
cin>>b[w];
c[w][e]=b[w];
cout<<endl;
}
while(hang<=n)//找出列主元素并进行交换
{//所谓的主元就是主对角线上的元素a[k][k]
d=a[hang][hang];
lie=hang;//记录列主元素的行号
for(i=hang+1;i<=n;i++)//找出列主元素过程
{
if(a[i][hang]>d)
{
d=a[i][hang];
lie=i;
}
}
if(lie!=hang)
{
for(j=hang;j<=n;j++)// 将第i行与列主元素行交换
{
t=a[lie][j];
a[lie][j]=a[hang][j];
a[hang][j]=t;
}
t=b[hang];b[hang]=b[lie];b[lie]=t;
}
for(j=hang+1;j<=n;j++)//消元过程
{
a[hang][j]=a[hang][j]/a[hang][hang];
}
b[hang]=b[hang]/a[hang][hang];
for(i=hang+1;i<=n;i++)
{
for(j=hang+1;j<=n;j++)
{
a[i][j]=a[i][j]-a[i][hang]*a[hang][j];
}
j=1;
b[i]=b[i]-a[i][hang]*b[hang];
}
hang++;
}
for(i=n-1;i>=1;i--)//回代
{
sum=0;
for(j=i+1;j<=n;j++)
{
sum=sum+a[i][j]*b[j];
}
b[i]=b[i]-sum;
}
cout<<"原方程组如下:"<<endl;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<"+"<<c[i][j]<<" (X"<<j<<") " ;
cout<<" = "<<c[i][j]<<endl;
}
cout<<endl<<endl<<"解为:"<<endl;
for(i=1;i<=n;i++)
{
cout<<"x"<<i<<"="<<b[i]<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -