我有这个代码...对于一个从用户那里获得7个数字并将其放入数组1的函数....然后创建一个随机数并将它们放入数组2中....检查是否有一个共同的价值......(不仅在同一个地方,例如:不仅如果ar1 [1] == ar2 [1] ......而且如果有共同的价值则检查所有地方)...... 。并将不同的值放在第三个数组中......创建第三个数组并将不常见的值放入其中......这是我的代码:
//includes
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <time.h>
//define
#define N 7
//prototype
void randomArray(int maxVal,int ar2[]);
int main()
{
//variables/arrays
int ar1[N],ar2[N],ar3[N],i,z,t,temp,maxVal,counter;
printf("Please Enter %d numbers: ",N);
for(i=0;i<7;i++)
{
scanf("%d",&ar1[i]);
}
while(1)
{
printf("Please enter a max value: ");
scanf("%d",&maxVal);
if(maxVal>0)
break;
}
randomArray(maxVal,ar2);
getch();
return 0;
}
//randomArray
void randomArray(int maxVal,int ar2[])
{
int i;
for(i=0;i<N;i++)
{
/* get random value between minVal and maxVal */
ar2[i] = (rand() % (maxVal+1 - 1)) + 1;
}
}
答案 0 :(得分:1)
这是简单的蛮力方法。它首先将数组1中的每个元素与数组2中的每个元素进行比较,如果它不在数组2中则存储它。然后它对数组2执行相同的操作。然后它打印数组3.
注意:如果没有匹配项,您需要将数组3的大小更改为N * 2。此外,首先将数组3中的所有元素设置为0以标记为非结果。或者跟踪数组3的长度。
int ar3[N*2] = {0};
int index = 0;
//Check 1st array
printf("Array 1:\t");
for (int i = 0; i < N; i++) {
bool in_array = false;
for (int k = 0; k < N; k++) {
if (ar1[i] == ar2[k]) {
in_array = true;
break;
}
}
if (!in_array) {
ar3[index++] = ar1[i];
}
printf(" %d", ar1[i]);
}
//Check 2nd array
printf("\r\nArray 2:\t");
for (int i = 0; i < N; i++) {
bool in_array = false;
for (int k = 0; k < N; k++) {
if (ar2[i] == ar1[k]) {
in_array = true;
break;
}
}
if (!in_array) {
ar3[index++] = ar2[i];
}
printf(" %d", ar2[i]);
}
// Print result
printf("\r\nUnique:\t");
for (int i = 0, j = 0; i < N*2; i++) {
if (0 == ar3[i]) {
break;
}
printf(" %d", ar3[i]);
}
如果这对你有用,请接受正确答案。