关于C语言的问题,1!+2!+3!+…n!我写的程序提交上去为什么是错误答案?但是运行却是对的?

Input
行1:一个整数n,n∈[1,20]
Output
行1:一个整数(累加和)
Hint
你可能需要long long int类型
这种类型printf输出,需要使用%I64d

#include <stdio.h>
long jc(long n)
{

if(n==1)
return 1;
else
return n * jc(n-1);
}

main()
{
int i,n;
long sum;
sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+jc(i);
printf("%ld\n",sum);
return 0;

}

第1个回答  2012-01-30
sum和jc函数的数值类型应该是long long 而非long,会产生数值越界的问题。
第2个回答  2012-01-30
我给你编写了一个,定义的是整形,如果你要改成长整形也可以。程序代码如下(我检验过可用):
#include<stdio.h>
int jiecheng(int m);
void main()
{
int i,sum1=0,n;
printf("输入n:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum1+=jiecheng(i);
}
printf("sum1=%d\n",sum1);
}
int jiecheng(int m)//完成阶乘运算。
{
int sum2=1,j;
for(j=1;j<=m;j++)
sum2*=j;
return sum2;
}本回答被提问者采纳
第3个回答  2012-01-30
输出格式不符合要求,看题目
相似回答