C++ 如何将偶数值复制到数组中并显示它们?

C++ 如何将偶数值复制到数组中并显示它们?,c++,arrays,C++,Arrays,所以我有点问题,但我不知道是我的代码还是我的编译器造成了这个问题。我的任务是让用户输入整数,而程序将偶数存储在一个数组中,将赔率存储在另一个数组中。当用户输入0时,程序应该显示他们输入了多少个偶数和多少赔率,然后列出每个数组中的值 所以我很快就为它写了一个程序,我认为它会工作得很好。没有这样的运气。它总是得到正确的偶数和赔率数,但它通常不列出数组中的数字,而是列出用户输入的最后x个数字(x等于该数组中的元素数)。我偶尔也会在输出的末尾出现奇怪的5位数以上的整数 现在,问题是,我的代码看起来没有任

所以我有点问题,但我不知道是我的代码还是我的编译器造成了这个问题。我的任务是让用户输入整数,而程序将偶数存储在一个数组中,将赔率存储在另一个数组中。当用户输入0时,程序应该显示他们输入了多少个偶数和多少赔率,然后列出每个数组中的值

所以我很快就为它写了一个程序,我认为它会工作得很好。没有这样的运气。它总是得到正确的偶数和赔率数,但它通常不列出数组中的数字,而是列出用户输入的最后x个数字(x等于该数组中的元素数)。我偶尔也会在输出的末尾出现奇怪的5位数以上的整数


现在,问题是,我的代码看起来没有任何错误,所以我认为可能是我的编译器造成了问题

总之,这是我的代码:

#include <iostream>
using namespace std;
int main() {
    int input, remainder, even = 0, odd = 0;
    int evenArray[even];
    int oddArray[odd];
    cout << "This program accepts integers until you enter 0.\nPlease enter a value: ";
    cin >> input;
    while (input != 0) {
        remainder = input % 2;
        if (remainder == 0) {
            evenArray[even] = input;
            even++;
        }
        else {
            oddArray[odd] = input;
            odd++;
        }
        cout << "Enter another integer: ";
        cin >> input;
    }
    cout << "\nThe number of evens is " << even << ".\n";
    cout << "The even values are: ";
    for(int i = 0; i < even; i++) {
        cout << evenArray[i] << " ";
    }
    cout << endl;
    cout << "The number of odds is " << odd << ".\n";
    cout << "The odd values are: ";
    for(int i = 0; i < odd; i++) {
        cout << oddArray[i] << " ";
    }
}

如果有人能告诉我这里有什么问题,我将不胜感激。

我想知道你是如何编译的

无论如何,使用
std::vector
作为“动态数组”,因为您不知道用户将输入多少个数字

另一件事是,您可以通过使用二进制运算符
&
来加速奇偶校验。你只需简单地用1和你的号码,就像那样
someNumber&1
。如果结果为1,则数字为奇数

范例

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> even, odd;
    int userDecision;
    while(cin >> userDecision && userDecision) {
        int input;
        cin >> input;
        if((input & 1) == 1) {
            odd.push_back(input);
        } else {
            even.push_back(input);
        }
    }

    cout << "Number of evens " << even.size() << endl;
    // Print even numbers
    cout << "Number of odds " << odd.size() << endl;
    // Print odd numbers

    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
向量偶、奇;
int用户决策;
while(cin>>userDecision&&userDecision){
int输入;
cin>>输入;
如果((输入&1)==1){
奇数。推回(输入);
}否则{
偶数。推回(输入);
}
}

我想知道你是怎么把它编译出来的

无论如何,使用
std::vector
作为“动态数组”,因为您不知道用户将输入多少个数字

另一件事是,您可以通过使用二进制运算符
&
来加速奇偶校验。您只需将数字与1相加,就像
someNumber&1
那样。如果结果为1,则该数字为奇数

范例

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> even, odd;
    int userDecision;
    while(cin >> userDecision && userDecision) {
        int input;
        cin >> input;
        if((input & 1) == 1) {
            odd.push_back(input);
        } else {
            even.push_back(input);
        }
    }

    cout << "Number of evens " << even.size() << endl;
    // Print even numbers
    cout << "Number of odds " << odd.size() << endl;
    // Print odd numbers

    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
向量偶、奇;
int用户决策;
while(cin>>userDecision&&userDecision){
int输入;
cin>>输入;
如果((输入&1)==1){
奇数。推回(输入);
}否则{
偶数。推回(输入);
}
}

启动器可变长度数组的CUT< P>不是标准C++特性,而且你可能不声明数组中的元素数等于0,如这个

int input, remainder, even = 0, odd = 0;
int evenArray[even];
int oddArray[odd];
而这样的声明毫无意义

如果在编译时数组的大小未知,则使用标准容器
std::vector

这是一个演示程序

#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    std::vector<int> evenArray, oddArray;
    int input;

    cout << "This program accepts integers until you enter 0.\nPlease enter a value: ";

    while ( cin >> input and input != 0 ) 
    {
        if ( input % 2 == 0) 
        {
            evenArray.push_back( input );
        }
        else 
        {
            oddArray.push_back( input );
        }

        cout << "Enter another integer: ";
    }

    cout << "\nThe number of evens is " << evenArray.size() << ".\n";
    cout << "The even values are: ";
    for ( int x : evenArray ) 
    {
        cout << x << ' ';
    }
    cout << endl;

    cout << "The number of odds is " << oddArray.size() << ".\n";
    cout << "The odd values are: ";
    for ( int x : oddArray ) 
    {
        cout << x << ' ';
    }
    cout << endl;

    return 0;
}
#包括
#包括
int main()
{
使用名称空间std;
std::矢量阵列,oddArray;
int输入;
cout>输入和输入!=0)
{
如果(输入%2==0)
{
evenArray.push_back(输入);
}
其他的
{
oddArray.push_back(输入);
}

启动器可变长度数组的CUT< P>不是标准C++特性,而且你可能不声明数组中的元素数等于0,如这个

int input, remainder, even = 0, odd = 0;
int evenArray[even];
int oddArray[odd];
而这样的声明毫无意义

如果在编译时数组的大小未知,则使用标准容器
std::vector

这是一个演示程序

#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    std::vector<int> evenArray, oddArray;
    int input;

    cout << "This program accepts integers until you enter 0.\nPlease enter a value: ";

    while ( cin >> input and input != 0 ) 
    {
        if ( input % 2 == 0) 
        {
            evenArray.push_back( input );
        }
        else 
        {
            oddArray.push_back( input );
        }

        cout << "Enter another integer: ";
    }

    cout << "\nThe number of evens is " << evenArray.size() << ".\n";
    cout << "The even values are: ";
    for ( int x : evenArray ) 
    {
        cout << x << ' ';
    }
    cout << endl;

    cout << "The number of odds is " << oddArray.size() << ".\n";
    cout << "The odd values are: ";
    for ( int x : oddArray ) 
    {
        cout << x << ' ';
    }
    cout << endl;

    return 0;
}
#包括
#包括
int main()
{
使用名称空间std;
std::矢量阵列,oddArray;
int输入;
cout>输入和输入!=0)
{
如果(输入%2==0)
{
evenArray.push_back(输入);
}
其他的
{
oddArray.push_back(输入);
}
您有两个问题:

<>代码> int EnWaldSt[偶数];一般,C++不支持可变长度数组。有些编译器做但不应该这样做。

2) 即使1)不是真的,您也会初始化大小为
0
偶数
奇数

<> P> >就像我说的是C++,你应该总是尝试使用<代码> STD::vector < /COD>或<代码> STD::数组< /代码>如果大小已经知道了,下面是你的程序应该如何看:

#include <iostream>
#include <vector>

int main() {

   std::vector<int> even, odd;
   int input;

   std::cout << "This program accepts integers until you enter 0.\nPlease enter a value: ";
   while (std::cin >> input && input != 0)
       (input % 2 == 0) ? even.push_back(input) : odd.push_back(input);

   std::cout << "\nThe number of evens is " << even.size() << ".\n";
   std::cout << "The even values are: ";
   for(unsigned i = 0; i < even.size(); ++i)
       std::cout << even[i] << " ";

   std::cout << std::endl << "The number of odds is " << odd.size() << ".\n";
   std::cout << "The odd values are: ";
   for(unsigned i = 0; i < odd.size(); ++i)
       std::cout << odd[i] << " ";

   return 0;
}
#包括
#包括
int main(){
向量偶数、奇数;
int输入;
std::cout>input&&input!=0)
(输入%2==0)?偶数。推回(输入):奇数。推回(输入);
std::cout您有两个问题:

<>代码> int EnWaldSt[偶数];一般,C++不支持可变长度数组。有些编译器做但不应该这样做。

2) 即使1)不是真的,您也会初始化大小为
0
偶数
奇数

<> P> >就像我说的是C++,你应该总是尝试使用<代码> STD::vector < /COD>或<代码> STD::数组< /代码>如果大小已经知道了,下面是你的程序应该如何看:

#include <iostream>
#include <vector>

int main() {

   std::vector<int> even, odd;
   int input;

   std::cout << "This program accepts integers until you enter 0.\nPlease enter a value: ";
   while (std::cin >> input && input != 0)
       (input % 2 == 0) ? even.push_back(input) : odd.push_back(input);

   std::cout << "\nThe number of evens is " << even.size() << ".\n";
   std::cout << "The even values are: ";
   for(unsigned i = 0; i < even.size(); ++i)
       std::cout << even[i] << " ";

   std::cout << std::endl << "The number of odds is " << odd.size() << ".\n";
   std::cout << "The odd values are: ";
   for(unsigned i = 0; i < odd.size(); ++i)
       std::cout << odd[i] << " ";

   return 0;
}
#包括
#包括
int main(){
向量偶数、奇数;
int输入;
std::cout>input&&input!=0)
(输入%2==0)?偶数。推回(输入):奇数。推回(输入);

std::cout Hint:int evenArray[偶数];
在将
偶数
初始化为
0
时会做什么?“现在,问题是,我的代码看起来没有任何问题,所以我认为它可能是我的编译器。”不是这样,它不会编译。1)
int evenArray[偶数]即使C++中的可变长度数组,即使代码长度可变,也可以是“代码> > 0”<代码>。BTW这是C++,使用<代码> STD::向量< /代码>或<代码> STD::数组< /代码>如果你已经知道大小。你的代码看起来没有什么问题吗???