我想比较两个不同的int
数组。一个数组是静态的,包含1到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");
}
}
}
即使我输入的数字等于存储在第一个数组中的数字,程序总是说不相等。
答案 0 :(得分:3)
数组使用基于零的索引作为开始。您错误地填充了error: no commands supplied
,因此您可能希望将第一个循环更改为以下
array2
因为您当前的代码只是将 for (i=0;i<10;i++)
{
printf("Enter numbers: ");
scanf("%d", &array2[i]);
}
的地址作为参数传递给array2
。
然后将第二个循环条件更改为
scanf
在比较循环中,这样就不会访问数组边界之外的项目。
目前您的第二个循环是访问索引0到10的项目 - 但 for (i=0;i<10;i++)
中只有10个项目存在,因此您对当前代码的行为未定义。
答案 1 :(得分:1)
#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<10;i++) { //fixed the range here
printf("Enter numbers: ");
scanf("%d", &array2[i]); //fixed the indexing
}
for (i=0;i<10;i++) { //fixed the range here
if (array1[i] != array2[i]) {
printf("Not equal \n");
}
else {
printf("They are equal. \n");
}
}
}
答案 2 :(得分:1)
scanf("%d", &array2);
从输入中获取值时,您永远不会更新array2
的索引。
尝试
scanf("%d", &array2[i]);
至于比较,您还可以使用memcmp
来比较内存:
memcmp(array1, array2, sizeof(array1));
答案 3 :(得分:0)
我正在尝试回答这个问题,即使我是C程序的初学者。
根据您上面编写的程序,您正在输入并保存具有11个元素的int array2[10]
值。
请记住,此数组的第一个元素的索引为零。例如:array2[0]
,直到它到达array2[10]
的最后一个元素,你就算了11。
现在array1
具有预先定义的值write,将与您的输入值进行比较。输入您的值并将其存储到array2[]
。
#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<10;i++) { //fixed the range here
printf("Enter numbers: ");
scanf("%d", &array2[i]); //fixed the indexing
if (array1[i] != array2[i]) {
printf("Not equal \n");
}
else {
printf("They are equal. \n");
}
}
}
答案 4 :(得分:0)
我是一个初学者,我有比较两个数组的想法。希望它可能对像我这样的人有所帮助。
/***compare two array: all elements are same or not(if not sorted
)***/
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int array1[n], array2[n];
int i, j;
for(i=0; i<n; i++)
{
scanf("%d", &array1[i]);
}
for(i=0; i<n; i++)
{
scanf("%d", &array2[i]);
}
int flg=0;
for(i = 0; i < n; i++)
{
for(j=0; j<n; j++)
{
if(array1[i] == array2[j])
{
flg += 1;
break;
}
}
}
if(flg == n)
{
printf("All The Elements of array1 is present in array2... :)");
}
else
{
printf("All THe Elements of array1 is not present in array2 :(");
}
return 0;
}