我正在使用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!
为什么我会得到无限循环?
答案 0 :(得分:4)
答案 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
。