初学者求指导一下,thanks

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果

img

测试数据由多组,处理到文件尾。每组测试输入一个正整数n(2≤n≤20)这个条件该怎么表示出来还有想知道代码具体是怎么样的

多组数据用while( scanf("%d",&n)!=EOF) 即可

img

代码如下:


#include <stdio.h>
double fib(int n)
{
    double sum = 0;
    int i;
    int a = 2, b = 1, t;
    if (n == 1)
        return 2;
    sum = 2.0;
    for (i = 2; i <= n; i++)
    {
        t = a + b;
        b = a;
        a = t;
        sum += 1.0 * a / b;
    }
    return sum;
}

int main()
{
    int n;
    double s;
    while (scanf("%d", &n) != EOF)
    {
        s = fib(n);
        printf("%.6lf\n", s);
    }
    return 0;
}

处理到文件为就是判断输入为EOF

#include <stdio.h>
int main()
{
    int fz = 2;
    int fm = 1,i,t;
    double sum = 0;
    int n;
    while(scanf("%d",&n) != EOF)
    {
        fz = 2;
        fm = 1;
        sum = 0;
        for(i=1;i<=n;i++)
        {
            sum += fz*1.0/fm;
            t = fm;
            fm = fz;
            fz += t;
        }
        printf("%.6lf\n",sum);
    }
   return 0;
}