pta単純なインターリーブシーケンス(15ポイント)の最初のN項の合計を求めます

浙江大学版「C言語プログラミング(第3版)」トピック集の発表

演習2-15単純なインターリーブシーケンス(15ポイント)で最初のN項目の合計を見つける

この質問では、1-1 / 4 + 1 / 7-1 / 10 +…のシーケンスの最初のN項目の合計を計算するプログラムを作成する必要があります。

入力フォーマット:

入力は1行に正の整数Nを与えます。

出力フォーマット:

1行で、部分合計値Sを「sum = S」の形式で、小数点以下3桁まで正確に出力します。タイトルは、計算結果が2倍の精度範囲を超えないことを保証します。

入力サンプル:

10

サンプル出力:

合計= 0.819

コード:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    
    int i,N;
    double sum=0;
    scanf("%d",&N);
    for(i=1; i<=N; i++)
    {
    
    
        if((i*3-2)%2==0)
        {
    
    
            sum-=1.0/(i*3-2);
        }
        else
        {
    
    
            sum+=1.0/(i*3-2);
        }
    }
    printf("sum = %.3f",sum);
    return 0;
}

結果の送信:

ここに写真の説明を挿入

総括する:

  1. 質問を読んだ後、インターリーブされた用語の一般式はであることがわかり1/(i*3-2)*(-1)^i-1ます。
  2. 観察によると、一般用語の分母が偶数の場合、用語の符号は負になります。一般用語の分母が奇数の場合、項の符号は正になるため、ifステートメントを使用して合計を2つの部分に分割できます。
  3. 得られた最初のN項の合計はdouble型であるため、一般項の分母は1.0と書く必要があります。
  4. 出力形式は小数点以下3桁にする必要があるため、%。3fの形式で記述する必要があることに注意してください。

おすすめ

転載: blog.csdn.net/crraxx/article/details/109131723