第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
}