c语言中3!+6!+9!+12!+15!+18!+21!如何编程

如题所述

double确实不够,20!的话还凑活,21!刚好超, long long int也一样,用long double吧
#include <stdio.h>
int main()
{
int i;
long double sum,t;
for(i=1,t=1,sum=0;i<=21;i++)
{
t*=i;
if(i%3==0)sum+=t;
}
printf("sum=%.0Lf",sum);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-16
这个1楼的方法是不行的,这个题目逻辑不是很难,重点是21!是一个很大的数,long,int应该都不够的,double也会有误差。。。
要准确的算该去找找c语言中对这种很大的数该怎么处理,这才是解决问题的关键。
现在一直做Java,c不是很清楚了

可以参考下这个网页
http://wenwen.soso.com/z/q202524567.htm
第2个回答  2011-06-16
double怎么会超
还有 什么long double
double 最长了 是10的307次方 将近100位 不会超的

用double就可以
第3个回答  2011-06-16
int i,t=1,sum=0;
for(i=3;i<=21;i+=3)
{
t*=i*(i-1)*(i-2);
sum+=t;
}
printf("%d\n",sum);
}
第4个回答  2011-06-16
#include <stdio.h>
int main()
{
int i;
long long sum = 0, t = 1;

for(i=3; i<=21; i+=3)
{
t*= i * (i - 1) * (i - 2);
sum+=t;
}
printf("sum=%lld \n",sum);
return 0;
}