因此,我正在研究掷骰子游戏,该游戏的一个方面是,赌注必须小于或等于平衡才能继续(所以您下的赌注不会超过您的下注)。现在,我正在开发自己的完整游戏,但是要发布的代码太多,所以我基本上写出了我想做的事情。
我发布的代码假定它是一种损失,但是由于某种原因它不能正确减去。在我的实际游戏中,它完全忽略了while函数。如果我的余额是20,而我下注22,则我得到-2。我不知道如何使它正常工作。
#include<stdio.h>
int main(void)
{
double balance = 0.0, wager = 0.0;
balance = get_balance();
wager = get_wager();
checking_wager(balance, wager);
loss(balance, wager);
return 0;
}
double get_balance(void)
{
double balance = 0.0;
balance = printf("Enter your balance: ");
scanf("%lf", &balance);
return balance;
}
double get_wager(void)
{
double wager = 0.0;
wager = printf("Enter your wager: \n");
scanf("%lf", &wager);
return wager;
}
double checking_wager(double balance, double wager)
{
while (wager > balance)
{
printf("The wager is invalid\n");
wager = get_wager();
}
return 0;
}
double loss(double balance, double wager)
{
balance -= wager;
printf("Balance: %.2f", balance);
return balance;
}
如果有人对我如何进行这项工作有任何建议,我将不胜感激。谢谢 :)
最佳答案
我重新格式化了您的代码,现在应该可以了。
int main(void)
{
double balance = 0.0, wager = 0.0;
balance = get_balance();
wager = get_wager();
checking_wager(balance, &wager);
loss(balance, wager);
return 0;
}
double get_balance(void)
{
double balance = 0.0;
balance = printf("Enter your balance: ");
scanf("%lf", &balance);
return balance;
}
double get_wager(void)
{
double wager = 0.0;
wager = printf("Enter your wager: \n");
scanf("%lf", &wager);
return wager;
}
double checking_wager(double balance, double *wager)
{
while (*wager > balance)
{
printf("The wager is invalid\n");
*wager = get_wager();
}
return 0;
}
double loss(double balance, double wager)
{
balance -= wager;
printf("Balance: %.2f", balance);
return balance;
}
我所做的更改首先被替换为returntypes表单
int
至
double
其次,更重要的是,我将此函数的第二个参数更改为
int checking_wager(double balance, double wager)
指向双精度指针
double checking_wager(double balance, double *wager)
之所以这样做,是为了从功能上返回新的赌注。