如何解决你能说出代码中的问题吗?
问题是我们必须在数组中找到重复的数字。有人能告诉我为什么这段代码不起作用吗?
int main()
{
int arr[] = {12,13,14,15,10};
int size = sizeof(arr)/sizeof(int);
int n;
for (int i = 0; i < size; i++)
{
for (int j = 1; j < size; j++)
{
if (arr[i] == arr[j])
{
n = arr[i];
break;
}
}
}
cout<<n;
return 0;
}
请告诉我问题。
解决方法
你需要让 j 从 i+1 开始,否则它可能会匹配自己作为重复数字。
int main()
{
int arr[] = {12,13,14,15,10};
int size = sizeof(arr) / sizeof(int);
int n;
for (int i = 0; i < size; i++)
{
for (int j = i + 1; j < size; j++)
{
if (arr[i] == arr[j])
{
n = arr[i];
break;
}
}
}
cout << n;
return 0;
}
,
找到重复项时,您的外部 for loop
不会中断。如果发现重复元素,您可以使用另一个变量并将其设置为 true
。
int main()
{
int arr[] = {12,10};
int size = sizeof(arr)/sizeof(int);
int n = 0;
bool duplicate_found = false;
for (int i = 0; i < size; i++)
{
for (int j = i + 1; j < size; j++)
{
if (arr[i] == arr[j])
{
n = arr[i];
duplicate_found = true;
}
}
if (duplicate_found) break;
}
cout << n;
return 0;
}
不要在此处使用 goto
语句。使用 goto
是一种不好的做法。正如@schtonn 建议的那样,从 i+1
开始您的内部循环。
break
仅带您脱离内部循环。如果你想跳出这两个循环,你需要 goto
语句。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。