c语言程序设计 求1!+2!+3!+。。。n!=?谭浩强

2025-01-01 07:44:33
推荐回答(4个)
回答1:

简易版,啊呀呀,刚才写错了一个字母,这回对了。。。貌似楼上的楼上的算法更简易。。

#include
main()
{
int n,aa,x,y;
aa=0;
y=1;
printf("请输入整数n=:");
scanf("%d",&n);

for(x=1,i<=n,x++)
{
y=y*x;
aa=aa+y;
}

printf("整数n的阶乘=:%d",aa);
}

楼上是不是说结果变量要用长整型定义long aa

回答2:

#include

int main(void)
{
int n = 6; /* 1! + 2! + 3! + 4! + 5! + 6! */
long sum = 0;
long fac = 1;
int i;

for (i=1; i<=n; i++) {
fac *= i; /* factorial */
sum += fac;
}
printf("%ld\n", sum);

return 0;
}

回答3:

#include
#include

int jiecheng(int n)
{
long jiecheng=1;
int i=0;
for(int i=1;i<=n;i++)
{
jiecheng=jiecheng*i;
}
return jiecheng;
}

main()
{
long sum=0;
int i=1;
for(int i=0;i<=10;i++)
{
sum=sum+jiecheng(i);

}
printf("%d",sum);
getchar();
}

思路说一下:
jiecheng(n) 用来返回n的阶乘
main()中的for用来求n个数的阶乘的累积和。

回答4:

不知道n的范围给出没有 ,如果n>20的话 楼上的是算不出来的。我给一个 n可以很大的。。
#include
#include

int a[50000];
int main()
{
int i,j,len,k,n,carry,temp;
//scanf("%d",&k);
//while(k--)
//{
scanf("%d",&n);
a[0]=1;len=1;
for(i=2; i<=n; i++)
{
carry=0;
for(j=0; j {
temp=carry+i*a[j];
a[j]=temp%10;
carry=temp/10;
}
while(carry!=0)
{
a[len++]=carry%10;
carry=carry/10;
}
}
for(j=0; j printf("%d",a[len-j-1]);
printf("\n");
//}
return 0;
}