練習4-3 求給定精度的簡單交錯序列部分和 (15分)
阿新 • • 發佈:2021-01-19
技術標籤:# 浙大版《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;
}
***謝謝!!!