首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ while 迴圈條件判斷錯誤:變數初始值導致迴圈零次執行

     編輯:程式設計疑難解答

錯誤程式碼分析

int Cleo_profit = 100;
int Daphne_profit = 100;

while (Cleo_profit < Daphne_profit) {
    // 迴圈體
}

問題:Cleo_profit 與 Daphne_profit 初始值均為 100,條件 100 < 100 為 false,迴圈零次執行。

修正方向

  1. 調整初始值:若需迴圈至少執行一次,確保初始條件成立(如 Cleo_profit = 90)。
  2. 改用 do-while:保證迴圈體至少執行一次,再判斷條件。
    do {
        // 迴圈體:更新利潤
        Cleo_profit += ...;
        Daphne_profit += ...;
    } while (Cleo_profit < Daphne_profit);
    
  3. 在迴圈內修改變數使條件最終為 false:確保迴圈體中有邏輯讓 Cleo_profit 增長超過 Daphne_profit。

完整修正範例(假設題目:Cleo 每年複利 5%,Daphne 每年單利 10%,求幾年 Cleo 超過 Daphne)

#include <iostream>
using namespace std;

int main() {
    double cleo = 100.0;
    double daphne = 100.0;
    int year = 0;

    do {
        cleo *= 1.05;      // 複利
        daphne += 10.0;    // 單利
        year++;
        cout << "Year " << year << ": Cleo=" << cleo << ", Daphne=" << daphne << endl;
    } while (cleo <= daphne);

    cout << "After " << year << " years, Cleo exceeds Daphne." << endl;
    return 0;
}

關鍵點提醒

  • while 是先判斷後執行,條件初始為 false 則不進入。
  • do-while 是先執行後判斷,至少執行一次。
  • 迴圈變數必須在迴圈內正確更新,否則陷入無限迴圈或零次執行。
  • 浮點數比較建議使用 <= 或設定誤差範圍,避免精度問題導致多跑/少跑一次。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved