1. 程式人生 > 其它 >練習4-3 求給定精度的簡單交錯序列部分和 (15分)

練習4-3 求給定精度的簡單交錯序列部分和 (15分)

技術標籤:# 浙大版《C語言程式設計(第3版)》題目集c語言c++visual studio

本題要求編寫程式,計算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最後一項的絕對值不大於給定精度eps。

輸入格式:
輸入在一行中給出一個正實數eps。

輸出格式:
在一行中按照“sum = S”的格式輸出部分和的值S,精確到小數點後六位。題目保證計算結果不超過雙精度範圍。

輸入樣例1:

4E-2

輸出樣例1:

sum = 0.854457

輸入樣例2:

0.02

輸出樣例2:

sum = 0.826310

原始碼

#include<stdio.h>
#pragma warning(disable:4996)
//不確定迴圈次數,就用while迴圈 此題用do-while迴圈 int main() { double eps; scanf("%lf", &eps); double sum = 1; int i = 1; /*for (int i = 1; i < 1000000; i++) { if (i % 2 != 0) { sum += 1 * 1.0 / ((i - 1) * 3 + 1); if (1 * 1.0 / ((i - 1) * 3 + 1) <= eps) { break; } } else { sum -= 1 * 1.0 / ((i - 1) * 3 + 1); if (1 * 1.0 / ((i - 1) * 3 + 1) <= eps) { break; } } }*/
while (1 * 1.0 / ((i - 1) * 3 + 1)>eps) { i++;//設初始sum為1, //i++寫在參與運算的前面,i就可以先參與運算後再去判斷迴圈條件 if (i % 2 != 0) { //最後一個數是<=eps的,也會參與進去 sum += 1 * 1.0 / ((i - 1) * 3 + 1); } else { sum -= 1 * 1.0 / ((i - 1) * 3 + 1); } } printf("sum = %.6lf", sum); getchar(); getchar(); return
0; }

***謝謝!!!