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