输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:
输入 1 个正整数n,计算 s 的前n 项的和(保留 4 位小数)。
s = 1 + 1/2! +...+ 1/n!
#include <stdio.h>
int main(){
int repeat,i;
scanf("%d",&repeat);
for(i =0;i <repeat;i++)
{
int n;
double sum=0;
scanf("%d",&n);
int fact = 1;
for(int k=1;k<=n;k++)
{
fact = fact*k; //计算阶乘
sum = sum + 1.0 / fact; //计数器加上分数
}
printf("%.4f\n",sum);
}
return 0;
}
解题思路:
1、由题得,解此题无符号的变化,但是要计算阶乘。
2、因为看题中所给的式子,1,2,3,所以如果用循环,要每加一次,每做一次阶乘,并且s每加一次1.0/fact。
3、阶乘有一个性质:n!=(n-1)!*n; 利用循环的性质,当n+1次循环时,可以利用之前被赋值的fact继续进行计算。而k++形成的新的k,可以作为公式中的n,以此来进行计算。