我正在制作一个模拟乐透的程序。数字范围可以在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; }


有人向我指出了代码中的一些错别字。我还添加了一段代码,但是我将对其进行注释,因为我不确定这是否是我想要做的正确方法。

任何帮助都将非常有帮助,我将不胜感激。 :)

最佳答案

检查乐透的最简单解决方案是对两个数组进行排序,然后您在用户[i]和乐透[i]之间的不正确比较将起作用

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

10-08 13:18