浙江大学版「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/(i*3-2)*(-1)^i-1
ます。 - 観察によると、一般用語の分母が偶数の場合、用語の符号は負になります。一般用語の分母が奇数の場合、項の符号は正になるため、ifステートメントを使用して合計を2つの部分に分割できます。
- 得られた最初のN項の合計はdouble型であるため、一般項の分母は1.0と書く必要があります。
- 出力形式は小数点以下3桁にする必要があるため、%。3fの形式で記述する必要があることに注意してください。