1. 程式人生 > >c語言彩票號碼生成器

c語言彩票號碼生成器

一、背景和思路 彩票現在越來越普及,種類也越來越多,很多人都願意去花小小的代價去賭那一點點的可能性,但我們學過概率論,知道那微小不可能事件,這次我們的實驗就是做出一個彩票生成器。 對於該問題,設計 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;
}

實驗結果如下: 在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述 隨便寫寫玩玩的小程式,肯定有很多不足之處,希望有看到的大神可以指出。感謝