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