我必须为一个类写一个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;
放在另一个函数中,我会得到一个....主要没有定义错误。我在这里已经阅读了几个关于标签的不同问题,但是找不到任何有用的东西,如果有人可以指导我朝着正确的方向前进,那么你会给我很大的帮助。
提前谢谢。
答案 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
,学习来使用循环。