有人可以解释为什么我的代码给出错误“浮点异常”

时间:2015-04-18 07:31:13

标签: c

我试图解决一个问题,但我收到了一些错误,我调试了但找不到有人能找到它。

 #include <stdio.h>
 #include <string.h>
 #include <math.h>
 #include <stdlib.h>

long long int fact(int n)
{
  long long int s=1,i;

  if(n==0||n==1)
    return(1);
  else {
    for(i=1;i<=n;i++) {
      s=s*i;
    }

    // printf("%lld ",s);
    return(s);
  }  
}

int comb(int m,int n)
{
  float data;  
  data=fact(m+n)/(fact(m)*fact(n));

  // printf("%d %d data:%d ",m,n,data);
  return(data);
}    

int main() { 
  float nu[100];
  int t,i,n,a,b,w,j,k,l,c[100];

  scanf("%d",&t);    
  for(j=0;j<t;j++) {
    scanf("%d",&n);

    for(i=0;i<=n;i++) {
      a=i,b=n-i;
      w=comb(a,b);
      nu[i]=w;
      c[i]=i;
    }

    for(k=0 ;k< i;k++) {
      for(l=0;l<i-1;l++) {
        if(nu[l]>nu[l+1]) {
          int p,q;

          p=nu[l];
          nu[l]=nu[l+1];
          nu[l+1]=p;
          q=c[l];
          c[l]=c[l+1];
          c[l+1]=q;
        }

        if(nu[l]==nu[l+1]) {
          int q;

          if(c[l]>c[l+1]) {
            q=c[l];
            c[l]=c[l+1];
            c[l+1]=q;
          }
        }
      }
    }

    for(l=0 ; l < i ;l++) {
      //printf("%d",nu[i]);
      printf("%d ",c[l]);
      printf("%d\n",n-c[l]);
    }
  }

  return 0;
}

1 个答案:

答案 0 :(得分:0)

comb()返回&#34; int&#34;类型,但你&#34;返回(数据);&#34;,这是&#34;浮动&#34;类型:

int comb(int m,int n)
{   
  float data;  
  data=fact(m+n)/(fact(m)*fact(n));
  // printf("%d %d data:%d ",m,n,data);
  return(data);
 }