用C语言求1!+2!+3!+4!+5!+6!+…20!

2024-12-29 06:35:59
推荐回答(4个)
回答1:

正确代码如下:
本人比较郁闷64位整数2561317393011820313竟然不能输出;

#include
#include
#include
__int64 jc(int a)
{
__int64 i,k;
k=1;
for(i=1;i<=a;i++)
{
k*=i;
}
// printf("%I64d\n",k);
return k;
}

int main()
{
__int64 i,j,k,bj,len,a,sum;
int s[30];

memset(s,0,sizeof(s));
for(i=1;i<=20;i++)
{
sum=jc(i);
j=k=0;
while(sum)
{
a=sum%10;
bj=s[j]+a;
s[j]=(bj+k)%10;
k=bj/10;
sum/=10;
j++;
}
}
for(i=29;i>=0;i--)
{
if(s[i]!=0) break;
}
for(j=i;j>=0;j--)
{
printf("%d",s[j]);
}
printf("\n");
return 0;
}

回答2:

给你核心代码
int sum=0;
for(int i=1;i<=20;i++)
{
int tmp=0;
for(int j=1;j<=i;j++)
{
tmp+=i*j;
}
sum+=tmp;
}

printf("%d",sum);

回答3:

#include
void main()
{
int sum=0,i,j,tem=1;
for(i=1;i<=20;i++);
{
for(j=1;j<=i;j++)
tem=tem*j;
}
sum=sum+tem;

printf("%d",sum);
}

回答4:

在VC上的代码:
#include
int main()
{
__int64 sum = 1,tmp = 1;
for(int i = 2;i <= 20;i++)
{
tmp *= i;
sum += tmp;
}
printf("%I64d\n",sum);
return 0;
}