c - 彩票游戏,从 1 到 42 中选择唯一的号码

标签 c loops

我想知道你是否可以帮助我,我正在尝试制作一个彩票游戏,数字为 1-42,并且都是独一无二的。这是我到目前为止所拥有的:

do
{
    printf("\n\t\tPlease enter number %d (1-42):", i+1);
    scanf("%d", &temp);


    if(temp > 0 && temp < 43)
    {
        for(j = 0; j > 6; j++)
        {
            if(temp == lottoNumbers[j])
            {
                printf("\n\n\t\tNumber already chosen, please choose a new number.\a");
            }
            else
                lottoNumbers[i] = temp;
                i++;
        }
    }
    else
        printf("\n\n\t\tPlease enter a valid number.\a");


}while(i < 6);

所以我想将第一个值作为常规整数,首先测试它是否在范围内(有效),然后检查它是否已经是数组的元素,如果是,则将其放入数组中并增加 i,问题是它似乎永远不会增加 i,只是一遍又一遍地重复......似乎无法弄清楚为什么,有什么想法吗?

最佳答案

试试这个

if(temp > 0 && temp < 43)
{
    for(j = 0; j < i ; j++)
    {
        if(temp == lottoNumbers[j])
        {
            printf("\n\n\t\tNumber already chosen, please choose a new number.\a");
            break;
        }
    }
    if(i == 0 || i == j){//just if(i == j)
        lottoNumbers[i++] = temp;
    }
}
else
    printf("\n\n\t\tPlease enter a valid number.\a");

关于c - 彩票游戏,从 1 到 42 中选择唯一的号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35589040/

相关文章:

c - fopen 语句中的文件名

c - 为什么当前宏会返回值14?

jquery - 水平(在表格中)而不是垂直列出数据

c++ - 如何在没有外部标志的情况下仅在循环内运行一次代码?

c - CMAKE 资源文件中 WINAPI 的对话框资源返回语法错误

c - 在 C 语言中,有没有办法让任意函数超时?

c++ - 如何将 u64 转换为两个 u32,如下所述

for 循环中的 C# 数组产生相同的随机整数值

c++ - 查找数字字段中的最大总和

java - For循环在第二次后不执行第一条命令