当输入大于10时,循环会产生致命的运行时错误

时间:2015-07-19 00:40:20

标签: c while-loop fatal-error

首先,如果这个帖子的标题不够具体,我道歉,但我想不出任何方法可以使标题更具体。

其次,让我解释一下问题所在。 我目前正试图弄清楚如何创建一个循环,它将运行所需的次数,直到它创建的值等于或高于用户给出的数字。我知道这听起来很奇怪,但让我试着让它更清晰。我的程序模拟掷骰子,这意味着结果是随机的(或伪随机,但它与此问题无关)。我想要做的循环必须滚动模具,直到添加的随机数等于或高于用户输入。所以,假设用户想要55作为输入。循环必须多次运行,直到结果总和为55或更高。希望这清楚地解释了标准。

while (turnscore <= input)
roll = (rand() % 6 + 1);
turnscore = turnscore + roll;
printf("You Rolled : %d\n", roll);
turnscore + turnscore;

以上是我的循环,它会产生致命的运行时错误。我使用了while循环,因为我认为对于这个问题它将是正确的。我可能错了。 此外,当我将第一行中的逻辑运算符从(turnscore&lt; = input)更改为(turnscore&gt; = input)时,除了以下内容外,我的程序不显示任何内容:“你滚动了0”。

任何线索,提示或想法都将不胜感激。 感谢

好吧,伙计们,我真的很感激帮助,但我认为我没有很好地解释我的问题,因此我们不在同一页面上。让我试着再次解释问题或程序的目的,以便你了解我的问题。

首先,程序应该是模具滚动模拟器。关于程序如何进行,可以有两个不同的标准。首先是:如果输入数小于10,则将模具滚动X次,其中X是输入数字。这部分,我已经解决了,它工作正常。

第二个标准是:如果输入的数字是10或更多,则掷骰子直到转弯中的分数等于或高于输入数字。这部分我有一个问题,因为我所做的是将for循环更改为while循环(并且我做错了)对语法进行了一些更改但它崩溃了程序并且调试器显示:“致命的运行时错误”。< / p>

希望这能清除我们之间的误解。 :)

2 个答案:

答案 0 :(得分:4)

你的代码对我没用。这是一个无限循环:

while (turnscore <= input)
roll = (rand() % 6 + 1);

根据您的要求,代码应如下所示:

int roll = 0;
int turnscore = 0;

while (turnscore <= input) {
    roll = rand() % 6 + 1; 
    printf("You rolled %d\n", roll)
    turnscore += roll;
}

printf("Total : %d\n", turnscore);

答案 1 :(得分:4)

您的while循环后面没有大括号,因此它仅适用于紧跟其后的语句。由于turnscore在该语句中未发生更改,因此如果input大于6,则会导致无限循环。

通过适当的缩进,这就是您的代码:

while (turnscore <= input)
    roll = (rand() % 6 + 1);
turnscore = turnscore + roll;
printf("You Rolled : %d\n", roll);
turnscore + turnscore;

此外,turnscore + turnscore没有净影响。您将两个值一起添加,但它们并未分配给任何值。

你可能想要这个:

turnscore = 0;
while (turnscore <= input) {
    roll = (rand() % 6 + 1);
    printf("You Rolled : %d\n", roll);
    turnscore = turnscore + roll;
}
printf("Turn score: %d\n", turnscore);

现在使用花括号允许while循环迭代多个语句而不是一个语句。