用VC++计算行列式的一个问题
以下是计算n阶行列式的正确程序,我需要把核心程序提取出来,但提出来后总出错,错误为:
warning C4091: '' : ignored on left of 'float' when no variable is declared
error C2143: syntax error : missing ';' before 'constant'
fatal error C1004: unexpected end of file found
---------------------------------
代码为:
include <stdio.h>
#define MAX 20
float value(int n,float *a)
{
float sum=0;/*符号为+*/
float sub=0;/*符号为-*/
int i;
if(!n) return 0.0;
if(n==1) return a[0];
if(n==2) return a[0]*a[3]-a[1]*a[2];
for(i=0;i<n;i++)
{
{
float total=1.0;
int row=0,con;
int num=0;
for(con=i;con<n;con++,row++){
total*=a[row*n+con];
num++;}
row=num;
for(con=0;row<n&&num!=n;con++,row++)
total*=a[row*n+con];
sum+=total;
}
{
float total=1.0;
int row=0,con;
int num=0;
for(con=i;con>=0;con--,row++){
total*=a[row*n+con];
num++;}
row=num;
for(con=n-1;row<n&&num!=n;con--,row++)
total*=a[row*n+con];
sub+=total;
}
}
return sum-sub;
}
void main()
{
int n; /*阶数*/
int i;
float a[MAX*MAX];
float result;
printf("\n输入阶数(<%d):",MAX);
scanf("%d",&n);
printf("\n依序输入行列式(行展开的顺序):\n");
for(i=0;i<n*n;i++)
scanf("%f",&a[i]);
printf("\n******输入的行列式******\n");
for(i=0;i<n*n;i++){
printf("%f\t",a[i]);
if(i%n==n-1) printf("\n");}
result=value(n,a);
printf("***行列式结果为:%f \n",result);
}
请帮我分析一下怎么调用。
补充:提取出来的是:float value(int n,float *a) 这个函数,
出错的地方也在这里。
上述程序本身没有问题,但我把float value(int n,float *a) 函数提出来放到另一个程序里就出问题了:
float value(int n,float *a) 这一行问题为
“ignored on left of 'float' when no variable is declared ”
和
“syntax error : missing ';' before 'constant'”。
不明白怎么改
------------------------
我用的是VC++6.0,上面程序本身编译可通过,但把函数提出来就通不过了。
追问:我用的是VC++6.0,上面程序本身编译可通过,但把函数提出来就通不过了。
你有qq吗?我的QQ:2239035691,能加我吗?我急着用
答案:要求是C或C 程序,我用的是VC 6.0编译器。问题补充:用class也可以,以下是我原来写过的一个关于矩阵的类,里面实现了求方阵的行列式函数:int
上一个:VC 网下了代码 有头文件 和lib文件 和一个测试的工程 但是我都失败了 虽然lib添加了
下一个:为什么在编译好要调试的时候VC会自动关闭