问题及代码
Description
有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。
Input
输入只有一个正整数n,1≤n≤10。
Output
输出该序列前n项和,结果保留小数后6位。
Sample Input
3
Sample Output
5.166667
/*烟台大学计算机学院 2016 作者: 马春澎 完成日期:2016年12月16日 */ #include<stdio.h> #include<math.h> int main() { int i,n; double s,a,b,t; scanf("%d",&n); s=3.5; if(n==1) printf("%d",2*n); else if(n==2) printf("%f",2.0+1.5); else { a=5.0,b=3.0; for(i=3; i<=n; i++) { s=s+a/b; t=a; a=a+b; b=t; } printf("%.6f",s); } return 0; }
学习心得
由于a,b,t变量刚开始用了int型一直找不出错误来,当n很小时和答案一样,不过当n很大时就不一样了,错误了很多次
下次一定要注意:变量类型!变量类型!变量类型!