c语言求1到n的阶乘之和s

#include<stdio.h>
int facSum(int s)
{ int n;
int y=1;
while(n>1)
{y=y*n;n--;
s=s+y;}
return(s)
}
main()
{int s,n,y;
printf("input a inteager number:\n");
scanf("%d",&n);
printf("%d",facSum(s));
}
看看哪里错了。。。求解释
我要正确的答案,我表示刚学,没学会,要慢慢补回来

1、首先打开vc6.0,新建一个项目。

2、添加头文件。

3、添加main主函数。

4、定义int变量i。

5、定义double类型变量sum,mix,并赋予初始值。

6、使用for循环求sum。

7、使用printf打印sum。

8、运行程序,看看结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-18

最基础的思路,是逐个求阶乘,并累加。不过由于阶乘是从1乘到n,所以每个数都单独求一次阶乘,会有很多重复运算,影响效率。

所以更快捷的方式是,在上一个数的阶乘基础上,直接乘上本身,得到当前数的阶乘。

以此为主导,代码如下:

#include <stdio.h>
int main()
{
    int n, i, n1 = 1,s=0;
    scanf("%d",&n);//输入n值。
    for(i=1; i <= n; i ++)
    {
        n1*=i;//计算i的阶乘。
        s+=n1;//累加。
    }
    printf("%d\n", s);//输出结果。
}

第2个回答  2011-12-06
#include<stdio.h>
int facSum(int n)
{
s=0;
int y=1;
while(n>1)
{y=y*n;
n--;
s=s+y;}
return(s)
}
main()
{
int n;
printf("input a inteager number:\n");
scanf("%d",&n);
printf("%d",facSum(n));
}
这样就对了!你还得把C的基础好好复习一下!函数参数的使用!谢谢
第3个回答  2011-12-06
#include<stdio.h>
int facSum(int s)
{ int n;
int y=1;
while(n>1)//n 的初始值呢?没初始化怎么减?n 和 s之间是不是应该有个关系运算呢?
{y=y*n;n--;
s=s+y;}
return(s)
}
main()
{int s,n,y;
printf("input a inteager number:\n");
scanf("%d",&n);
printf("%d",facSum(s));//这里是不是应该传n进去?s 没有初始化也没有用户输入怎么计算??
}
第4个回答  2011-12-06
#include<stdio.h>
int facSum(int n)//这里传递的是n的值,返回的是和
{
int s=0;
int y=1;
while(n>=1)
{
y=y*n;
n--;
s=s+y;
}
return(s)
}
main()
{int s,n,y;
printf("input a inteager number:\n");
scanf("%d",&n);//你把数据放进了n里面
printf("%d",facSum(n));//你调用的却是s
}
相似回答