C语言题目描述 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小

输入N 输出前N项和

#include <stdio.h>
#include <math.h>
int main()
{
    int N,i=0;
    float ai,bi;
    float aj,bj;
    float a,b;
    float sum;
scanf("%d",&N);
    ai=1,bi=2;  //第1项分母分子
    aj=2,bj=3;  //第2项分母分子
    sum=(bi/ai)+(bj/aj); //先算前两项的和
    for(i=0;i<N-2;i++)
    {
        a=ai+aj; //从第3项开始,分母是前两项分母之和
        b=bi+bj; //从第3项开始,分子是前两项分子之和
        sum+=b/a;
        ai=aj;
        bi=bj;
        aj=a;
        bj=b;
    }
    printf("前%d项的和= %.2f\n",N,sum);
    return 0;
}

示例运行结果:

2

前2项的和= 3.50

20

前20项的和= 32.66

追问

用while语句怎么做?

追答

就换一下嘛,一样的道理,修改如下:

#include <stdio.h>
#include <math.h>
int main()
{
    int N,i=0;
    float ai,bi;
    float aj,bj;
    float a,b;
    float sum;
    scanf("%d",&N);
    ai=1,bi=2;  //第1项分母分子
    aj=2,bj=3;  //第2项分母分子
    sum=(bi/ai)+(bj/aj); //先算前两项的和
i=0;
while(i<N-2)
{
a=ai+aj; //从第3项开始,分母是前两项分母之和
        b=bi+bj; //从第3项开始,分子是前两项分子之和
        sum+=b/a;
        ai=aj;
        bi=bj;
        aj=a;
        bj=b;
i++;
}
    printf("前%d项的和= %.2f\n",N,sum);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答