C++ 在数组中查找偶数问题(C+;+;)
我的代码是提取一维数组中的奇数和偶数C++ 在数组中查找偶数问题(C+;+;),c++,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++)
#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;
}
结果表明,它成功地提取了奇数,但同样的方法也适用于偶数。当偶数为4时,它会出现问题
有人能帮我找到原因吗?谢谢。您可以使用
std::vectorodd
然后只调用odd。当elem
是odd时推回(elem)
。您有一个未定义的行为,因此结果可能是任意、偶数随机、偶数格式化的硬盘驱动器
int-odd[]={}
与int-odd[/*count of elements in{}*/]={/*nothing*/}
相同,因此它是int-odd[0]代码>
在访问数组末尾以外的元素时,未定义结果。
您可能需要考虑正确的奇偶数组大小,或者使用另一种自动调整大小的数据结构
首先,虽然没有引起问题,但可以使用数据初始化数组,然后覆盖它。代码
inta[6]={1,6,3,8,5,10};
可以替换为
inta[6];
此外,如评论中所述
int-odd[]={};
这是无效的。您应该分配一个与主缓冲区一样大的缓冲区(6个整数),或者使用一个向量(尽管我个人更喜欢c风格的数组,因为它们避免了堆分配和额外的复杂性)。使用全尺寸缓冲区技术,需要在数组中的值列表之后存储一个值,如-1
(假设您只想输入正数),以通知输出代码停止读取,或将大小存储在某个位置。这是为了防止读取尚未设置的值
当输入中有4时,我不理解你的问题。除了数组之外,您的代码看起来很好。您需要声明奇数
和偶数
的大小。它们默认为0个元素,因此您在边界之外赋值代码>无效C++。数组必须具有非零大小,由编译时常数决定。您可以使用<代码> STD::vector < /代码>,然后用“代码> > PASSUBACK()/代码>动态添加数字。另一个选项是将<代码>奇数[]/COD> > <代码>奇数[ 6 ] < /代码> BTW,考虑使用<代码> SIZEOF(数组)或甚至<代码> COUNTOF(数组)< /代码>,\u countof
或类似的for循环表达式。当您在四个不同的位置手动指定相同大小的数组时,在以后修改此代码时可能会遇到一些问题。
1
3
5
2
1
6