我正在制作一个模拟乐透的程序。数字可以在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; }
我指出了代码中的一些拼写错误。我还添加了一段代码,但我要对其进行评论,因为我不确定这是否是我想要做的正确方法。
任何帮助都会非常有帮助,我会更加感激。 :)
答案 0 :(得分:0)
检查乐透的最简单方法是对两个数组进行排序,然后用户[i]和乐透[i]之间的错误比较将会起作用
为了避免重复,需要一个新函数,它将新值,数组,最大索引作为参数。这需要检查第一个(最大索引-1)元素中是否存在新值。您需要在创建乐透数据的所有6次迭代中检查重复项,并在每次scanf之后检查用户输入数据。