本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
#include<stdio.h>
int main()
{
double n;
double sum=0;
scanf("%lf",&n);
int i,j,k,temp;
j=2;
k=1;
for(i=1;i<=n;i++)
{
sum=sum+(1.0*j)/(k*1.0);
temp=j;
j=k+j;
k=temp;
}
printf("%.2f",sum);
return 0;
}
但是这个程序存在一个bug,就是当我提交时候,提示我较大N不行,然后我把输入的N,改为double类型的,提示依旧。 如果有哪位同学知道原因,可以留言交流一下。
博客内容涉及一个计算特定序列前N项和的程序,程序在处理较大N值时出现错误。问题在于输入类型可能不匹配,原程序使用`%lf`读取double类型变量,但输入样例提示可能需要考虑整数输入。解决方案可能是统一输入和变量类型为整数。程序的核心部分是动态计算序列项并累加到总和中,输出结果要求精确到小数点后两位。
3698

被折叠的 条评论
为什么被折叠?



