【发布时间】:2018-10-17 20:22:42
【问题描述】:
我正在尝试编写一个代码,它将一个值 - 比如 X - 添加到用户输入的 int 中,并继续允许用户将进一步的 int 值添加到“X+所有先前输入的 int 值”,直到值达到 21 或更高 - 代码退出循环的地方。我认为这将是 value=value+X 的简单案例,但我在某个地方出错了......
void additionFunction()
{
int j=0;
int tot;
//tot=cat.firstCard+cat.secondCard; is the actual tot value but for simplicity;
tot=5;
for(j=0; j+tot<22; j=j+tot)
{
printf("Enter next card\n");
scanf("%d",&j);
}
}
我知道这是一个非常简单的问题,但我不知道还能尝试什么。它最初是在缩短形式的 if,do,switch 循环中实现的;
if(cat.firstCard!=11 && cat.secondCard!=11)
{
do
{
switch(tot+j>=4 && tot+j<=8)
{
printf("Hit\nEnter next card\n");
scanf("%d",&j);
break;
}
switch(tot+j==9 && (cat.dealersCard==2 || (cat.dealersCard>=7 && cat.dealersCard<=11)))
{
printf("Hit\nEnter next card\n");
scanf("%d",&j);
break;
}
...
switch(tot+j>=17 && tot+j<=21)
{
printf("Stand\n");
j=50;
break;
}
switch(tot+j>21)
{
printf("Bust\n");
j=50;
break;
}
}while(j!=50);
}
else //etc.
这个方法也没有用。我知道这很简单,但我无法在任何地方找到答案。如果您能回答第二种情况,那就太好了,但任何答案都值得赞赏!
只使用 stdio.h,没有全局变量
【问题讨论】:
-
在第一个代码中,您需要增加
tot,而不是j,不是吗?或者你需要读入tot而不是j,但是这些名字,就它们的意义而言,是错误的。您确实还需要检查来自scanf()的返回值,因此您可以发现用户输入了 K(代表 King)而不是 9。 -
这是
switch的一种奇怪的写法:) -
这是我被教导的方式,通常的方式是什么?
-
这不是我被教导的方式。那是一个深夜......