首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求大神帮忙!新手不懂调试,调试失败是咋回事

2012-05-10 
求大神帮忙!!新手不懂调试,调试失败是怎么回事?#includestdio.hlong facn(int a){long zif(a1)z1el

求大神帮忙!!新手不懂调试,调试失败是怎么回事?
#include<stdio.h>
long facn(int a)
{long z;
if(a==1)
z=1;
else
z=facn(a-1)*a;
return z;}
long facm(int b)
{long x;
if(b==1)
x=1;
else
x=facm(b-1)*b;
return x;}
long facd(int c)
{long v;
if(c==1)
v=1;
else
v=facd(c-1)*c;
return v;
}
main()
{int m,n,d;long q;
d=m-n;

scanf("%d %d",&m,&n);
q=facn(n)/(facm(m)*facd(d));
printf("q=%ld/n",q);
}
可以生成解决方案,但调试时一直被中断。用WIN-TC试了试编译成功但不能运行。

[解决办法]

C/C++ code
#include<stdio.h>long facn(int a){    long z;    if(a==1)    {        z=1;        return z;  //要返回    }    else        z=facn(a-1)*a;    return z;}long facm(int b){    long x;    if(b==1)    {        x=1;        return x;    }    else        x=facm(b-1)*b;    return x;}long facd(int c){    long v;    if(c==1)    {        v=1;        return v;    }    else        v=facd(c-1)*c;    return v;}main(){    int m,n,d;    long q;//    d=m-n;  //m,n还没赋值就做运算,应该放在后面吧        scanf("%d %d",&m,&n);    d= m-n;    q=facn(n)/(facm(m)*facd(d));    printf("q=%ld/n",q);}
[解决办法]
C/C++ code
[color=#FF0000]d= m-n;q=facn(n)/(facm(m)*facd(d));[/color]q总是=0是因为分子比分母小,得出来的是0.*****这样的数,所以取整,当然就是0了。d=m-n就意味着m比n大,大的数再乘以一个数,当然就更大了,所以分子就比分母小了。在做递归的时候,其实应该是限制输入的数应该是大于0的,而在long facm(int b){    long x;    if(b==1)    {        x=1;        return x;    }    else        x=facm(b-1)*b;    return x;}只判断了输入是否等于1,这样的话,如果输入的是一个负数的话,就会有问题了,建议这样写long facm(int b){    long x=0;    if(b>0)    {      if(b==1)      {        x=1;        return x;      }      else        x=facm(b-1)*b;    }    return x;} 

热点排行
Bad Request.