编写程序,计算1!+2!+3!+.......+n!的值,其中n的值由用户输入。答案给出来了,求讲解过程,谢谢!

#include <stdio.h>
main ( )
{int k,l,n;/*定义k,l,n代表什么?请讲解*/
double sum=0,fact_k=1;/*fact-k=1,又表示什么?请讲解*/
printf("Please Input n:");
scanf("%d",&n);
for(k=1;k<=n;k++)
{fact_k=1;
for(l=1;l<=k;l++)/*两个for 循环分别表是什么?请讲解*/
fact_k*=l;/*这个又表示什么?*/
sum+=fact_k;
}
printf("sum=%.2lf",sum);
}希望能详细地讲解整个过程,谢谢!
还有就是 printf("sum=%.2lf",sum);中的%.21f表示什么?如果熟悉的话,希望每一行都能给我讲解,谢谢!

#include <stdio.h>
main ( )
{int k,l,n;
/*n代表用户输入的值;k是一个循环变量,代表从1到n;l也是循环变量代表从1到k,用来计算 k!时用*/
double sum=0,fact_k=1;/*fact-k=1,这是给fact_k赋一个初始值,下面在计算每一个k的阶乘时会用到*/
printf("Please Input n:");
scanf("%d",&n);/* 输入一个整型数,这个数赋值给变量n*/
for(k=1;k<=n;k++)
/*这个循环代表,计算1到n的阶乘的和, sum+=fact_k就是sum存储了1到n的阶乘的和*/
{fact_k=1;/* 每个k的阶乘都要从1开始乘*/
for(l=1;l<=k;l++)/*这个循环代表,计算每一个K的阶乘,从1*2*...*k */
fact_k*=l;/* 这个等价于 fact_k= fact_k * l , 循环结束的时候,k!就等于fact_k*/
sum+=fact_k;/* 这个等价于 sum=sum+fact_k */
}
printf("sum=%.2lf",sum);/* 这个表示sum输出时的精确度是小数点后2位有效数字,类型是浮点型 */
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-25
#include <stdio.h>
main ( )
{int k,l,n;/*定义k,l,n代表输入数据,K和I是中间变量,K表示从1到N;I表示从1到K。*/
double sum=0,fact_k=1;/*fact-k=1,SUM就是n!,这里是给赋初值; */
printf("Please Input n:"); 输入n
scanf("%d",&n); 这n赋值给变量
for(k=1;k<=n;k++) 第一个循环1.。。n
{fact_k=1;
for(l=1;l<=k;l++)/*两个for 循环:第一个代表K从1到N;第二个代表I从1到K 。就是计算1!到N! /
fact_k*=l;/*这个表示计算K!的函数*/
sum+=fact_k; 阶乘求和:1!+2!。。。+n!
}
printf("sum=%.2lf",sum);这个表示sum输出时的精确度是小数点后2位有效数字,类型是浮点型
}
第2个回答  2011-03-25
int k,l,n只是定义三个变量,后面都要用的。
fact_k=1表示阶乘从1开始,就是一开始的“1!”。
for(k=1;k<=n;k++)表示每一项,比如说k=3,就表示第三项,以你题目的要求就是“3!”。
for(l=1;l<=k;l++)是用来计算阶乘的,是嵌套在上一个循环里的,还是以上面那个例子,k=3时,这个循环就算出“3!”的值。fact_k*=l就是里面这个子循环的算法,表示的意思是fact_k=fact_k*l,这只是简便的写法。结合上面循环你应该看的懂吧。。。
printf("sum=%.2lf",sum);中的%.21f表示表示结果保留两位小数。
这个程序其实很简单的,书上应该会有详细的解释吧,认真看看书。。。

编写程序,计算1!+2!+3!+...+n!的值,其中n的值由用户输入。答案给出来了...
{int k,l,n;\/*n代表用户输入的值;k是一个循环变量,代表从1到n;l也是循环变量代表从1到k,用来计算 k!时用*\/ double sum=0,fact_k=1;\/*fact-k=1,这是给fact_k赋一个初始值,下面在计算每一个k的阶乘时会用到*\/ printf("Please Input n:");scanf("%d",&n);\/* 输入一个...

编写程序计算1!+2!+3!+...+n!的和(要求每行代码都有注释)
{ int n,f=1,i,s=0;scanf("%d",&n);\/\/读入n的值 for(i=1; i<=n; i++)\/\/进行累乘 { f=f*i;\/\/获得i的阶乘 s=s+f;\/\/进行阶乘的累加 } printf("1!+2!+...+%d!=%d\\n",n,s);\/\/输出结果 return 0;}

用c语言编程实现求1!+2!+3!+。。。+n!的值,其中n值由键盘输入
+...+n!= %d\\n",sum);return 0;}示例运行结果:输入n的值: 3 1!+2!+3!+...+n!= 9 输入n的值: 5 1!+2!+3!+...+n!= 153

C语言编程题。计算1!+2!+3!+…+n!的值,n从键盘输入(用函数完成阶乘计算...
return A(n-1)*n;if(n==1)return 1;}

c语言 求1!+2!+3!+...+n!的值.n由键盘输入
\/* 通过递归计算一个数的回阶乘 *\/ int factorial(int num){ if (num==1)return 1;else return (num * factorial(num - 1));} int main(){ int i,n;long sum = 1;scanf("%d",&n);for (i = 2;i <= n;++i)sum += factorial(i);printf("%ld\\n",sum);return 0...

C++编写程序,计算1!+2!+3!+…+n!。。。急啊。。。
就是先写个函数 int fun(int n){ int s=1;for(int i=1;i<=n;i++)s*=i;return s;} 然后在主函数中调用反复调用它 int main(){ int n;while(cin>>n){ int sum=0;for(int i=1;i<=n;i++){ sum+=fun(i);} cout<<sum<<endl;} } 这样就可以了 我现在没编译器,但...

C语言 求1!+2!+3!+… +n! , 其中n由键盘输入。
\/* 通过递归计算一个数的回阶乘 *\/ int factorial(int num){ if (num==1)return 1;else return (num * factorial(num - 1));} int main(){ int i,n;long sum = 1;scanf("%d",&n);for (i = 2;i <= n;++i)sum += factorial(i);printf("%ld\\n",sum);return 0...

利用for循环嵌套编写程序,计算1!+2!+3!+……+n!,要求n的值要由键盘输入...
n=int(input())ans1,ans2=0,0 for i in range(1,n+1):缩进ans2=1 缩进for j in range(1,i+1):缩进缩进ans2*=j 缩进ans1+=ans2 print(ans1)

编程计算 1!+2!+3!+4!+…+n!
include<stdio.h> int main(){int n,i,t=1,s=0;scanf("%d",&n);for(i=1;i<=n;i++){ t*=i;s+=t;} printf("1!=2!+...+%d!=%d\\n",n,s);return 0;}

用do—while语句实现:1+2+3+...+n(n为从键盘输入的参数)。怎么写这个...
include<stdio.h> void main(){ int i,n,sum=0;printf("enter n\\n");scanf("%d",&n);do for(i=1;i<=n;i++){ sum=sum+i;}while(i<=n);printf("%d",sum);} 哥们你什么时候也写起程序来了啊,哈哈哈哈~

相似回答