基本加法循环c

时间:2018-05-08 00:33:00

标签: c stdio

我正在尝试编写一个代码,该代码向输入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,没有全局变量

2 个答案:

答案 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; totalj。我添加了第二个value以确定更好的内容(但也有改进的余地,尽管调试器也可用于查看信息)。我怀疑你需要在循环中做更多的工作,或者从函数返回一个值,但这可以作为MCVE(Minimal, Complete, Verifiable Example)。

答案 1 :(得分:3)

问题是你每次在循环中使用此行的用户输入重置j - printf()

这应该通过将输入分配给另一个变量并将其添加到j来解决它。

scanf("%d",&j);