想用循环语句和二维数组来编写程序计算行列式,但不知哪错了
程序代码:
#include <stdio.h>
int main()
{
int a[50][50];
int i,j,n,v,s,p,q;
printf("阶数为:\t");
scanf("%d",&n);
printf("please input %d data:\n",n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("please input a data as a[%d][%d]:\t",i,j);
scanf("%d",&a[i][j]);
}
}//构建行列式
printf("please check\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%5.d",a[i][j]);
}
printf("\n");
}//检查行列式
for(j=1;j<=(n-1);j++)
{
for(i=j+1;i<=(n-1);i++)
{
for(v=1;v<=n;v++)
{
p=(a[i][j]/a[i+1][j])*a[i+1][v];
a[i][v]-=p;
}
}
for(v=1;v<=n;v++)
{
q=(a[i][j]/a[j][j])*a[j][v];
a[i][v]-=q;
}
}//转换为三角行列式
printf("\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%5.d",a[i][j]);
}
printf("\n");
}//检查三角行列式
s=1;
for(i=1;i<=n;i++)
{
s*=a[i][i];
}//计算三角行列式
printf("结果为 %d\n",s);//输出结果
return 0;
}
想把行列式变成三角行列式,然后主对角线上元素的乘积即为结果。
变成三角行列式的方法是一列一列地运用行列式性质“一列上的元素加另一列的对应元素的常数倍,行列式值不变”来弄出左下方的那堆0
程序在转化为三角行列式那里错了,但检查不出,望各大神指正。谢谢!








