【发布时间】:2015-03-10 19:17:45
【问题描述】:
我正在制作一个程序来模拟乐透。数字可以在 1-45 之间,但抽出的数字必须是唯一的。程序在此范围内生成 6 个随机数并将它们添加到数组中。用户输入他们的号码,程序会检查这两个数组是否相同,即他们是否中了乐透。
我不知道为什么,但我的程序不会生成随机数,也不会检查它们是否相等。
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(int argc, const char * argv[]) {
> // insert code here...
> int lotto[6];
> int i;
>
> int user[6];
> for(i=0; i<6; i++){
> printf("Please enter a number between 1 and 45: \n");
> scanf("%d", &user[i]);
> }
> printf("User's numbers: \n");
> for(i=0; i<6; i++){
> printf("%d \n", user[i]);
> }
> printf("Generate 6 Random Lotto Numbers \n");
>
>
> for(i=0; i<6;i++){
> lotto[i] = rand() % 45 + 1;
> }
> for(i=0; i<6; i++){
> printf("%d \n",lotto[i]);
> }
>
>
>
>
> for(i=0; i<6; i++){
> if(lotto[i] != user[i]){
> printf("Hard luck. Try again next time.");
> break;
> }
> else{
> printf("You've won the lotto!");
> }
>
> }
> return 0; }
向我指出了代码中的一些错别字。我还添加了一段代码,但我将对其进行评论,因为我不确定这是否是我想做的事情所需的正确方法。
任何帮助都会非常有帮助,我将更加感激。 :)
【问题讨论】:
-
为什么你的生成器循环中有一个`scanf`???
-
欢迎来到本站。您是否熟悉调试器以逐步跟踪您的程序并查看会发生什么?
-
您似乎正在使用从
STDIN扫描的输入覆盖您的随机数。 -
是的,我知道。我忘了取出 scanf 部分。
-
我把它拿出来,现在它可以很好地生成随机数。但是我不知道如何检查数字是否可以重复或如何阻止用户输入大于 50 和小于 1 的数字。 for(i=0; i45){ printf("请输入有效数字。");一世 - ; } else{ scanf("%d", &user[i]); }