生成一注双色球-c语言

来源:互联网 发布:智能手环要下什么软件 编辑:程序博客网 时间:2024/05/25 05:37

1、最开始的程序

#include<stdio.h>#include<stdlib.h>int produce_red();//每次产生一个红号int produce_blue();//生成蓝号void sort(int *a,int len);/*******************************************************该程序用来生成一注双色球*红号六个是不能重复的,首先生成第一个红号,然后一次生成*后面的红号,生成时依次与前面的比较,若与其中的一个相等*则换一个随机的号,再一次比较,设一个计数器count,若都不*相等,则count=i;注意count清零******************************************************/int main(){    int i,j;    int count=0;    int tmp;    int ticket[7]={0};    srand((int)time(0));    //设随机数种子,时间单位为秒,一秒内出的随机数相等    for(i=0;i<6;i++)    {        if(i==0)            ticket[0]=produce_red();                        //ticket[6]=produce_red();        else        {            //j=i;            flag:            tmp=produce_red();            count=0;            for(j=0;j<i;j++)                if(ticket[j]==tmp)                    goto flag;                else                    count++;            if(count==i)            {                ticket[i]=tmp;                            }            count=0;                        }    }    ticket[6]=produce_blue();    sort(ticket,6);    for(i=0;i<6;i++)    {        printf("%d ",ticket[i]);    }    printf("| %d",ticket[6]);    printf("\n");}int produce_red()//一次产生一个红球{    int j;        j=1+(int)(33.0*rand()/(RAND_MAX+1.0));    return j;}int produce_blue(){    int j;    //srand((int)time(0));    j=1+(int)(16.0*rand()/(RAND_MAX+1.0));    return j;}void sort(int *a,int len){    int i=0;    int j;    int t;    for(i=0;i<len;i++)    {        for(j=0;j<len-i-1;j++)        {            if(a[j]>a[j+1])            {                t=a[j];                a[j]=a[j+1];                a[j+1]=t;            }        }    }}


2、改进后的算法

#include<stdio.h>#include<stdlib.h>int produce_red();int produce_blue();void sort(int *a,int len);/************************************************彩票的改进程序,用一个数组保存所有的数字,每当*生成一个号时,让相应的数组中的数字置零,以保证*不会重复***********************************************/int main(){    int i,j,count=0;    int tmp;    int res[7];//保存最后生成的一注彩票    int num[33]={1,2,3,4,5,6,7,\                8,9,10,11,12,13,\                14,15,16,17,18,\                19,20,21,22,23,\                24,25,26,27,28,\                29,30,31,32,33};     srand((int)time(0));    while(count!=6)    {        tmp=produce_red();        if(num[tmp-1]!=0)        {            res[count]=tmp;            count++;            num[tmp-1]=0;                    }        else            continue;    }    res[6]=produce_blue();    sort(res,6);    for(i=0;i<6;i++)        printf("%d ",res[i]);    printf("| %d\n",res[6]);}int produce_red()//一次产生一个红球{    int j;        j=1+(int)(33.0*rand()/(RAND_MAX+1.0));    return j;}int produce_blue(){    int j;    //srand((int)time(0));    j=1+(int)(16.0*rand()/(RAND_MAX+1.0));    return j;}void sort(int *a,int len)//冒泡排序{    int i=0;    int j;    int t;    for(i=0;i<len;i++)    {        for(j=0;j<len-i-1;j++)        {            if(a[j]>a[j+1])            {                t=a[j];                a[j]=a[j+1];                a[j+1]=t;            }        }    }}




0 0
原创粉丝点击