簡體   English   中英

在數組問題中查找偶數(C ++)

[英]finding even numbers in the array issue (C++)

我的代碼是提取一維數組中的奇數和偶數。

#include <iostream>
using namespace std;

int main() {
    int a[6] = {1,6,3,8,5,10};
    int odd[]={};
    int even[]={};

    for (int i=0; i < 6; i++) {
        cin >> a[i];
    }

    for (int i=0; i < 6; i++) {
        if (a[i] % 2 == 1) {
            odd[i] = a[i];
            cout << odd[i] << endl;
        }
    }

    cout << " " << endl;

    for (int i=0; i < 6; i++) {
        if (a[i] % 2 == 0) {
            even[i] = a[i];
            cout << even[i] << endl;
        }
    }

    return 0;
}

輸出為:

1
3
5

2
1
6

它表明已成功提取了奇數,但對偶數應用了相同的方法。 偶數為4時會出現問題。

有人可以幫我在這里找到原因嗎? 謝謝。

您有未定義的行為,因此結果可能是任何硬盤,甚至是隨機硬盤,甚至是格式化的硬盤。

int odd[] = {}int odd[/*count of elements inside {}*/] = {/*nothing*/}相同,因此它是int odd[0];

當您訪問數組末尾以外的元素時,未定義結果。 您可能必須考慮正確的奇/偶數組大小,或使用其他可自動調整大小的數據結構。

首先,盡管不會造成問題,但是您可以使用數據初始化數組,然后將其覆蓋。 編碼

int a[6] = {1,6,3,8,5,10};

可以替換為

int a[6];

另外,如評論中所述,

int odd[]={};

無效。 您應該分配一個與主緩沖區一樣大的緩沖區(6個整數),或者使用一個向量(盡管我個人更喜歡c樣式的數組用於較小的大小,因為它們避免了堆分配和額外的復雜性)。 使用全尺寸緩沖區技術時,您需要一個類似於-1的值(假設您只打算輸入正數)存儲在數組中的值列表之后,以告訴您的輸出代碼停止讀取或將尺寸存儲在某個位置。 這是為了防止讀取尚未設置的值。

輸入4時,我不明白您的問題。 除了數組之外,您的代碼看起來還不錯。

您可以使用std::vector< int > odd; 然后僅調用odd.push_back(elem)elem是奇數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM