发一个求阶乘的程序!!!!大家来看看!!
虽然这个程序很简单,但是我想,里面应该有一些能表现功力的细节问题,就好像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]]
----------------解决方案--------------------------------------------------------
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;
}
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽