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