首先,如果这个帖子的标题不够具体,我道歉,但我想不出任何方法可以使标题更具体。
其次,让我解释一下问题所在。 我目前正试图弄清楚如何创建一个循环,它将运行所需的次数,直到它创建的值等于或高于用户给出的数字。我知道这听起来很奇怪,但让我试着让它更清晰。我的程序模拟掷骰子,这意味着结果是随机的(或伪随机,但它与此问题无关)。我想要做的循环必须滚动模具,直到添加的随机数等于或高于用户输入。所以,假设用户想要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>
希望这能清除我们之间的误解。 :)
答案 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
循环迭代多个语句而不是一个语句。