【发布时间】:2021-10-22 12:45:40
【问题描述】:
我是一名初级程序员,我需要一些练习方面的帮助!正如您在标题中看到的那样,练习要求编写一个程序来比较 2 个数组的元素,以确定它们是否具有相同的元素。诀窍是第二个数组中的元素可能与第一个数组中的元素顺序不同。 我认为解决此问题的一种方法可能是重新排列 2 个数组以使它们按升序排列,但由于某种原因,它一直说数组具有相同的元素。你能帮帮我吗?
这是代码:
int main()
{
int v[N];
int v2[N];
int i,j;
int a;
int b;
int flag = 0;
printf("Please enter the values of the 1st array: ");
for (i = 0; i < N; i++)
{
scanf("%d",&v[i]);
}
for (i = 0; i < N; i++)
{
for(j=i+1; j<N; j++)
{
if(v[i]>v[j])
{
a = v[i];
v[i] = v[j];
v[j] = a;
}
}
}
printf("\nPlease enter the values of the 2nd array: ");
for (i = 0; i < N; i++)
{
scanf("%d", &v2[i]);
}
for (i = 0; i < N; i++)
{
for (j = i + 1; j < N; j++)
{
if (v2[i] > v2[j])
{
b = v2[i];
v2[i] = v2[j];
v2[j] = b;
}
}
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
if (v[i] == v2[j])
{
flag=1;
}
}
}
if (flag == 1)
printf("\nThe arrays have the same numbers! ");
else
printf("\nThe arrays dont have the same numbers!");
return 0;
}
【问题讨论】:
-
“不工作”从来都不是一个好的问题描述。你得到什么错误或不正确的行为?您是否进行过任何基本调试来回答基本问题,例如输入数组是否正确、排序后的数组是否正确、是否正在比较正确的值等? How to debug small programs.
-
好的,我更改了文本。问题是它一直说数组具有相同的元素,除非这 3 个元素完全不同。如果其中一个相同,则表示它们具有相同的元素
-
那么调试呢?你做过基本的调试吗?请注意,仅运行程序不是调试(即测试)。在调试器中单步执行代码和/或添加更多调试打印语句以跟踪程序流程和变量值,以找出首先出错的地方。
-
如果您要检查第一个数组的每个元素与第二个数组的每个元素,我真的不确定为什么要对这些数组进行排序。这使得排序只是浪费时间
-
就是这样。我试图找出问题可能出在哪里,根据我的想法,我做对了。我从第一个数组中取出一个元素并将其与第二个数组的所有元素进行比较,如果匹配,我将标志设置为 1 并移动到第二个元素,依此类推。问题主要在于我是如何写比较的,但我不知道如何正确写。
标签: c