#include <stdio.h>
#include <stdlib.h>
float **Set_Data_Area ( int Data_lengh );//创建一个矩形空间规定了大小
void main()
{
int Data_Num; //输入空间长度,既输入几阶行列式
float Data_Result=1; //用于记录行列式的结果,
//因为我用的是主对角线相乘的方法所以给出初值为1
float Multiple ; //用于记录倍数a[m][k]/a[k][k],第一次发生的值。
//因为循环后a[m][k]/a[k][k]变0;所以要记录下来
int i,j;
printf( "How many ranks do you want ?\n" );
scanf("%d", & Data_Num);
/*输元素入值*/
float **a=Set_Data_Area( Data_Num ); //把空间的首地址赋给a
for( i=0 ; i <Data_Num ; i++)
{
printf("%d line : ",i+1);
for(j=0 ;j <Data_Num ; j++)
{
scanf("%f", &a[i][j]);
}
printf("\n") ;
}
system (" cls ");
for ( i=0 ; i<Data_Num ; i++ )
{
for( j=0 ;j<Data_Num ; j++ )
{
printf( "%f " , a[i][j]);
}
printf("\n");
}
printf("********************\n");
/*计算开始*/
int k; //记录次数;
int q; //用于横向遍历
int m; //纵向遍历
/*下列是关键算法,把行列式转化为上三角行列式*/
for(k=0 ;k < Data_Num ; k++)
for(m=k+1; m < Data_Num ; m++ )
{
if(a[k][k]==0)
{
printf("the result : 0");
return ;
} //这里是我一直没有克服的难点,要是有高手的话,还请指教
Multiple = a[m][k]/a[k][k] ;
for(q=k ; q < Data_Num ; q++ )
{
a[m][q] = a[m][q] - Multiple * a[k][q] ;
}
}
/*转换完毕*/
/*计算结果,这个简单的*/
for(k=0; k<Data_Num ;k++)
{
Data_Result *= a[ k ][ k ];
}
/*输出转化过的行列式*/
for ( i=0 ; i<Data_Num ; i++ )
{
for( j=0 ;j<Data_Num ; j++ )
{
printf("%f ",a[i][j]);
}
printf("\n");
}
/*输出结果*/
printf("The result is :%d\n",Data_Result);
}
float **Set_Data_Area(int Data_lengh)
{
float **Head_Point = NULL;
Head_Point =(float **)malloc (sizeof(float *));
int Index ;
for(Index=0 ; Index <Data_lengh ;Index ++)
{
*(Head_Point + Index) = (float *)malloc (sizeof (float )*Data_lengh);
}
return Head_Point;
}
以上是代码,一段行列式算法,错误提示如下:
compiling 行列式转换.c...
行列式转换.C(27): error C141: syntax error near 'float'
行列式转换.C(27): error C202: 'a': undefined identifier
行列式转换.C(35): error C202: 'a': undefined identifier
行列式转换.c - 3 Error(s), 0 Warning(s).
我只是一个大一在校生,希望大神们可以给一个简单点的解释,谢过了。
------解决方案--------------------
包含的库不一样吧