如何计算循环中的迭代次数

How to count iteration on a loop

我正在自学 C 语言循环,我想知道用户如何才能仅尝试 密码 3 次

当第一次正确时 returns 正确,我的当前循环没有达到预期效果。

int password = 8795, guessed = 3;

while(1) {

    printf("\n\n");
    printf("Please Enter Your Password");
    scanf ("%d ", &guessed);

    if (guessed == password ) {
        printf("Correct Password");
    } else if(guessed != password) {
        printf("Please try again for the second time");
    } else {
        printf("Please try again for the last time");
        break;
    }
}

要在 C 中循环 n 次,请使用 for 循环:

for(int i = 0; i < n; i++) {
  /* loop contents */
}

在这种情况下,将 n 替换为 3。但是,在您的情况下,按照@Michiel Uit Het Broek 的建议阅读代码并使用 while 循环更有意义:

int guessesLeft = 3;
while(guessesLeft > 0) {
  /* loop contents */
  guessesLeft--;
}

要在密码正确的情况下退出循环,请使用break:

if(guessed == password) {
  break;
}

我不会将 guessed 初始化为 3,而是添加一个新变量,可能称为 attempts_left 并将其初始化为 4。您的 guessed 变量会被用户输入覆盖。

你的if,else,else永远到不了最后一个else。您的第一个 else 不需要任何 if 条件,因为它的当前条件与 if 行的条件相反。

您可能想要 while(--attempts_left>0) 而不是 while(1)。您可能不希望在最后一个 else 中有任何中断,相反,您可能希望在密码正确时中断 while 循环。在 while 循环之外,您可能需要检查 while 循环结束是因为密码正确还是因为用户 运行 没有重试。

我想你的意思如下

int password = 8795, guessed;
int attempts = 3;
int valid = 0;

printf("\n\n");
printf("Please Enter Your Password");
do
{
    scanf ("%d ", &guessed);
    --attempts;

    if ( valid = guessed == password )
    {
        printf("Correct Password");
    }
    else if( attempts != 1 )
    {
        printf("Please try again for the second time");
    }
    else
    {
        printf("Please try again for the last time");
    }
} while ( !valid && attempts != 0 );