使用 if else 和 goto 语句创建银行

问题描述 投票:0回答:1

您的任务是创建一个基本的 ATM。该程序应提供以下菜单 给用户的选项:

  • 检查余额(1)
  • 提款(2)
  • 存款(3)
  • 出口(4)

您的任务是按照以下要求实施该计划:

  • 初始账户余额为1000。
  • 使用if/else或switch语句,实现以下情况:
    • 当用户输入1时,程序应显示当前余额。
    • 当用户输入2时,应提示输入提现金额。如果 提款金额超过余额,显示错误信息。
    • 当用户输入3时,应提示他们输入存款金额。如果 存款金额为零或负数,显示错误信息。
    • 当用户选择4时,显示感谢消息并终止程序。
    • 如果输入的值不是以上数值,只需提示一条消息即可 输入无效并再次重新运行同一块。
  • 重要提示:除非输入为 4,否则您应该使用 goto 语句。用循环代替goto会直接扣掉10%的分数。
  • 使用条件运算符 (? :) 简洁地显示成功或错误消息,而无需 使用传统的 if-else 语句。使用任何其他条件语句都会导致 扣除 10% 分数。
#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;
}

我这样做了,但没有成功。

c if-statement conditional-operator goto
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.