【发布时间】:2016-02-20 22:56:13
【问题描述】:
我想比较两个不同的数组,它们都是int。一个数组是静态的,包含从 1 到 10 的数字,第二个数组要求用户输入 10 个不同的数字,程序会检查两个数组中哪些元素相等。
#include <stdio.h>
int main(void) {
int array1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int array2[10];
int i;
for (i = 0; i < 11; i++) {
printf("Enter numbers: ");
scanf("%d", &array2);
}
for (i = 0; i < 11; i++) {
if (array1[i] != array2[i]) {
printf("Not equal \n");
} else {
printf("They are equal. \n");
}
}
}
即使我输入的数字等于存储在第一个数组中的数字,程序也总是说不等于。
【问题讨论】:
-
你输入了什么,你看到了什么,你期望看到什么?
-
memcmp 是一个选项。
-
另外,每次获得输入时,您都在写入相同的 array2 索引。
-
您访问越界 - 数组的大小为 10,因此循环条件应为
i < 10,而不是i < 11。你的意思是在 scanf 行中的&array2[i]。