以相反的顺序打印数组,避免重复的 C++

printing array in reverse order avoiding duplicates c++

本文关键字:C++ 数组 顺序 打印      更新时间:2023-10-16

所以,我必须以相反的顺序打印出我的数组,避免重复。 代码工作正常,除了一个错误: 输出必须是:

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;
}

你应该初始化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;
}

您正在使用未初始化的值 (last),首先将其与arr[i]进行比较,如果它不等于a[i]则输出它。使用未初始化的值将是未定义的行为。在这种情况下,最后恰好被初始化为-292742这解释了输出。

else{
last = arr[i];
cout << last << endl;
count = 1;
}

你的 else 语句应该是这样的