双色球下注 C语言

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include<windows.h>

void SetColor(int fore , int back )
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), (back << 4) + fore);
}

void product_value(unsigned result[], unsigned index)
{
    unsigned value, i;
    do
    {
        value = rand() % 33 + 1;
        i = 0;
        for (; i < index; i++)
        {
            if (value == result[i])
                break;
        }
    } while (i < index);
    result[i] = value;
}

void swap(unsigned* value1, unsigned* value2)
{
    unsigned tmp = *value1;
    *value1 = *value2;
    *value2 = tmp;
}

unsigned Partition(unsigned data[], unsigned left, unsigned right)
{
    if (left >= right) return;
    unsigned base = data[left];
    unsigned left_tmp = left, right_tmp = right;
    while (left_tmp < right_tmp)
    {
        while (left_tmp < right_tmp && data[right_tmp] >= base)
        {
            --right_tmp;
        }

        while (left_tmp < right_tmp && data[left_tmp] <= base)
        {
            ++left_tmp;
        }

        if(left_tmp != right)
            swap(&data[left_tmp], &data[right_tmp]);
    }
    if(left != left_tmp)
        swap(&data[left], &data[left_tmp]);
    return left_tmp;
}

void QSort(unsigned data[], unsigned low, unsigned high) {
    if (low < high) {
        //找到支点的位置
        int pivotloc = Partition(data, low, high);
        //对支点左侧的子表进行排序
        if (pivotloc != 0)
        {
            QSort(data, low, pivotloc - 1);
        }
        //对支点右侧的子表进行排序
        QSort(data, pivotloc + 1, high);
    }
}

void rand_product(unsigned seed)
{
    srand(seed);
    unsigned result[6];
    for (unsigned i = 0; i < 6; i++)
    {
        product_value(result, i);        
    }

    QSort(result, 0, 5);

    for (size_t i = 0; i < 6; i++)
    {
        SetColor(7, 1);
        printf_s("%02d", result[i]);
        SetColor(7, 0);
        printf_s("  ");
    }

    SetColor(7, 4);
    printf_s("%02d", (rand() % 16 + 1));
    SetColor(7, 0);
    printf_s("\n");
}

int main(int argc, char* argv[])
{
    int group_count = 1;

    if (argc == 2)
    {
        int value = atoi(argv[1]);
        if (value > 1) group_count = value;
    }
    else
    {
        printf_s("请输入双色球注数(>1):");
        scanf_s("%d", &group_count);
        if (group_count < 1)
        {
            printf_s("非法数据");
            return 0;
        }
    }
    static unsigned value = 0;
    srand((unsigned int)time(NULL));
    unsigned *group = (unsigned *)malloc(group_count*sizeof(unsigned));
    if (NULL == group)
    {
        printf_s("分配内存失败!");
        return 0;
    }
    for (size_t i = 0; i < group_count; i++)
    {
       value += rand() + 0x1000;
       *(group+i) = value;
    }

    for (size_t i = 0; i < group_count; i++)
    {
        rand_product(group[i]);
    }

    free(group);
    system("pause");
    return 0;
}

 

posted @ 2021-12-24 15:43  炎叶  阅读(44)  评论(0)    收藏  举报