这里我比较两个数组元素,如果数组元素相等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 :(得分: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;
}
}
为我的错误感到难过