关于#C++#的问题,如何解决?

(C++)将10个整数存入一个整型数组,按次序输出能被3整除的所有正的数组元素。遇到第一个非正数时停止所有操作并退出

#include <iostream>
using namespace std;

int main() {
    const int N = 10;
    int arr[N];
    int i;

    // 输入10个整数
    for (i = 0; i < N; i++) {
        cout << "请输入第" << i+1 << "个整数:";
        cin >> arr[i];
        if (arr[i] <= 0) {
            break;  // 遇到非正数,退出输入
        }
    }

    // 输出能被3整除的正数
    for (int j = 0; j < i; j++) {
        if (arr[j] > 0 && arr[j] % 3 == 0) {
            cout << arr[j] << " ";
        }
    }
    cout << endl;

    return 0;
}

参考gpt:

#include <iostream>

int main() {
    int numbers[10] = {4, 6, -1, 9, 12, 15, 2, 8, 10, -3};

    for (int i = 0; i < 10; i++) {
        if (numbers[i] <= 0) {
            std::cout << "Encountered a non-positive number. Exiting..." << std::endl;
            break;
        }

        if (numbers[i] % 3 == 0) {
            std::cout << numbers[i] << " is divisible by 3." << std::endl;
        }
    }

    return 0;
}


以下是使用 C++ 编写的解答:

#include <iostream>  
using namespace std;  
  
int main() {  
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  
    int count = 0;  
    for (int i = 0; i < 10; i++) {  
        if (arr[i] % 3 == 0 && arr[i] > 0) {  
            cout << arr[i] << " ";  
            count++;  
        }  
        if (arr[i] <= 0) {  
            break;  
        }  
    }  
    cout << endl;  
    cout << "Total count: " << count << endl;  
    return 0;  
}

该程序首先创建了一个包含10个整数的数组 arr,然后使用 for 循环遍历数组中的每个元素。在循环中,我们检查当前元素是否能被 3 整除(即 arr[i] % 3 == 0),并且是否为正数(即 arr[i] > 0)。如果满足这两个条件,则输出该元素,并将计数器 count 的值加1。如果当前元素为负数或零,则跳出循环。最后输出计数器的值,即能被 3 整除的正数的数量。