我正在尝试编写一个代码,该代码向输入int的用户添加一个值 - 比如X - 并继续允许用户将更多的int值添加到'X +所有先前输入的int值'中,直到值为达到21或更高 - 代码退出循环。我认为这将是一个值=值+ 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,没有全局变量
答案 0 :(得分:3)
您需要增加tot
而不是j
。我认为这样可以更清楚:
void additionFunction(void)
{
int tot = 5;
while (tot < 22)
{
int j;
printf("Enter next card\n");
if (scanf("%d", &j) != 1)
break;
tot += j;
printf("Read: %d - total = %d\n", j, tot);
}
}
我保留了您的变量名称,但可以对其进行改进({{1}}⟶tot
; total
⟶j
。我添加了第二个value
以确定更好的内容(但也有改进的余地,尽管调试器也可用于查看信息)。我怀疑你需要在循环中做更多的工作,或者从函数返回一个值,但这可以作为MCVE(Minimal, Complete, Verifiable Example)。
答案 1 :(得分:3)
问题是你每次在循环中使用此行的用户输入重置j - printf()
这应该通过将输入分配给另一个变量并将其添加到j来解决它。
scanf("%d",&j);