0

我应该做一个可以玩多次的骰子游戏。我并不是真的在寻找答案,而是想看看我做错了什么。我希望 for 循环将 int ia 值分配为 0,然后运行掷骰子,然后将i加一,直到i > 50。提前致谢。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main(){
int rollDie1, rollDie2, keyValue = 0, win = 0, lose = 0, reroll = 0, i;
srand(time(NULL));  // call this only once – seed the random generator

for (i = 0 ; i < 50 ; i++);
{
rollDie1 = rand() % 6 + 1;  // in the range of 1 - 6
rollDie2 = rand() % 6 + 1;  // in the range of 1 - 6
keyValue = rollDie1 + rollDie2;



    if ( keyValue == 7 || keyValue == 11 )
    {
    printf ("Player wins on the first roll \n");
    }


    if ( keyValue == 2 || keyValue == 3 || keyValue == 12 )
    {
    printf("Sorry, you lost on the first roll \n");
    }

    if (  keyValue == 4 || keyValue == 5 || keyValue == 6 || keyValue == 8 || keyValue == 9 || keyValue == 10 ) 
    {
    printf("Reroll! \n");
    }
}

system("pause");
}
4

3 回答 3

6

在 for 循环的末尾有一个;不应该存在的。

for (i = 0 ; i < 50 ; i++);

应该

for (i = 0 ; i < 50 ; i++)

否则for循环中没有任何内容,并且{}只会执行一次,因为这是一个单独的语句。

于 2013-05-25T01:04:00.473 回答
3

循环末尾有一个分号:

for (i = 0 ; i < 50 ; i++);

所以它什么都不做 50 次。您只需要删除分号,以便您的括号{}实际上封装了应该在 for 循环中的代码行。

如果在 for 循环之后没有{立即使用左括号,则 for 循环之后的第一个完整语句将在每次迭代时执行。分号是一个不做任何事情的完整语句。

于 2013-05-25T01:03:36.560 回答
0

实际上只要 i<50 即从 0 到 49 它就会运行

于 2013-05-25T01:07:07.627 回答