我需要一个要求用户输入密码的功能,在 3 次错误尝试后,他们的程序终止
I need a function that ask the user to enter a pin and after 3 wrong attempts, they program terminates
我必须为 class 编写一个 ATM 程序,但我不知道如何制作一个函数来要求用户提供密码,如果密码输入错误三次,程序将显示退出消息然后终止....这就是我所拥有的。我认为我的问题是我不知道处理我的问题的正确语法。
我知道我需要一个 for 循环,但不确定如何构造它。
void validate_acc(){
int user_acc_try;
printf("Please enter your account number: ");
scanf("%d", &user_acc_try);
if(user_acc_try != account_number){
printf("You entered the wrong account number");
}
else{
printf("");
}
}
void validate_pin(){
int user_pin_try;
printf("Please enter your pin number: ");
scanf("%d", &user_pin_try);
if(user_pin_try != pin){
printf("You entered the wrong pin number.");
}
else{
printf("");
}
}
void validate(){
validate_acc();
validate_pin();
}
其次,由于我每 90 分钟只能 post 不妨再问一个问题,我不知道如何使函数返回到我程序的开头,例如在存款后说,我需要使用什么逻辑才能让函数返回到我的主要函数的开头。我知道 goto
labels
,当我把它放在我的主要功能前面时,它似乎不起作用......
MAIN:
int main()
我会把 goto main;
放在另一个函数中,我会得到一个.... Main is not defined 错误。我在这里阅读了几个关于标签的不同问题,但找不到任何有帮助的东西,如果有人能指导我朝着正确的方向前进,你会给我很大的安慰。
提前致谢。
像我在下面所做的那样保留一个计数变量并检查尝试次数:
我认为这里不需要 goto
。相同的逻辑也可用于检查引脚。
int i=0;
while(1)
{
if(i>2)
{
printf("Maximum attempts reached\n");
break;
}
printf("Enter the acc_num\n");
scanf("%d", &user_acc_try);
if(acc_num == saved_acc_num)
{
// Do your stuff
}
i++;
}
我现在时间有限,所以我会 post 快速提供帮助。我建议开始研究 C 中的循环。由于这是针对 class 的,您使用的书应该包含有关 for 循环和 while 循环的信息,但如果没有,简单的 Google 搜索可以帮助很大。
通过在 Google 上快速搜索,这个站点似乎是一个提供循环基本信息的不错站点:
Loops in C
它包含使用 for 循环、while 循环、do...while 循环和嵌套循环的链接和示例,应该可以帮助您解决问题。
编辑添加:
在您的 post 中,您提到您认为问题在于您不知道所需的语法。正是出于这个原因,我向您指出了一个位置,该位置可以帮助您了解解决问题所需的语法,而不是直接向您展示如何解决问题。我希望这不仅能帮助您解决这个问题,还能帮助您 class 前进。
如果你不知道如何用代码来做,最好为这样的事情写一个流程图。
请不要在 C 中使用 labels/goto。这是一个讨厌的习惯,不需要。
您知道如何使用 if 语句做出决定;想一想您将如何使用 while
循环尝试一遍又一遍地做出相同的决定,直到发生变化。例如,在伪代码中(因为我不想为你做你的工作)
user_has_not_entered_correct_pin = 真
retries_left = 3
而 retries_left > 0 和 user_has_not_entered_correct_pin:
获取图钉
如果 pin_is_not_correct(pin) 重试 = 重试 - 1
否则 user_has_not_entered_correct_pin = false
结束时
Return 来自 validate_pin() int validate_pin(){... return 0; .... return 1;}
的值并在 main() 或您的 validate() 中测试它。
int i=0;
int result=0;
while ( (result==0)&&(i<3) ){
result=validate_pin();
i++;
}
不要使用goto
,学习使用循环。
我必须为 class 编写一个 ATM 程序,但我不知道如何制作一个函数来要求用户提供密码,如果密码输入错误三次,程序将显示退出消息然后终止....这就是我所拥有的。我认为我的问题是我不知道处理我的问题的正确语法。
我知道我需要一个 for 循环,但不确定如何构造它。
void validate_acc(){
int user_acc_try;
printf("Please enter your account number: ");
scanf("%d", &user_acc_try);
if(user_acc_try != account_number){
printf("You entered the wrong account number");
}
else{
printf("");
}
}
void validate_pin(){
int user_pin_try;
printf("Please enter your pin number: ");
scanf("%d", &user_pin_try);
if(user_pin_try != pin){
printf("You entered the wrong pin number.");
}
else{
printf("");
}
}
void validate(){
validate_acc();
validate_pin();
}
其次,由于我每 90 分钟只能 post 不妨再问一个问题,我不知道如何使函数返回到我程序的开头,例如在存款后说,我需要使用什么逻辑才能让函数返回到我的主要函数的开头。我知道 goto
labels
,当我把它放在我的主要功能前面时,它似乎不起作用......
MAIN:
int main()
我会把 goto main;
放在另一个函数中,我会得到一个.... Main is not defined 错误。我在这里阅读了几个关于标签的不同问题,但找不到任何有帮助的东西,如果有人能指导我朝着正确的方向前进,你会给我很大的安慰。
提前致谢。
像我在下面所做的那样保留一个计数变量并检查尝试次数:
我认为这里不需要 goto
。相同的逻辑也可用于检查引脚。
int i=0;
while(1)
{
if(i>2)
{
printf("Maximum attempts reached\n");
break;
}
printf("Enter the acc_num\n");
scanf("%d", &user_acc_try);
if(acc_num == saved_acc_num)
{
// Do your stuff
}
i++;
}
我现在时间有限,所以我会 post 快速提供帮助。我建议开始研究 C 中的循环。由于这是针对 class 的,您使用的书应该包含有关 for 循环和 while 循环的信息,但如果没有,简单的 Google 搜索可以帮助很大。
通过在 Google 上快速搜索,这个站点似乎是一个提供循环基本信息的不错站点: Loops in C
它包含使用 for 循环、while 循环、do...while 循环和嵌套循环的链接和示例,应该可以帮助您解决问题。
编辑添加: 在您的 post 中,您提到您认为问题在于您不知道所需的语法。正是出于这个原因,我向您指出了一个位置,该位置可以帮助您了解解决问题所需的语法,而不是直接向您展示如何解决问题。我希望这不仅能帮助您解决这个问题,还能帮助您 class 前进。
如果你不知道如何用代码来做,最好为这样的事情写一个流程图。
请不要在 C 中使用 labels/goto。这是一个讨厌的习惯,不需要。
您知道如何使用 if 语句做出决定;想一想您将如何使用 while
循环尝试一遍又一遍地做出相同的决定,直到发生变化。例如,在伪代码中(因为我不想为你做你的工作)
user_has_not_entered_correct_pin = 真
retries_left = 3
而 retries_left > 0 和 user_has_not_entered_correct_pin:
获取图钉
如果 pin_is_not_correct(pin) 重试 = 重试 - 1
否则 user_has_not_entered_correct_pin = false
结束时
Return 来自 validate_pin() int validate_pin(){... return 0; .... return 1;}
的值并在 main() 或您的 validate() 中测试它。
int i=0;
int result=0;
while ( (result==0)&&(i<3) ){
result=validate_pin();
i++;
}
不要使用goto
,学习使用循环。