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

时间:2015-06-21 18:16:53

标签: c loops while-loop

我正在教自己循环使用C,我想知道用户如何只用密码3次

当第一次正确时它返回正确,我的当前循环不能达到预期目的。

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;
    }
}

3 个答案:

答案 0 :(得分:3)

要在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;
}

答案 1 :(得分:2)

我认为你的意思是以下

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 );

答案 2 :(得分:0)

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

你的if,否则,其他人永远不会到达最后的其他地方。你的第一个else不需要任何if条件,因为它的当前条件是if行的条件的倒数。

您可能希望获得while(1)之类的内容,而不是拥有while(--attempts_left>0)。您可能不希望在最后的其他内容中有任何中断,而您可能希望在密码正确时中断while循环。在while循环之外,您可能想要检查while循环是否因为密码是正确的还是因为用户用完了重试而停止。