一、背景和思路
彩票现在越来越普及,种类也越来越多,很多人都愿意去花小小的代价去赌那一点点的可能性,但我们学过概率论,知道那微小不可能事件,这次我们的实验就是做出一个彩票生成器。
对于该问题,设计 C 语言程序时,第一种选择方法,选择七个数,然后从规定好的m(1~35)中用随机数函数选出七个随机数,然后两者进行双重循环比较,得出两个数组之间相等数的个数,然后输出做好的开奖函数;第二种方法:输入一个注数,像第一种方法一样,从m中得出随机数,不过这次用循环规定输出随机数组的次数(中间用延时函数做出两秒延迟);第三种方法:胆拖,输入的数字放到一个单独数组,然后随机函数输出除去单独数组之外的35个数的随机数组,组成七个数的胆拖数组。
二、程序流程图
三、程序代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define m 35
#define n 7
void delay(int time)//延时函数 delay
{
for(int i=0;i<time;i++)
for(int j=0;j<time;j++);
}
void buycp(int mycp[],int len)//买彩票
{
int i;
for(i=0;i<len;i++)
scanf("%d",&mycp[i]);
}
void suijishu(int mycp[],int len,int M)//随机数函数
{
int i,j;
//M=m+1;
srand(time(NULL));
for(i=0;i<len;i++)
{
mycp[i]=rand()%M;
for(j=0;j<i;j++)
{
if(mycp[i]==mycp[j])
{
j=-1;
mycp[i]=rand()%M;
}
}
printf("%d ",mycp[i]);
}
}
int duijiang(int mycp[],int mylen, int kj[],int len)//比较号码
{
int i,j;
int k=0;
for(i=0;i<mylen;i++)
{
for(j=0;j<len;j++)
{
if(mycp[i]==kj[j])
{
k=k+1;
}
}
}
return k;
}
void fajiang(int k)//发奖
{
if(k==0)
printf("很遗憾,您没有中奖\n");
if(k==1)
printf("您选中一个号码,中奖1元\n");
if(k==2)
printf("您选中两个号码,中奖5元\n");
if(k==3)
printf("您选中三个号码,中奖10元\n");
if(k==4)
printf("您选中四个号码,中奖100元\n");
if(k==5)
printf("您选中五个号码,中奖1000元\n");
if(k==6)
printf("您选中六个号码,中奖10000元\n");
if(k==7)
printf("您选中七个号码,中奖100000元\n");
}
int main()
{
int mycp[7];//买的彩票
int kjcp[7];//开奖
int xnum[7];//自选 数
int jnum[7];//机选 数
int h,n2,n3,i,k,j;
printf("请选择买彩票的方式(1:自选2:机选3:胆拖): \n");
scanf("%d",&h);
if(h==1)
{printf("请输入选择的七个数,空格键分开,回车结束(1~35):\n");
buycp(mycp,7);
printf("请稍后......\n");
delay(10000);
printf("本期开奖号码为:");
suijishu(kjcp,7,m+1);
printf("\n");
printf("您所购买彩票与开奖彩票号码相同的个数为:");
k=duijiang(mycp,7,kjcp,7);
printf("%d",k);
printf("\n");
fajiang(k);
}
if(h==2)
{
printf("输入需要买的桩数:");
scanf("%d",&n2);
for(i=0;i<n2;i++)
{
suijishu(kjcp,7,m+1);
printf("\n");
delay(20000);
}
}
if(h==3)
{
printf("输入你想选择的胆拖数:");
scanf("%d",&n3);
printf("输入你选择的胆拖,空格分开,回车结束:");
buycp(mycp,n3);
for(i=0;i<n3;i++)
{
printf("%d ",mycp[i]);
}
//suijishu(kjcp,7-n3,m+1);
srand(time(NULL));
for(i=0;i<7-n3;i++)
{
kjcp[i]=rand()%m+1;
for(j=0;j<i;j++)
{
if(kjcp[i]==kjcp[j]||mycp[j]==kjcp[i])
{
j=-1;
kjcp[i]=rand()%m+1;
}
}
printf("%d ",kjcp[i]);
}
}
return 0;
}
实验结果如下:
随便写写玩玩的小程序,肯定有很多不足之处,希望有看到的大神可以指出。感谢