写了一个计算行列式值得程序,可是一运行就没了。大虾们帮看看……
#include "stdio.h"#include "stdlib.h"
#define N 4
float det(float (*p)[N],int i)/*计算行列式值的函数*/
{
float s=1.0,t;
unsigned short k,j;
if(i==0)/*当转化为上三角行行列式时,计算值*/
{
for(k=0;k<N;k++)
s*=*(*(p+k)+k);
return s;
}
else
{
if(*(*(p+i)+i)==0)/*通过行的交换使a[i][i]不为零(不考虑不能使a[i][i]的值不为零的情形)*/
for(k=0;k<i;k++)
if(*(*(p+i)+k)!=0)
{
for(j=0;j<N;j++)
{t=*(*(p+j)+i);*(*(p+j)+i)=*(*(p+j)+k);*(*(p+j)+k)=t;}
break;
}
for(k=0;k<i;k++)/*使当前列中在a[i][i]前面的数全部变为0*/
{
if(*(*(p+i)+k)!=0)
{
for(j=0;j<N;j++)
*(*(p+j)+k)-= *(*(p+j)+i)*( *(*(p+i)+k)/(*(*(p+i)+i)) );
}
}
return det(p,i-1);/*通过递归对各列操作*/
}
}
void main()
{
float a[N][N];
unsigned short i,j;
printf("Please input a 4*4 determinant.\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%f",&a[i][j]);
printf("The value of the determinant is:\n%f",det(a,N-1));
}