首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 循環練習題詳解:累加求和、階乘、調和級數、交替級數、圓周率逼近

     編輯:關於C++

題目一:1 到 m 的平方和

int main() {
    int m; cin >> m;
    long long sum = 0;
    for (int i = 1; i <= m; ++i) sum += 1LL * i * i;
    cout << sum << endl;
}

注意:i*i 可能溢出 int,用 1LL * i * i 提升至 long long。

題目二:1 到 m 間所有奇數和

int sum = 0;
for (int i = 1; i <= m; i += 2) sum += i;
// 或數學公式:n = (m+1)/2 項,和 = n²

題目三:調和級數 1 + 1/2 + 1/3 + ... + 1/m

double sum = 0;
for (int i = 1; i <= m; ++i) sum += 1.0 / i; // 1.0 強制浮點除法
cout << fixed << setprecision(6) << sum << endl;

關鍵:1 / i 是整數除法(結果 0),必須用 1.0 / i。

題目四:交替級數 1 - 1/2 + 1/3 - 1/4 + ... ± 1/m

double sum = 0;
int sign = 1;
for (int i = 1; i <= m; ++i) {
    sum += sign * (1.0 / i);
    sign *= -1; // 符號翻轉
}

題目五:m! 階乘

long long fact = 1;
for (int i = 1; i <= m; ++i) fact *= i;
cout << m << "! = " << fact << endl;

注意:13! 超過 int,21! 超過 long long。大數階乘需高精度/大整數庫。

進階題:累加求圓周率 π

萊布尼茨公式:π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
項的絕對值 1/(2n-1),當 < 1e-5 停止。

double pi = 0, term = 1;
int n = 1, sign = 1;
while (fabs(term) > 1e-5) {
    pi += sign * term;
    n += 2;
    term = 1.0 / n;
    sign *= -1;
}
pi *= 4;
cout << fixed << setprecision(6) << pi << endl;

循環構造對比:while vs for

場景推薦理由
已知迭代次數for初始化、條件、增量集中,可讀性強
未知次數,依條件終止while語義清晰:當條件滿足時繼續
至少執行一次do-while先執行後判斷

常見錯誤總結

  1. 整數除法:1/2 == 0,必須 1.0/2。
  2. 溢出:累加/乘積超出類型範圍,用 long long、double 或大整數。
  3. 浮點比較:while (term > 1e-5) 應用 fabs(term) > 1e-5。
  4. 循環變量作用域:C++17 for (int i=0; ...) 變量僅在循環內可見。

總結

循環是程序設計基石。掌握:三要素(初始、條件、增量)、類型選擇(整數/浮點/大數)、邊界條件、輸出格式控制。本文五道經典題覆蓋了累加、條件累加、調和級數、交替級數、收敛級數五大基本模式,是循環訓練的完整入門套餐。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved