【发布时间】:2023-01-17 18:29:40
【问题描述】:
#include <iostream>
using namespace std;
int main()
{
const int ARRAY_SIZE = 10;
int value[ARRAY_SIZE] = { 1, 2, 3, 4, 3, 4, 2, 3, 5, 6};
int value2[100];
for (int i = 0; i < ARRAY_SIZE; i++)
{
for (int j = i + 1; j <= ARRAY_SIZE; j++)
{
if (value[i] == value[j])
{
cout << value[i] << " ";
}
}
}
return 0;
}
输出是
2 3 3 4 3
如何使输出成为 2 3 4 ?
我想我应该再创建一个数组来存储值,但我坚持了下来,不知道该怎么做。
【问题讨论】:
-
for (int j = i + 1; j <= ARRAY_SIZE; j++)您将在此处访问value[ARRAY_SIZE]:value[j],它在数组之外。你会得到未定义的行为。首先开始解决这个问题。 -
请确定:您是否尝试打印在
value数组中出现不止一次的所有数字?请edit并澄清。 -
一种可能的方法: 1. 将所有值存储在
value2而不是打印它们。 2. 现在再写一段代码,只打印一次value2的所有值;该算法类似于您已经编写的内容。