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

C++ 數組篩選:負數優先、3的倍數次之、其餘置零

     編輯:程式設計綜合問答

題目要求

數組 a[8] = {2,33,-6,5,-82,30,99,21},構建數組 b:
1. 先存所有負數
2. 再存 >0 且是 3 的倍數
3. 剩餘位置填 0

錯誤代碼分析


for (j = 1; j < 8; j++)  // 錯誤:從 1 開始,b[0] 未輸出
    cout << b[j] << " ";

導致第一個元素(-6)被跳過,輸出從 -82 開始。

修正代碼


#include 
using namespace std;

int main() {
    int a[8] = {2, 33, -6, 5, -82, 30, 99, 21};
    int b[8] = {0};
    int j = 0;

    // 1. 負數
    for (int i = 0; i < 8; ++i)
        if (a[i] < 0) b[j++] = a[i];

    // 2. 正數且3的倍數
    for (int i = 0; i < 8; ++i)
        if (a[i] > 0 && a[i] % 3 == 0) b[j++] = a[i];

    // 3. 輸出(從 0 開始)
    for (j = 0; j < 8; ++j)
        cout << b[j] << " ";
    // 輸出: -6 -82 33 30 99 21 0 0
    return 0;
}

關鍵點

  • 兩輪遍歷保證順序:先負數、後倍數,原數組相對順序保持。
  • 輸出循環**必須從 0 開始**,否則首元素丟失。
  • 初始化 b[8] = {0} 自動填充剩餘位置為 0。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved