整数的数组比较

时间:2014-03-13 07:35:11

标签: c++ c

这里我比较两个数组元素,如果数组元素相等SETPASSWORD=1;SETPASSWORD=0; 但是这里总是打印​​密码设置状态1甚至数组不相等

#include <stdio.h>
#define ARY_SIZE 4
int password_set;
int main (void)
{
  //Local Declarations
  int numbersA[ARY_SIZE];
  int numbersB[ARY_SIZE];
  int i;
  int j;

  //Statements
  printf("Please Enter 10 Integers For Array A\n");
  for (int i = 0; i < ARY_SIZE; i++)
    scanf("%d", &numbersA[i]);

  printf("\nPlease Enter 10 Integers For Array B\n");
  for (int j = 0; j < ARY_SIZE; j++)
    scanf("%d", &numbersB[j]);

  for (int i = 0; i < ARY_SIZE; i++)
  {
    for (int j = 0; j < ARY_SIZE; j++)
    {
      if (numbersA[i] == numbersB[j])
        password_set=1;
      else
        password_set=0;
    }
  }
  printf(" password setstaus =%d",password_set);
  return 0;
}

3 个答案:

答案 0 :(得分:4)

你的逻辑错了。只要一对数字不相等,就必须退出循环。

而且你只需要一个循环:

password_set = 1 ;

for (int j = 0; j < ARY_SIZE; j++)
{
  if (numbersA[j] != numbersB[j])
  {
    password_set = 0;
    break ;
  }
}

答案 1 :(得分:1)

比较你的数组中的每个数值(if(numbersA [i] == numbersB [j])

它会在每次迭代时重置password_set的值。这意味着打印的结果将是数组的最后一个索引。

顺便说一下,你只需要一个循环

答案 2 :(得分:0)

实际上,你的比较是错误的。因为要测试两个数组是否相等,所以只需测试这两个数组中的每个数组。

像这样:

    password_set = 1;

    for (int i = 0; i < ARY_SIZE; i++) {
        if (numbersA[i] != numbersB[i]) {
            password_set=0;
            break;
        }
    }

为我的错误感到难过