C编程 - 乐透模拟

时间:2015-03-10 19:17:46

标签: c arrays for-loop random

我正在制作一个模拟乐透的程序。数字可以在1-45之间,但绘制的数字必须是唯一的。程序在此范围内生成6个随机数,并将它们添加到数组中。用户输入他们的号码,程序检查2个阵列是否相同,即他们是否赢得了乐透。

我不知道为什么,但我的程序不生成随机数,也不检查它们是否相等。

> #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; }

我指出了代码中的一些拼写错误。我还添加了一段代码,但我要对其进行评论,因为我不确定这是否是我想要做的正确方法。

任何帮助都会非常有帮助,我会更加感激。 :)

1 个答案:

答案 0 :(得分:0)

检查乐透的最简单方法是对两个数组进行排序,然后用户[i]和乐透[i]之间的错误比较将会起作用

为了避免重复,需要一个新函数,它将新值,数组,最大索引作为参数。这需要检查第一个(最大索引-1)元素中是否存在新值。您需要在创建乐透数据的所有6次迭代中检查重复项,并在每次scanf之后检查用户输入数据。