我需要一个要求用户输入密码的功能,在 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学习使用循环。