C语言 函数调用的问题

题目大意是求N-1的阶乘。例如N=5,就是4*3*2*1.。

#include "stdio.h"
#include "conio.h"
long fnSum(int n) ;
long fnSum(int n)
{ int i;
long a=1;
for(i=n-1;i>1;i--)
a*=i;
return a;(疑问在这行。因为去掉这行。结果是一样的。是我函数代码写错了?)
}
void main()
{ int n;
scanf("%d",&n);
printf("%ld",fnSum(n));
getch(); 因为编译工具是win tc 。所以要这行。
}
最好写详细点。指出哪里错了。为什么。谢谢吖。因为听老师讲得不太清楚。
#include "stdio.h"
#include "conio.h"
long fib(int n) ;
long fib(int n)
{ long a[100]={1,1,2};
int i;
for(i=2;i<n;i++)
a[i]=a[i-1]+a[i-2];
return a[n-1]; 又是这行。有没这行。下面的调用结果一样。
}
void main()
{ int n;
scanf("%d",&n);
printf("%ld",fib(n));
getch();
}
这题是兔子数列。。问题一样。可能是我理解函数调用的定义错了。还有类似几道作业都一样。通了这2题。其他应该就不成问题。。求指导。。

/**已经修改成一个整体,有一点小问题而已,还有什么 不明白的地方,再问我..
*@author:banxi1988
*@date:2010-12-9
*/
#include<stdio.h>
long fnSum(int n) ;
long fib(int n) ;

/**求阶乘 */
long fnSum(int n)
{
int i;
long a=1;
for(i=n;i>1;i--) ///////不是n-1
a*=i;

return a;/**疑问在这行。因为去掉这行。结果是一样的。是我函数代码写错了? */
}

/**兔子数列 */
long fib(int n)
{
long a[100]={1,1,2};
int i;
for(i=2;i<n;i++)
a[i]=a[i-1]+a[i-2];

return a[n-1]; /** 又是这行。有没这行。下面的调用结果一样。*/

}
int main(int argc, char **agrv)
{
int n = 0;

printf("请输入一个正整数n(n<15):");
scanf("%d",&n);

printf("%d 的阶乘是: %ld\n",n,fnSum(n));
printf("兔子数列的第 %d个数为:%ld \n",n,fib(n));

getchar();
return 0;
}//main:
/********************输出结果如下:
请输入一个正整数n(n<15):5
5 的阶乘是: 120
兔子数列的第 5个数为:5

第二次结果如下:
请输入一个正整数n(n<15):6
6 的阶乘是: 720
兔子数列的第 6个数为:8

*******************************/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-09
是不是你的编译器有点问题,我运行时正确,去掉和不去掉return语句差别肯定很大,有返回类型的函数必须要有return语句!本回答被网友采纳
第2个回答  2010-12-09
没错误 换VC6.0用吧
第3个回答  2010-12-09
理论上是没错的,楼主换个VC6试一下,或用VS也行。。。TC没有用过。。。
相似回答