整数

2014-03-13 13 views
2

这里阵列相比,我比较两个数组元素,如果数组元素是相等的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; 
} 
+0

向我们展示你已经尝试了数组元素。 –

+0

numbersA = 1 2 3 4 number B = 1 0 0 0 – RKNAYAK

+1

您在每次循环迭代中设置'password_set',以便结果会告诉您第10个数字是否相等。 –

回答

4

你的逻辑是错误的。一旦一对数字不相等,您必须立即退出循环。

而且你也只需要一个循环:

password_set = 1 ; 

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

然后在哪里设置password_set = 1;如果我将全局设置为1,它将始终为1.如果数组等于1,则只设置为1否则设为零 – RKNAYAK

+0

您在循环之前设置'password_set = 1',如答案中所示。如果这两个数组不同,'password_set'将被设置为0,否则它将保持为1. –

1

你在比较阵列的每个值你的(如果(numbersA [I] == numbersB [J]。)

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

而且顺便说一句,你只需要一个循环

0

其实,你比较wron G。因为你想测试两个数组是否相等,所以你只需测试这两个数组的每一个数。

这样的:

password_set = 1; 

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

对不起,我的错误

+1

如果只有一对相等的话,password_set标志实际上不应该被设置回1(这会覆盖之前发现的不平等) 。您可以将它初始化为1,并在找到第一个不等式时退出,或者为了上帝的缘故继续循环结束,但不要在循环中以1覆盖0。 –

+1

如果您对安全苛刻的软件感兴趣,也许苹果有一份工作机会;-)(scnr) –