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

C++ 循環嵌套數組越界與邏輯錯誤修正

     編輯:程式設計疑難解答

問題代碼


#include 
using namespace std;
int main() {
    int a, b, i, c[4];
    cin >> a;
    for (i = 1; i <= a; i++) {
        for (b = 1; b <= 4; b++) {
            cin >> c[b]; // 錯誤1:下標越界
        }
        cout << c[1] << c[2] << c[3] << c[4] << a; // 錯誤2:c[4] 越界
    }
    return 0;
}

錯誤分析

  1. 數組下標越界:c[4] 只有 4 個元素,合法下標 0~3。循環 b=1; b<=4; b++ 訪問 c[1]~c[4],c[4] 越界,導致未定義行為(可能覆蓋變量 a)。
  2. 外層循環邏輯無意義:i=1; i<=a; i++ 重複讀取 a 次數據,每次覆蓋數組,只有最後一次輸出有效。

修正代碼


#include 
using namespace std;
int main() {
    int a, b, i, c[4];
    cin >> a; // 輸入 a(用途不明,示例保留)
    for (b = 0; b < 4; b++) { // 下標 0~3
        cin >> c[b];
    }
    for (b = 0; b < 4; b++) {
        cout << c[b] << " ";
    }
    cout << a;
    return 0;
}

關鍵點

  • C++ 數組下標從 0 開始,長度 N 合法範圍 [0, N-1]。
  • 循環條件用 b < 4 而非 b <= 4。
  • 避免無意義的重複讀取覆蓋,除非需處理多組數據。
  • 開啟編譯器警告(-Wall -Wextra)可捕獲部分越界。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved