您的任务是创建一个基本的 ATM。该程序应提供以下菜单 给用户的选项:
您的任务是按照以下要求实施该计划:
#include <stdio.h>
int main() {
int a,b,c,d,e;
a=1000;
scanf("%d",&b);
if(b==1){
printf("%d\n",a);
goto label1;
}
label1:
scanf("%d",&c);
if(c>1000 && c<=0){
printf("Amount wuthdrawal usuccessful.Add appropriate amount\n");
goto label1;
}
else{
printf("Amount withdrawal successful.Amount:%d\n",a-c);
goto label2;
}
label2:
scanf("%d",&d);
if(d<=0){
printf("Amount deposit unsuccessful.Add appropriate amount\n");
goto label2;
}
else{
printf("Amount:%d\n",a-c+d);
goto label3;
}
label3:
scanf("%d",&e);
if(e==4){
printf("thank you\n");
}
return 0;
}
我这样做了,但没有成功。
你的
goto
说法都是错误的。除了 1
之外,您永远不会检查任何操作,然后它会通过转到下一个标签来执行所有其他操作。您只能在成功操作后使用 goto
返回到程序的开头,或者如果他们输入了无效金额,则返回并要求另一个金额。
查看提现金额时,必须与当前余额进行比较,而不是1000。并且这两个条件要结合
||
,而不是&&
。
当用户提款或充值时,您永远不会更新余额。
使用有意义的变量名称,而不是
a,b,c,d
。
#include <stdio.h>
int main() {
int balance = 1000, operation, amount;
start:
scanf("%d",&operation);
switch(operation) {
case 1:
printf("%d\n",balance);
break;
case 2:
withdraw:
scanf("%d",&amount);
if(amount>balance || amount<=0){
printf("Amount wuthdrawal usuccessful.Add appropriate amount\n");
goto withdraw;
}
else{
balance -= amount;
printf("Amount withdrawal successful.Amount:%d\n", amount);
}
break;
case 3:
deposit:
scanf("%d",&amount);
if(amount<=0){
printf("Amount deposit unsuccessful.Add appropriate amount\n");
goto deposit;
}
else{
balance += amount;
printf("Amount:%d\n",amount);
}
break;
case 4:
printf("thank you\n");
return 0;
default:
printf("Invalid operation\n");
}
goto start;
}