当前位置: 代码迷 >> C语言 >> 发一个求阶乘的程序!!!!大家来看看!!
  详细解决方案

发一个求阶乘的程序!!!!大家来看看!!

热度:234   发布时间:2008-05-28 15:09:37.0
发一个求阶乘的程序!!!!大家来看看!!
虽然这个程序很简单,但是我想,里面应该有一些能表现功力的细节问题,就好像strcpy函数一样。
所以,我写这个出来,请大家指正,如果有疏漏之处。
程序代码:

#include <stdio.h>
#include <ASSERT.H>

long fac(int n);

long fac(int n)
{
    assert(n >= 0);
    long sum = 1;
    int i;
    if (n > 0)
    {
        for (i=1; i<=n; i++)
        {
            sum *= i;
        }
    }
    return sum;
}

int main(void)
{
    long l;
    int n;
    
    scanf("%d", &n);
    
    printf("%ld\n", fac(n));
    
    return 0;
}


[[it] 本帖最后由 mqh21364 于 2008-5-28 15:11 编辑 [/it]]
搜索更多相关的解决方案: int  阶乘  fac  sum  

----------------解决方案--------------------------------------------------------
0! = 1;
----------------解决方案--------------------------------------------------------
我 改改 看
不知怎么样
#include <stdio.h>
#include <ASSERT.H>

long fac(int n);

long fac(int n)
{

long sum = 1;
int i;
for (i=1; i<=n; i++)
{
sum *= i;
}

return sum;
}

int main(void)
{
long l;
int n;
        
scanf("%d", &n);
if(n<=0)
printf("error!");
else
printf("%ld\n", fac(n));
getch();
}
----------------解决方案--------------------------------------------------------
if (n > 0) 是多余的

[color=white]
----------------解决方案--------------------------------------------------------
3楼越改越糟了。。。

[color=white]
----------------解决方案--------------------------------------------------------
[bo][un]Loli[/un] 在 2008-5-28 15:29 的发言:[/bo]

3楼越改越糟了。。。


帮忙指点一下
----------------解决方案--------------------------------------------------------
test:

#include <stdio.h>
#include <ASSERT.H>

long fac(int n);

long fac(int n)
{
        assert(n >= 0);
        long sum = 1;
        int i;
        if (n > 0)
        {
                for (i=1; i<=n; i++)
                {
                        sum *= i;
                }
        }
        return sum;
}

int main(void)
{
        long l;
        int n;
        
        scanf("%d", &n);
        
        printf("%ld\n", fac(n));
        
        return 0;
}
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2008-05-28 09:29:26
mqh21364

等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
  得分:0 
哦,明白了,我搞错了,以为0的阶乘等于1呢!看来我的程序是有点问题的。
程序代码:

long fac(int n)
{
        assert(n >= 0);
        long sum = 1;
        int i;
        if (n  == 0)
                sum = 0;
        for (i=1; i<=n; i++)
        {
                sum *= i;
         }
        return sum;
}
还有,3楼的兄弟,燕子说你越改越糟是因为你把我的断言给去掉了, 而且你的算不出来输入为0的结果。
----------------解决方案--------------------------------------------------------
0的阶乘难道不是等于1??

[color=white]
----------------解决方案--------------------------------------------------------
  相关解决方案