整數

2014-03-13 36 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) –