子函数定义问题

#include <stdio.h>
Main()
{
Int n,i;
Long sum,fn;
Printf(“n=”);
Scanf(“%d”,&n);
Sum=0;
For(i=1;i<=n;i++)
{
Fn=fact(i);
Sum=sum+fn;
}
Printf(“%ld”,sum);
}

Long fact(i)
{ long c=1;
Int k;
For(k=1;k<=i;k++)
c=c*k;
return c;
}
子函数只要一改成long类型就会出错,难道子函数只能定义成int 类型吗?请指教!

第1个回答  2010-01-14
兄弟,

C语言是严格区分大小写的,

Long 应该写成 long

Printf 应该写成 printf

For 应该 for

函数应该先声明,再调用;或者直接定义在主函数前面

还有要注意的一个地方是引号 全角字符“ ” 和半角字符 ""

下面是调试过的代码

#include <stdio.h>
long fact(int);
void main()
{
int n,i;
long sum,fn;
printf("\n");
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
{
fn=fact(i);
sum=sum+fn;
}
printf("%d",sum);
}

long fact(int i)
{ long c=1;
int k;
for(k=1;k<=i;k++)
c=c*k;
return c;
}
第2个回答  2010-01-14
问题在于c=c*k; long型与int型运算会自动转换成int类型,需要强行转换回来
For(k=1;k<=i;k++)
(long)c=c*k;
还有就是Long fact(i)应该是Long fact(int i)吧
第3个回答  2010-01-14
#include <stdio.h>
long fact(int i);
void main()
{
int n,i;
long sum,fn;
printf("n=");
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
{
fn=fact(i);
sum=sum+fn;
}
printf("%ld",sum);
}

long fact(int i)
{ long c=1;
int k;
for(k=1;k<=i;k++)
c=c*k;
return c;
}
我这里运行可以啊
第4个回答  2010-01-14
你这道程序可以上反面教材,错误一堆 Long 要小写,函数要先申明后使用,
还有形参的问题,那个Sum和sum又是。。。。
第5个回答  2010-01-14
你用的什么编译器?
你把所有的类型的首字母,还有函数首字母 都大写了. 编译都不能通过本回答被网友采纳
相似回答