用C语言编写程序:20∑n=1(n!),即1!+2!+3!+……+19!+20!(从1的阶乘一直加

用C语言编写程序:20∑n=1(n!),即1!+2!+3!+……+19!+20!(从1的阶乘一直加到20的阶乘)

#include<stdio.h>

double factorial(int n);//函数声明

int main( )
{
int i = 0;
const int MAX_NUM = 20;
double sum = 0;

//求1!+2! +...+20!
for (i=1; i<=MAX_NUM; i++)
sum = sum + factorial(i);

printf("1!+...+%d!=%.0f\n",MAX_NUM, sum);//输出结果信息
}
//求阶乘函数的定义,20!的阶乘很大,需要用浮点数返回类型
double factorial(int n)
{
int i=0;
double s=1.0; //存放阶乘n!的乘积
if ( n<1 ) return -1;//参数不对,返回负数
for ( i=1; i<=n; i++ )
{
s = s*i;
}
return s;
}

//纯手工敲入,并运行验证,请给分,谢谢追问

66666

虽然我看不懂,还是给你吧

#include "stdio.h"
#define NUM 20
int main()
{
int sum = 0;
int sumTmp = 0;
for (int i=1; i<=NUM; i++)
{
sumTmp = 1;
for (int j=1; j<=i; j++)
{
sumTmp = sumTmp*j;
}

sum = sum + sumTmp;
}

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

你看下这个可以吗

追答

这个思路也是对的,就是注意20!的阶乘很大,要用浮动类型变量才能存放,如double型变量,这样仅仅完成你的问题,可以在一个main函数里完成,用一个循环完成:
#include
int main( )
{
int i = 0;
const int MAX_NUM = 20; //最大求到20的阶乘
double sum = 0;
double factorial = 1.0;
//求1!+2! +...+20!
for (i=1; i<=MAX_NUM; i++)
{
factorial = factorial*i;//求i的阶乘,如i=20时,就是20!
sum = sum + factorial; // 把阶乘factorial加入存放总和的变量sum中
}

printf("1!+...+%d!=%.0f\n",MAX_NUM, sum);//输出结果信息
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-03
void main(){
int n=1,sum=1;
while(n<=20){
sum=sum+sum*n;
n++;
}
printf("sum=%d",sum);
}
第2个回答  2014-11-03
#include "stdio.h"
#define NUM 20
int main()
{
int sum = 0;
int sumTmp = 0;
for (int i=1; i<=NUM; i++)
{
sumTmp = 1;
for (int j=1; j<=i; j++)
{
sumTmp = sumTmp*j;
}

sum = sum + sumTmp;
}

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

void main(){
int n=1,sum=1;
while(n<=20){
sum=sum+sum*n;
n++;
}
printf("sum=%d",sum);
}

你看这个对吗

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网