Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我需要一个功能,要求用户输入一个pin码,并在3次错误的尝试后,他们的程序终止_C_Function_Terminate - Fatal编程技术网

C 我需要一个功能,要求用户输入一个pin码,并在3次错误的尝试后,他们的程序终止

C 我需要一个功能,要求用户输入一个pin码,并在3次错误的尝试后,他们的程序终止,c,function,terminate,C,Function,Terminate,我必须为一个类编写一个ATM程序,我不知道如何创建一个函数来请求用户输入pin,如果pin输入错误三次,程序将显示退出消息,然后终止。。。。这就是我所知道的。我想我的问题是我不知道正确的语法来处理我的问题 我知道我需要一个for循环,但不确定如何准确地构造它 void validate_acc(){ int user_acc_try; printf("Please enter your account number: "); scanf("%d", &us

我必须为一个类编写一个ATM程序,我不知道如何创建一个函数来请求用户输入pin,如果pin输入错误三次,程序将显示退出消息,然后终止。。。。这就是我所知道的。我想我的问题是我不知道正确的语法来处理我的问题

我知道我需要一个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分钟发布一次,我可能会问另一个问题,我不知道如何使函数返回到我程序的开头,例如,在存款之后,我需要使用什么逻辑使函数返回到我的主函数的开头。我知道
goto
标签
,当我把它放在我的主函数前面时,它似乎不起作用,就像这样

MAIN:
int main()
我会把
转到main在另一个函数中,我将得到一个。。。。Main未定义错误。我在这里读了一些关于标签的不同问题,但找不到任何有帮助的,如果有人能指引我正确的方向,你会给我很大的安慰


提前谢谢。

像我在下面做的那样保留一个计数变量,并检查尝试次数: 我认为没有必要在这里进行
goto
。同样的逻辑也可用于检查pin

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++;
}

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

通过在谷歌上的快速搜索,该网站似乎是一个关于循环基本信息的不错的网站:

它有使用for循环、while循环、do…while循环和嵌套循环的链接和示例,可以帮助您解决问题

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

如果你不能在代码中找到解决方法,那么写一个类似的流程图是个好主意

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

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

用户未输入正确的pin=true
重试次数左=3次
当重试次数\u左>0且用户\u未\u输入\u正确\u pin:
获取pin
如果pin不正确(pin)重试次数=重试次数-1
否则用户未输入正确的pin=false
结束时


从validate_pin()
int validate_pin(){…返回0;…返回1;}
返回值,并在main()或validate()中测试它

inti=0;
int结果=0;

而((结果==0)&&(iEric你太棒了,我感谢伪代码给了我一个自己思考的机会。这是一个很好的答案,它实际上为OP提供了他们所需要的,而不仅仅是提供了代码。我编辑了我的答案,告诉你为什么我要给你一个链接,而不是如何直接解决这个问题。自从我的第一次编程课以来已经十年左右了从那以后的经验中,我发现学习编程语言的语法在编程时是一个非常有用的工具。祝全班好运!:)在看到Eric的答案后,我希望我有足够的代表将他的答案标记为有用。他的答案明显比我的好。:)哈哈,我的意思是你花时间去寻找链接,你输入了很多,从长远来看,这两个都帮助了我(:太好了!我对回答StackOverflow的问题还比较陌生。我肯定会从Eric的例子中学习,作为将来回答类似问题的好方法。
int i=0;
int result=0;
while ( (result==0)&&(i<3) ){
  result=validate_pin();
  i++;
}