所以,我必须以相反的顺序打印出我的数组,避免重复。 代码工作正常,除了一个错误: 输出必须是:
100000
9995
992
22
14
打印到屏幕
-292742
100000
9995
992
22
14
这第一个垃圾价值来自哪里,我不知道。我认为错误在于这个特定的功能,但我不知道在哪里。我需要避免这种垃圾值。其余的实现工作完美。
int last;
int count = 0;
for(int i = lengthOfArray-1; i >=0; i--){
if(last == arr[i]){
++count;
}else{
cout << last << endl;
count = 1;
}
last = arr[i];
}
if (count > 0) {
cout << last << endl;
}
答案 0 :(得分:1)
您应该初始化last
,否则会被垃圾填满,根据您的逻辑,它会打印last
。
int last = arr[lengthOfArray-1];
int count = 0;
for(int i = lengthOfArray-1; i >=0; i--){
if(last == arr[i]){
++count;
} else{
cout << last << endl;
count = 1;
}
last = arr[i];
}
if (count > 0) {
cout << last << endl;
}
答案 1 :(得分:0)
您正在使用未初始化的值(last
)并首先将其与arr[i]
进行比较,然后在不等于a[i]
时将其输出。使用未初始化的值将是未定义的行为。在这种情况下,最后恰好被初始化为-292742
,这解释了输出。
答案 2 :(得分:0)
else{
last = arr[i];
cout << last << endl;
count = 1;
}
你的其他声明应该是这样的