思路简述:
将n阶行列式化为上三角行列式,对角元乘积之和即为行列式的值。
#include "iostream"
using namespace std;
void main ()
{
double a[10][10]={0},result=1;//10阶以上行列式要对a数组修改大小
int i,j,k,t;
int size;
cout<<"请输入行列式的阶数"<<endl;
cin>>size;
cout<<size<<"阶行列式"<<endl;
for(i=0;i<size;i++)
for(j=0;j<size;j++)
cin>>a[i][j];
for(i=0;i<size-1;i++)
{
while(a[i][i]==0)//while里边防止除数分母0
{
for(j=i+1;j<size;j++)
if(a[j][i]!=0||j==size-1)
break;
for(k=i;k<size;k++)
{t=a[i][k];a[i][k]=a[j][k];a[j][k]=-t;}
if(j==size-1)
i++;
if(i==size-1)
break;
}
for(k=i+1;k<size;k++)
for(j=size-1;j>i-1;j--)
a[k][j]-=a[i][j]/a[i][i]*a[k][i];
}
cout<<"整理后的行列式"<<endl;
for(i=0;i<size;i++)
for(j=0;j<size;j++)
{
if(j==0)
cout<<endl;
cout<<a[i][j]<<" ";
}
for(i=0;i<size;i++)
result*=a[i][i];
cout<<endl<<"result is "<<result<<endl;
}