兰州市公安局人事消息:请高手帮我看看我的这个C问题出在哪

来源:百度文库 编辑:高校问答 时间:2024/05/07 06:26:52
我写了两个程序,一个是求行行式(放在matrix.c中),调试成功;另一个是引用它,我的问题就出在这,编译成功,但是当我输入数据的时候,输了4个,回车无反应,退不出来。
高手帮帮小弟啊
matrix.c(这个程序应该没问题)
int equ(int a[]),sig(int a[]),jech(int),add(int a[]);
#ifdef N
#else
#define N 1
#endif
float determ(float m[][N]);
float determ(float m[][N])
{float s=1,x=0;
static int a[N]={0};
char z;
int i,j,k;
for(i=0;i<jech(N);i++){while(equ(a)){add(a);}
s=1;
for(j=0;j<N;j++){k=a[j];
s*=m[k][j];}
x+=sig(a)*s;
add(a);
}
return x;
}

jech(int a)
{if(a==1|a==0)return 1;
else return (a*jech(a-1));
}

int add(int c[])

{int M=N;
if(c[M-1]<N-1)c[M-1]++;
else{M--;add(c);c[M]=0;M++;}
}

equ(int a[])
{int i,j,k=0;
for(i=N-1;i>=0;i--)
{for(j=i-1;j>=0;j--)
{if(a[i]==a[j])k=1;if(k==1)break;}
if(k==1)break;
}
return k;
}

sig(int a[])
{int i,j,k=0;
for(i=0;i<N;i++)
{for(j=i+1;j<N;j++)
if(a[j]<a[i])k++;
}
return pow(-1,k);
}

引用上面程序的程序源码是
#define N 2
#include<math.h>
#include"matrix.c"
main()
{static float a[N][N]={0};
int i,j;
for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%f",&a[i][j]);
printf("%f",determ(a));
}
不要像一楼的那样想随便发两句就想得到采纳。

int add(int c[])

{int M=N;
if(c[M-1]<N-1)c[M-1]++;
else{M--;add(c);c[M]=0;M++;}
}

改为static int M=N;
想必这是一个求排列的程序

相亲的时候,不要抱着那么强的目的性,放松点。就当多交个朋友,随便聊聊,聊天南海北,聊新闻,聊双方感兴趣的话题。