我需要一个要求用户输入一个引脚的功能,在3次错误尝试后,它们会终止程序

时间:2015-03-17 16:44:40

标签: c function terminate

我必须为一个类写一个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分钟发帖一次也可以提出另一个问题,我不知道如何让一个函数回到我的程序的开头,例如在押金之后说,是什么逻辑我需要使用函数返回到我的main函数的开头。我知道goto labels,当我把它放在我的主要功能面前时似乎没有用......

MAIN:
int main()

我会把goto main;放在另一个函数中,我会得到一个....主要没有定义错误。我在这里已经阅读了几个关于标签的不同问题,但是找不到任何有用的东西,如果有人可以指导我朝着正确的方向前进,那么你会给我很大的帮助。

提前谢谢。

4 个答案:

答案 0 :(得分:2)

如果你无法弄清楚如何在代码中做到这一点,那么为这样的事情写出一个流程图是个好主意。

请不要在C中使用标签/转到。这是一个讨厌的习惯,不需要它。

您知道如何使用if语句做出决定;考虑如何使用while循环尝试一遍又一遍地做出相同的决定,直到发生变化。例如,在伪代码中(因为我不想为你做你的工作)

  

user_has_not_entered_correct_pin = true
 retries_left = 3
 而retries_left> 0和user_has_not_entered_correct_pin:
   得到针    如果pin_is_not_correct(引脚)重试=重试 - 1
   else user_has_not_entered_correct_pin = false
 

结束

答案 1 :(得分:0)

我现在时间有限,所以我会发布快速帮助。我建议开始研究C中的循环。因为这是一个类,你正在使用的书应该有关于for循环和while循环的信息,但如果没有,一个简单的Google搜索可以帮助很多。

通过快速搜索谷歌,这个网站似乎是一个体面的网站,提供有关循环的基本信息: Loops in C

它包含使用for循环,while循环,do ... while循环和嵌套循环的链接和示例,它们可以帮助您解决问题。

编辑添加: 在您的帖子中,您提到您认为问题在于您不了解所需的语法。正是出于这个原因,我向您指出了一个位置,它可以帮助您解决问题所需的语法,而不是直接向您展示如何解决问题。我希望这不仅可以帮助你解决这个问题,还可以帮助你在课堂上继续学习。

答案 2 :(得分:-1)

保持计数变量,就像我在下面所做的那样,检查尝试次数: 我在这里看不到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++;
}

答案 3 :(得分:-1)

从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学习来使用循环。