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

如题所述

第1个回答  2020-01-08
#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
没有初始化也没有用户输入怎么计算??
}
第2个回答  2020-01-09
最基础的思路,是逐个求阶乘,并累加。不过由于阶乘是从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);//输出结果。
}
第3个回答  2020-01-10
最基础的思路,是逐个求阶乘,并累加。不过由于阶乘是从1乘到n,所以每个数都单独求一次阶乘,会有很多重复运算,影响效率。
所以更快捷的方式是,在上一个数的阶乘基础上,直接乘上本身,得到当前数的阶乘。
以此为主导,代码如下:
#include
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);//输出结果。
}
第4个回答  2020-01-08
#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
}
第5个回答  2020-01-08
错误比较多。
语法错误:return后少
;、
不解释、
1、主函数中传入s、可s并没有值、只是单单被定义了;
2、被调用函数因为1中的原因、导致s没有确切值;,
3、被调用函数中用的n无值、我想你可能是想用主函数中的n、可你的定义为局部定义、只能把while(n>1)中的n理解成被调用函数中的、因此无值;
4、被调用函数循环语句有问题、s的意思是把每个数的阶乘相加、举例:若输入为3、则y=1*3;s=s+3;明显不是你想要的结果、
以上是我的个人看法、若还是需要源代码可追问、建议还是自己理解、然后编程、可以帮你检查错误、有利于个人进步
相似回答