C 为我的自动取款机设置余额

C 为我的自动取款机设置余额,c,command-prompt,C,Command Prompt,嘿,伙计们,我正在构建一个ATM程序,我一切都好 我有菜单,它拉你可以选择一个选项,它运行的功能,但我不能为我的生活 平衡和 让它一直呆着直到它变了 我需要它在两个选项之一(存款、取款)中更改后保存,因为这是一个测试后循环,它将一直运行,直到选择退出,每次我需要它更新余额 这是我的C代码,如果有人能帮上忙的话,那就太棒了 #include <stdio.h> #include <stdlib.h> // Function Declarations int ge

嘿,伙计们,我正在构建一个ATM程序,我一切都好

我有菜单,它拉你可以选择一个选项,它运行的功能,但我不能为我的生活

平衡和 让它一直呆着直到它变了 我需要它在两个选项之一(存款、取款)中更改后保存,因为这是一个测试后循环,它将一直运行,直到选择退出,每次我需要它更新余额

这是我的C代码,如果有人能帮上忙的话,那就太棒了

#include <stdio.h>
#include <stdlib.h>

// Function Declarations

    int getChoice ();
    double withdraw (int Choice, int Balance);
    double deposit (int Choice, int Balance);
    int VBalance (int Choice, int Balance);
    double process (int Choice, int Balance);



int main (void)
{
// Local Declarations

    int Choice;
    int Balance;


// Statements

do
{
    Balance = 2500.00;
    Choice = getChoice ();
    process (Choice, Balance);
}
while (Choice != 0);


return 0;





} // Main

/*============================process=*/

double process (int Choice, int Balance)
{
// Declarations


// Statements
    switch(Choice)
        {
            case 1: withdraw (Choice, Balance);
                break;
            case 2: deposit (Choice, Balance);
                break;
            case 3: VBalance (Choice, Balance);
                break;
            case 0:  exit;
                break;
            deafult: printf("Sorry Option Not Offered");

} // switch

return 0;
}


/*============================getChoice=*/

int getChoice (void)
{
// Local Declarations
    char Choice;

// Statements

    printf("\n\n**********************************");
    printf("\n             MENU             ");
    printf("\n\t1.Withdrawl Money          ");
    printf("\n\t2.Deposit Money           ");
    printf("\n\t3.View Balance            ");
    printf("\n\t0.Exit                    ");
    printf("\n**********************************");
    printf("\nPlease Type Your Choice Using 0-3");
    printf("\nThen Hit Enter: ");
    scanf("%d", &Choice);

return Choice;

} //getchoice


/*============================withdraw=*/


double withdraw (int Choice, int Balance)
{
// Local Declarations
    double amount;


// Statements
    printf("Funds:%d", &Balance);
    printf("\nPlease Enter How Much You Would Like To Withdraw: ");
    scanf("%f", &amount);
    Balance = Balance - amount;

return Balance;

}  //withdraw


/*============================Deposit=*/

double deposit (int Choice, int Balance)
{
// Local Declarations
    double amount;

// Statements
    printf("Funds:%d", &Balance);
    printf("\nPlease Enter How Much You Would Like To Deposit: ");
    scanf("%f", &amount);
    Balance = Balance + amount;

return Balance;

} //Deposit


/*============================VBalance=*/

int VBalance (int Choice, int Balance)
{
// Statements
    printf("\nYour Current Funds:%d", &Balance); 
    printf("\nThank Your For Viewing");

return 0;
}
#包括
#包括
//函数声明
int getChoice();
双重取款(整数选择、整数余额);
双重存款(整数选择、整数余额);
整数平衡(整数选择,整数平衡);
双过程(整数选择、整数平衡);
内部主(空)
{
//本地声明
智力选择;
国际收支平衡;
//声明
做
{
余额=2500.00;
Choice=getChoice();
过程(选择、平衡);
}
while(选项!=0);
返回0;
}//主要
/*========================================处理=*/
双进程(整数选择、整数平衡)
{
//声明
//声明
开关(选择)
{
案例1:取款(选择、余额);
打破
案例2:存款(选择、余额);
打破
案例3:平衡(选择,平衡);
打破
案例0:退出;
打破
deafult:printf(“对不起,未提供期权”);
}//开关
返回0;
}
/*==============================================getChoice=*/
int getChoice(void)
{
//本地声明
字符选择;
//声明
printf(“\n\n****************************************”);
printf(“\n菜单”);
printf(“\n\t1.取款”);
printf(“\n\t2.存款”);
printf(“\n\t3.View余额”);
printf(“\n\t0.Exit”);
printf(“\n*************************************”);
printf(“\n请使用0-3键入您的选择”);
printf(“\n然后点击回车:”);
scanf(“%d”,选择(&C);
回报选择;
}//getchoice
/*=================================================退出=*/
双重取款(整数选择,整数余额)
{
//本地声明
双倍金额;
//声明
printf(“资金:%d”和余额);
printf(“\n请输入您要提取的金额:”;
scanf(“%f”和金额);
余额=余额-金额;
收益余额;
}//撤回
/*===========================================存款=*/
双重存款(整数选择、整数余额)
{
//本地声明
双倍金额;
//声明
printf(“资金:%d”和余额);
printf(“\n请输入您要存入的金额:”;
scanf(“%f”和金额);
余额=余额+金额;
收益余额;
}//存款
/*====================================================VBalance=*/
整数平衡(整数选择,整数平衡)
{
//声明
printf(“\n您的流动资金:%d”和余额);
printf(“\n储存供查看”);
返回0;
}

首先:启用编译器警告。如果使用
gcc
,请将
-Wall
添加到命令行。如果使用IDE,启用警告的选项应该在编译器设置中

当您使用警告进行编译时,您会发现您在使用
printf
scanf
时存在一些问题。修好那些

接下来,您会遇到
main
中的
Balance
无法更新的问题。C使用按值调用,这意味着您对函数参数所做的更改在调用函数中不可见。要解决这个问题,您可以将balance参数声明为指针,并传递
balance
的地址。或者您可以返回新的
余额
,就像您在代码中所做的那样。您唯一忘记的是将新值存储到
main
中的
Balance

更改了
main
中的行:

Balance = process(Choice, Balance);
已更改
过程

double process(int Choice, int Balance)
{
    // Declarations

    // Statements
    switch (Choice)
        {
            case 1: Balance = withdraw(Choice, Balance); // Changed line
                break;
            case 2: Balance = deposit(Choice, Balance); // Changed line
                break;
            case 3: Balance = VBalance(Choice, Balance); // Changed line
                break;
            case 0:  exit;
                break;
            deafult: printf("Sorry Option Not Offered");

    } // switch

    return Balance;  // Changed line
}

第三:
Balance
被声明为
int
,但有时使用
double
。你应该选择一种类型并坚持下去。由于存在错误,实际上建议使用.

为什么使用c#标记?这是学习如何使用调试器的最佳时机。使用调试器,您可以在监视变量及其值的同时逐行检查代码。“设置一个平衡,让它一直保持到更改为止”这对这个星球上的任何人都有意义吗?
case 0:exit那么,这编译了两件事。每次循环迭代到2500次时,您都会重置
平衡。修改
余额的
存款
取款
功能在副本上执行。它们通过值传递了
余额。如果你想在这些函数中修改它,你需要传递一个指向
Balance
OMG的指针。非常感谢你,你真的帮了我很多忙。