- 注册时间
- 2008-6-8
- 最后登录
- 1970-1-1
|
帮忙看下!!!!
这个程序用于求方阵的行列式,方法是用第一行倍加到其余行,使其余行首元素归零.....最后得到上三角阵,把对角线上元素相乘即得行列式值.
错误已经发现,就是/*......*/之间的部分,请问怎么错了?
#include <stdio.h>
#include <math.h>
void main()
{
int size,//方阵的阶数
h,j,k,//控制变量
switchtime=0;//交换次数
float D[99][99],//存放方阵
result=1,//行列式值
temp,//交换中介
flag;//倍加系数
FILE *fp;//文件指针
fp=fopen("fzsj.txt","r");
fscanf(fp,"%d",&size);//读取方阵阶数
for(h=0;h<size;h++)//读取方阵数据
for(j=0;j<size;j++)
fscanf(fp,"%f",&D[h][j]);
for(k=0;k<size;k++)
{
/* for(h=k;h<size;h++)//寻找首元素非零的行
if(D[h][k]!=0)
break;//找到后退出此循环
if(h>k)
{
for(j=k;j<size;j++)//交换两行
{
temp=D[h][j];
D[h][j]=D[k][j];
D[k][j]=temp;
}
switchtime++;//换行控制变量自增
}
*/
for(h=k+1;h<size;h++)//倍加归零
{
flag=D[h][k]/D[k][k];
for(j=k;j<size;j++)
D[h][j]-=D[k][j]*flag;
}
}
for(h=0;h<size;h++)
result*=D[h][h];
/*for(h=0;h<switchtime;h++)
result=(-result);
*/
printf("%f\n",result);
} |
|