求s=1!+2!+3!+……+n!的和从键盘输入n得值(n小于50),并输出运行结果
#include <stdio.h>
int main() {
int n, i, j, factorial = 1, sum = 0;
printf("Enter a value for n (n < 50): ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
factorial = 1;
for (j = 1; j <= i; j++) {
factorial *= j;
}
sum += factorial;
}
printf("The sum of the factorials from 1 to %d is: %d\n", n, sum);
return 0;
}
首先从键盘输入一个小于50的整数n,然后使用两个for循环计算并累加1到n的阶乘。内层循环计算i的阶乘,外层循环遍历1到n,并将每个阶乘加入总和中。最后输出总和的结果。
参考如下,一层for循环搞定
#include<stdio.h>
#include<string.h>
int main()
{
int n;
printf("Input n(n < 50): ");
scanf("%d", &n);
long long i, ret = 1, sum = 0;
for (i = 1; i <= n; i++)
{
ret *= i;
sum += ret;
}
printf("sum = %lld", sum);
return 0;
}
#include <stdio.h>
int main(void)
{
long long k = 1, sum = 0, i = 0;
for (i = 1; i <= 20; i++)
{
k *= i;
sum += k;
}
printf("%lld\n", sum);
return 0;
}
本题实质上考察的是对斐波那契数列的求解方法。斐波那契数列是一种数字序列,特别指的是以下的这个数字序列:0、1、1、2、3、5、8、13、21、34、……(前两个数字是 0 和 1)。这个数列从第 3 项开始,每一项都等于前两项之和。 本题的核心要点是通过递归的方式计算斐波那契数列。
使用递归方式计算斐波那契数列,然后在程序中添加提示语句即可。
以下是具体代码实现,通过自定义函数调用递归方式进行计算:
#include<stdio.h>
#include<stdlib.h>
int P(int n){
if(n==0){
return 0;
}
if(n==1){
return 1;
}
return P(n-1)+P(n-2);
}
int main(){
int n,fib;
printf("请输入n的值:");
scanf("%d",&n);
if(n>100){
printf("请输入小于100的数");
exit(0);
}
fib=P(n);
printf("斐波那契数列第n项是:%d",fib);
return 0;
}
本题极大的考点不仅在于对斐波那契数列的递归思想的考察,更重要的在于我们的代码编码能力和技术执行能力。因此,无论是对语法的熟练掌握,还是方法的理解与掌握都具有非常实际的现实意义。希望我们在接下来的学习过程中,能够更加优秀。
这个问题用两层的for循环就可以搞定的嘛,例如下面这个代码:
#include <stdio.h>
int main() {
int n, i, j;
long long s = 0, f = 1;
printf("请输入n的值:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
f = 1;
for (j = 1; j <= i; j++) {
f *= j;
}
s += f;
}
printf("%d的阶乘之和为%lld\n", n, s);
return 0;
}