一个关于c++循环的问题?


#include<iostream>
using namespace std;
int main() {
    int n, i;
    int arr[100];
    int prr[100];
    int count=0;
    while (cin >> n) {
        int b = 0;
        for (i = 0; i < n; i++) {
            cin >> arr[i];
        }
        for (i = 0; i < n;) {
            if (arr[i] % 2 == 0) {
                cout << arr[i] << endl;
            }
            else {
                prr[b] = arr[i];
                count++;
                b++;
            }
            i++;
            
        }
        for (b = 0; b < count; b++) {
            cout << prr[b] << endl;
        }
    }
    return 0;
}
    

img

两次结果不一样?
错在哪里了?

数组大小未知,用动态数组比较好使。

#include<iostream>
using namespace std;
int main() {
    int n, i;
    int *arr;//
    int *prr;//
    int count=0;
    while (cin >> n) {
        //int b = 0;
        arr=new int[n];//
        prr=new int[n];//
        for (i = 0; i < n; i++) {
            cin >> arr[i];
        }
        count=0;/////
        for (i = 0; i < n;i++) {//
            if (arr[i] % 2 == 0) {
                cout << arr[i] << endl;
            }
            else {
                //prr[b] = arr[i];
                prr[count] = arr[i];
                count++;
                //b++;
            }
            //i++;
        }
       
        //for (b = 0; b < count; b++) {
        for ( i = 0; i < count; i++) {
            cout << prr[i] << endl;//
        }
        cout << endl;//
        delete[] arr;//
        delete[] prr;//
    }
    return 0;
}

每次循环开始时,count值没有初始化,导致不断累加