用while语句求20的阶乘的和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用while语句求20的阶乘的和相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
int main()

int i=0,j=1;
int n;
while(n<=20);

n=1;
n++;
j=j*n;
i=i+j;


printf("%d\n",i);
return 0;

不知道哪里出了问题,另外我用for语句求的,望指点指点
#include<stdio.h>
int main()

int i=0,j=1;
int n;
for(n=1;n<=20;n++)

j=j*n;
i=i+j;

printf("%d\n",i);
return 0;

结果得268040729

有两个地方错误,

(1)while之后为什么直接加了分号

(2)对n的初始化应该在while循环外,同时,n的自增应该放到乘完之后做。

修改后的程序为:

#include<stdio.h>
int main()

    int i = 0, j = 1;
    int n=1;
    while (n <= 20)
    
        j = j*n;
        i = i + j;
        n++;
    
    printf("%d\\n", i);
    return 0;

结果为:

参考技术A 第一个while后面多了一个; ,把n=1放大片while之前, n++放到循环体的最后。这样修改后,两个程序效果就一样了,看起来代码没问题,如果是计算的从1一直加到20的阶乘的和,方法也正确,但感觉你的数据类型用错了, 20的阶乘肯定用int表示不了,会溢出,你换成long试试吧

1到20阶乘的和用c语言表达

#include <stdio.h>

long jiecheng(int x)

long int i,k=1;

for(i=1;i<=x;i++)

k=k*i;

return k;

int main()

long int j,k=0;

int i;

for(i=1;i<=20;i++)

j=jiecheng(i);

k+=j;

printf("%ld\\n",k);

扩展资料

使用其他方法实现求1到20阶乘的和:

public class Main

public static void main(String[] args)

int i,j;

int sum=0;

int a=1;

for(i=1;i<=20;i++)

for(j=1;j<=i;j++)

a*=j;

sum+=a;

System.out.print("sum=1!+2!+3!+...+20!="+sum);

参考技术A

一、算法分析:

计算阶乘和分成两步:

1 计算阶乘。 对于n的阶乘,从1累乘到n即可。 

2 每个阶乘相加。 

于是算法可以设计为,从1到20循环,计算每个数的阶乘,并累加。 

由于n!=(n-1)! *n, 所以每次计算阶乘,可以利用上次的结果,减少运算量。 

二、代码实现:

#include <stdio.h>
int main()

long long fac=1, s=0;//fac用来存储阶乘,s用来存储阶乘和。
int i;
for(i = 1; i <= 20; i ++)//循环20次

fac*=i;//计算阶乘
s+=fac;//累加

printf("%lld\\n", s);//输出结果

return 0;

三、输出结果:

2561327494111820313

四、注意事项:

1 由于20阶乘和很大,达到2.56*10^18,所以32位的int是存储不下的。 必须使用64位的long long。 否则会出现溢出现象。 

2 如果是VC/VS一类的IDE,会不支持long long, 需要修改类型为__int64。

参考技术B #include<stdio.h>
int jiecheng(int n);
int main(void)

int sum = 0;
for (int i = 1; i <= 20; i++)

sum+=jiecheng(i);

printf("%d\n", sum);
return 0;

int jiecheng(int n)

int k = 1;
for (int i = 1; i <= n; i++)

k = k*i;

return k;
参考技术C 少了一个循环好吧,误人子弟

以上是关于用while语句求20的阶乘的和的主要内容,如果未能解决你的问题,请参考以下文章

C语言用while语句求1到5阶乘的和

怎么用while语句算5的阶乘?

亲,用matlab中的while循环来求1到10的阶乘的和的编程怎么写,谢谢

matlab怎么用for语句求阶乘

计算阶乘的和

用while语句打印阶乘