如何计算循环中的迭代次数
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 );
我正在自学 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 );