c语言输入一个数,求1到这个数阶乘的和

我改了好多次代码都不行,帮我改改怎么变成输入一个数,求1到这个数阶乘的和,我只会做到输入那个数的阶乘
#include "stdio.h"
#include "stdlib.h"
void main()
{
while(1)
{
int d;
printf("请输入数字计算阶乘。输入0退出程序:");
scanf("%d",&d);
if(d==0)
exit(0);
else
{
int fact=1;
int i;
for(i=1;i<=d;i++)
fact*=i;
printf("%d的阶乘:%d\n",d,fact);
}
}
}

#include "stdio.h"

#include "stdlib.h" 

  main()

{    

while(1)    

{

int d;        

printf("请输入数字计算阶乘。输入0退出程序:");        

scanf("%d",&d);        

if(d==0)            

exit(0);        

else        

{            

int fact=1,s=1;            

int i;     

printf("s=1");       

for(i=2;i<=d;i++) 

{           

fact*=i;

s+=fact;

printf("+%d",fact);

}            

printf("=%d\n",s);

}

}

}

追问

麻烦在帮我加入一个条件,判断输入的整数是不是奇数不是要求重新输入

追答

#include "stdio.h"

#include "stdlib.h" 

  main()

{    

while(1)    

{

int d=0;        

while(d%2==0){

printf("请输入一个奇数计算阶乘和。输入0退出程序:");        

scanf("%d",&d);        

if(d==0) exit(0);        

}

int fact=1,s=1;            

int i;     

printf("s=1");       

for(i=2;i<=d;i++) 

{           

fact*=i;

s+=fact;

printf("+%d",fact);

}            

printf("=%d\n",s);

}

}

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-04
#include "stdio.h"
#include "stdlib.h" 
void main()
{    
while(1)    
{
int d;        
printf("请输入数字计算阶乘。输入0退出程序:");        
scanf("%d",&d);        
if(d==0)            
exit(0);        
else        
{            
int fact;            
int i,j;
int sum=0;            
for(i=1;i<=d;i++)
{
   for(j=1,fact=1;j<=i;j++)            
fact*=j;
   sum+=fact;
}            
printf("%d的阶乘:%d\n",d,sum);
}
}
}

追问

麻烦在帮我加入一个条件,判断输入的整数是不是奇数不是要求重新输入

追答#include "stdio.h"
#include "stdlib.h" 
void main()
{    
    while(1)    
{
    int d;        
    do
    {
       printf("请输入奇数计算阶乘。输入0退出程序:");
       scanf("%d",&d);
    }while(!(d%2)&&d);        
    scanf("%d",&d);        
    if(d==0)            
    exit(0);        
    else        
    {            
    int fact;            
    int i,j;
    int sum=0;            
    for(i=1;i<=d;i++)
    {
       for(j=1,fact=1;j<=i;j++)            
        fact*=j;
       sum+=fact;
    }            
    printf("%d的阶乘:%d\n",d,sum);
    }
}
}

相似回答