Jayden


私信TA

用户名:dotcpp0731360

访问量:508

签 名:

等  级
排  名 2146
经  验 2432
参赛次数 0
文章发表 12
年  龄 0
在职情况 学生
学  校
专  业 数据科学与大数据技术

  自我简介:

解题思路:
题目:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。

我们可以发现第n项的分母等于第(n - 1)项的分子,第n项的分子等于第(n - 1)项的分子与分母之和。(n >= 2)


注意事项:

使用for循环求sum时,n >= 2时,sum是从第二项开始加的,所以要在else语句中初始化sum的初始值为2。

参考代码:

#include<stdio.h>
int main()
{
    double x[1000] = {0}, y[1000] = {0}, sum = 0, item[1001] = {0};    //item是指每一项的分数的值,x[i]用来存储每一项分数的分子,y[i]用来存储每一项分数的分母
    int N = 0;
    scanf("%d", &N);
    if (N == 1)    //N = 1的时候sum就等于2/1.
    {
        sum = 2;
    }
    else if(N > 1)    //N >= 2时,开始循环获取每一项分数的分子和分母,同时每循环一次,sum加一个分数。
    {
        x[1] = 2, y[1] = 1;
        sum = 2;    //N = 1时,sum = 2,因为下面的for循环是从第二项开始累加,所以最后的结果还得加上第一项的分数。
        for(int i = 2; i <= N; i ++)
        {
            y[i] = x[i - 1];
            x[i] = x[i - 1] + y[i -1];
            item[i] = x[i] / y[i];
            sum += item[i];
        }
    }
    else
    {
        printf("inputed N error!");    //若N的输入不合法,则会输出“inputed N error!”。
    }
    printf("%.2lf", sum);
    return 0;
}


 

0.0分

1 人评分

  评论区

欢迎各位大佬来评论区交流!
2024-02-25 19:47:32
  • «
  • 1
  • »