C语言,求1到20阶乘,初学者,求帮助!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,求1到20阶乘,初学者,求帮助!相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void main()

int i,j,n;
double sum;
double a[20]=1;
j=0;

while(j<=19)
i=1;

while(i<=(j+1))
a[j]=a[j]*i;
i=i+1;

j=j+1;

for(n=0;n<=19;n++) sum=sum+a[n];
printf("%lf",sum);


这个程序我觉得算法没有错啊,但是为什么运行没有显示的结果呢?能帮帮我吗,好无助……

参考技术A int i,j,n;
double sum=0;
double a[20]=1;
j=0;
while(j<=19)

i=1;

while(i<=(j+1))

if(j==0)
a[j]=1;
else
a[j]=a[j-1]*i;
i=i+1;

j=j+1;

for(n=0;n<=19;n++)
sum=sum+a[n];
printf("%lf",sum);

他们的答案不对,你测试下我的,你有个地方写错了本回答被提问者采纳
参考技术B #include<stdio.h>
void main()

int i,j,n;
double sum;
double a[20]=1;
j=1;
i=1;
while(j<=19)

if(i-1==0)

printf("%d的阶乘为%lf\n",i,a[j-1]);//这里是1的阶乘

if(i<(j+1))

i++;
a[j]=a[j-1]*i;
printf("%d的阶乘为%lf\n",i,a[j]);

j++;


楼主,你把括号弄清楚丫,思想是对的,但是你把while对应的括号弄清楚,你程序中的第二个while()完全没有必要,用if()就行
参考技术C #include<stdio.h>
void main()

int i,j,n;
long sum=0;//要初始化
long a[20]=1;
j=0;
while(j<=19)//大括号要对应好
i=1;
a[j]=1;
while(i<=(j+1))//大括号要对应好
a[j]=a[j]*i;
i=i+1;

j=j+1;

for(n=0;n<=19;n++) sum=sum+a[n];
printf("%d",sum);

C语言求1-20的阶乘之和

1+2!+3!+4!...+20! C语言求阶乘,我的语句如下
#include <stdio.h>
int main()

int a=1,sum=1;
int i;
do

a=a*(a+1);
sum=sum+a;
i++;
while(i<=19);
printf("%d\n",sum);
return 0;

他没有进行循环,请问这是为何?

i没有初始化,加上i = 0,否则i是乱码,另外1到20的阶乘值很大,会数据溢出,应该用__64int或者long long (可存储2^64位数)来定义sum。 参考技术A

/*

sum = 2561327494111820313

Press any key to continue

*/

#include <stdio.h>
 
int main() 
__int64 fact = 1,i,sum = 0;
for(i = 1; i < 21; ++i)
fact *= i;
sum += fact;

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

本回答被提问者和网友采纳
参考技术B int i; 这里定义了 i 这个变量,但是没有初始化为0,所以 i 的值是不确定的,有极大的概率会大于 19 ,所以循环条件就不成立了。 参考技术C 没进循环式因为 i没初始化, i是随机值,可能大于19 参考技术D 你的i没有赋初始值追问

后来对i进行赋值后 感觉这个数据也不对

以上是关于C语言,求1到20阶乘,初学者,求帮助!的主要内容,如果未能解决你的问题,请参考以下文章

C语言求1-20的阶乘之和

用C语言求1~20的阶乘之和!

c语言 1到20的阶乘之和

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

c语言20个阶乘相加

用C语言求5的阶乘,即5*4*3*2*1的值?