【发布时间】:2021-12-07 15:06:02
【问题描述】:
我正在尝试创建一个掷骰子游戏,用户一次最多可以掷 6 个骰子。我试图通过将指针集成到我的代码中来实现这一点。我得到了一个输出,用户给出了所需的卷数,但输出不正确。它正在打印模式而不是打印随机数。任何帮助表示赞赏。
你想掷多少个骰子?
用户输入: 4
输出: 3 0 3 0
你想掷多少个骰子?
用户输入: 5
输出: 4 0 4 0 4
#include <stdio.h>
#include <stdlib.h>
void tossDie(int []);
int main() {
int diceArray[6] = { 0 };
int num = 0;
int x;
do {
printf("\nHow many dice would you like to roll? Please enter here: ");
scanf_s("%d", &num);//user enters amount of dice they want to roll)
if (num < 1 || num > 6) {
printf("\n\nPlease enter a number between 1 and 6.\n\n");
}
} while (num < 1 || num > 6);
tossDie(diceArray);
//print dice roll numbers
for (x = 0; x < num; x++) {
printf("%d ", diceArray[x]);
}
return 0;
}
void tossDie(int numbers[]){
int randomNum;
int x;
srand(time(NULL));
randomNum = (rand() % 6) + 1; //random # between 1 - 6
for (x = 0; x < 6; x++){
numbers[x] += randomNum;
x++;
}
};
【问题讨论】:
-
你有两次
x++。而且你只会得到一个randomNum,而不是每次循环迭代的随机值,所以当然每个结果数字都是一样的。 -
srand应该在程序启动时被调用一次。请参阅stackoverflow.com/questions/7343833/srand-why-call-it-only-once 了解更多信息。 -
另外,srand() 必须只运行一次,在程序开始时,而不是在循环内调用的函数中,如这里(将它移到 main ())。