所以我正在进行一场掷骰子游戏,游戏的一个方面是投注必须小于或等于平衡才能继续(所以你不要打赌比你更多)。现在我正在制作我正在制作的完整游戏,但是发布的代码太多了,所以我基本上写出了我想要做的事情。
我发布的代码假设它是一个损失,但由于某种原因它没有正确减去。在我的实际游戏中,它完全忽略了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;
}
如果有人对如何使这项工作有任何建议,我将非常感激。谢谢:))
答案 0 :(得分:1)
我重新格式化你的代码,现在它应该可以工作。
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
到
double
第二个也是更重要的,我在这个函数中更改了第二个参数
int checking_wager(double balance, double wager)
指向double的指针
double checking_wager(double balance, double *wager)
原因是,从功能中返回新的赌注。
答案 1 :(得分:0)
问题出在checking_wager()
函数的定义中。
因此,根据我的假设,您传递了两个balance
和wager
参数,并希望在wager
大于balance
的情况下重新输入wager
的值。
但是,您的代码并不像您预期的那样,因为您将wager
定义为新的本地变量,它与[{}不共享相同的位置1}}来自main函数。
因此,最简单的解决方法是将checking_wager()'s wager
更改为指针,以便它可以引用并更改main()'s wager
的值。
int checking_wager(double balance, double *wager)
{
while (*wager > balance)
{
printf("The wager is invalid\n");
*wager = get_wager();
}
return 0;
}
因此,要从main函数调用它,基本上可以将main函数的wager指针放入checking_wager()函数中。
checking_wager(balance, &wager);
希望这会有所帮助。