使用C编程语言1进行Infinte while循环

时间:2015-10-28 21:40:40

标签: c

我正在使用C编程语言创建一个骰子游戏。我要求用户输入一个必须小于12的数字,因为5 + 6 = 11。 11是我们在骰子中得到的最高数字。之后,我随机生成2个数字,介于1和6之间,因为1是最小的,6是骰子上的最高数字。之后,我添加两个数字并继续添加它们,直到它等于用户输入的数字。例如:如果用户输入9,我们得到5 + 4 = 9或6 + 3 = 9。当我们得到这个号码时,程序结束。以下是我到目前为止所做的事情:

#include <stdio.h>
#include <stdlib.h>
int main(void) {

    int totalSought;
    int i = 1;
    int j;
    int count;
    int totalThrows = 2;
    time_t totalTime;

    printf("Game of Dice \n");
    printf("============ \n");

    printf("Enter total sought: ");
    scanf("%d", &totalSought);

    if (totalSought > 11) {
        printf("** Invalid Input! Try Again! **\n");
        while (totalSought > 11) {
                printf("Enter total sought: ");
                scanf("%d", &totalSought);
        }
    }

    srand((unsigned) time(&totalTime));

    while (i < totalThrows) {
        while (j != 7) {
            printf("Result of throw %d %d \n", rand() % 6, j);
        }
        i++;
    }
}

当我运行这个程序时,我得到一个无限循环,如下所示:

Result of throw 2 -1218106363
Result of throw 3 -1218106363
Result of throw 1 -1218106363
Result of throw 5 -1218106363
Result of throw 5 -1218106363
Result of throw 2 -1218106363
Result of throw 4 -1218106363
Result of throw 0 -1218106363
Result of throw 5 -1218106363
Result of throw 4 -1218106363
Result of throw 1 -1218106363

我想要的是这样的:

Enter total sought: 5
Result of throw 1: 3 + 1
Result of throw 2: 2 + 6
Result of throw 3: 3 + 2
You got your total in 3 throws!

为什么我会得到无限循环?

2 个答案:

答案 0 :(得分:4)

  1. J未初始化
  2. 您没有随时更新变量J

答案 1 :(得分:1)

您永远不会更改循环终止符值:

while (j != 7) {

        printf("Result of throw %d %d \n", rand() % 6, j);
}

因为j永远不会改变,如果它进入循环“not-7”,它将 STAY “not-7”,并且循环永远不会终止。

也许你想要更像这样的东西:

while( j != 7) {
   j= rand() % 6;
   ...
}

虽然这不会达到j=7,因为你正在做%6