第1关:求出分数序列前n项之和
100
- 任务要求
- 参考答案
- 评论98
任务描述
本关需要你求出分数序列前n
项之和。
相关知识
你需要使用到scanf
函数和循环语句来完成本关任务。
scanf
函数名: scanf
功 能:执行格式化输入 。
用 法:
int scanf(char *format[,argument,...]);
scanf()
函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。 其调用格式为:
scanf("<格式化字符串>",<地址表>);
scanf()
函数返回成功赋值的数据项数,出错时则返回EOF
。 其控制串由三类字符构成:
- 格式化说明符;
- 空白符;
- 非空白符。
分数序列
本关涉及到的分数序列规律如下:2/1,3/2,5/3,8/5,13/8,21/13…
。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
求出分数序列前n
项之和,n
由scanf
函数输入;
效果如下:
输入: 20
。 输出: n=20,sum=32.660261
。
注意:本关小数的定义变量需要使用double
类型,否则可能会有精度问题。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
开始吧!
#include <stdio.h>
int main()
{
//获取参数方式 scanf
//int x =0;
//int y = 0;
//scanf("%d", &x);
//结果输出使用prinf
//printf("%d",x);
// 请在此添加你的代码
/********** Begin *********/
long n,i;
double mol=2.0,den=1.0,sum=0.0,t;
scanf("%ld",&n);
for(i=1;i<=n;i++){
sum+=mol/den;
t=mol;
mol=mol+den;
den=t;
}
printf("n=%ld,sum=%lf",n,sum);
/********** End **********/
}