我正在教自己循环使用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;
}
}
答案 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循环是否因为密码是正确的还是因为用户用完了重试而停止。