📄 caipiaoos.c
字号:
#include <iostream.h>
#include <time.h>
#include<stdlib.h>
#include "stdio.h"
#include "stdlib.h"
#include <fstream.h>
ofstream fout("彩票库.txt");
ifstream fin("中奖号码.txt");
bool buycp(int k)//让用户选取彩票*******************************************************
{
int a[7],i,j,t;
char b[18];
cout<<"请输入您的18位身份证号码(以回车键结束):"<<endl;
for(i=0;i<18;i++)
cin>>b[i];
k++;
for(i=0;i<6;i++)//让用户选出7个符合要求的号码
{
cout<<"请选择第"<<i+1<<"个号码";
cin>>a[i];
if(a[i]<1||a[i]>30)//设定彩票范围
{
cout<<"选择超出范围!"<<endl;
i--;
continue;
}
if(i==0) continue;
for(j=0;j<i;j++)//彩票号码不能重复
if(a[i]==a[j])
{
i--;
cout<<"选择有重复!"<<endl;
break;
}
}
while(1)
{
cout<<"请选择特别号码:";
cin>>a[6];
if(a[6]>=1&&a[6]<=33)
i=1;
else
{
cout<<"选择号码超出范围!"<<endl;
i=0;
}
for(j=0;j<6;j++)//彩票号码不能重复
{
if(a[6]==a[j])
{
cout<<"选择有重复!"<<endl;
t=1;
break;
}
else t=0;
}
if(t==0&&i==1)break;
else continue;
}
cout<<"彩票购买成功!"<<endl;
fout<<k<<" ";
for(i=0;i<18;i++)
fout<<b[i];
fout<<" ";
for(i=5;i>=0;i--)//给选择好的彩票号码排序
for(j=0;j<i;j++)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
cout<<"你所选择的号码为:";
for(i=0;i<6;i++)//输出排序好的彩票号码
{
cout<<a[i]<<" ";
fout<<a[i]<<" ";
}
cout<<endl;
cout<<"您选择的特别号码为:";
cout<<a[6];
fout<<a[6];
fout<<endl;
cout<<endl;
return 0;
}
int randNumber(int range)//得到随机函数************************************************
{
srand((unsigned)time(NULL));
return rand()%range+1;
}
int GCD(int a, int b)//求两个整数的最大公约数*******************************************
{
if (!(a%b))
{
return b;
}
else
{
return GCD(b,a%b);
}
}
void SambukeRandom(int seed, int step, int nStep, int range)//抽奖*********************
{
int cpSeed = seed;
int a[7],i,j,t;
if (GCD(seed,step)==1)//对种子和步长取余,若互质则满足要求
{
cout<<"You've made a good choice:)"<<endl;
}
else
{
cout<<"You've made a bad choice:("<<endl;
}
for(i=0;i<nStep;i++)//取7个随机数
{
a[i]=cpSeed%range+1;
if(i==0) continue;//不让随机数有重复
for(j=0;j<i;j++)
if(a[j]==a[i])
{
i--;
break;
}
cpSeed += step;
}
for(i=6;i>=0;i--)//给7个选取的数排序
for(j=0;j<i;j++)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<nStep;i++)//输出7个排好序的随机数
cout<<a[i]<<' ';
cout<<endl;
}
void choujiang()//抽奖得到随机号码***************************************************
{
int a[7],i,j,t;
cout<<"Waiting for getting lucky number:)......"<<endl;
for(i=0;i<7;i++)
{
a[i]=randNumber(30);
if(i==0)
continue;
for(j=0;j<i;j++)
if(a[i]==a[j])
{
i--;
break;
}
}
for(i=6;i>=0;i--)//给选择好的彩票号码排序
for(j=0;j<i;j++)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<7;i++)//输出排序好的彩票号码
cout<<a[i]<<" ";
fout<<a[i]<<"重奖号码.txt";
cout<<endl;
}
int duijiang()//从彩票库里一个一个搜索,看中奖否或中几等奖***************************
{
int i,j,n,a[26],b[7];
n=0;
for(i=0;i<=25;i++)
{
fin>>a[i];
}
for(j=0;j<=7;j++)
{
fin>>b[j];
}
for(j=0;j<=7;j++)
{
for(i=19;i<=25;i++)
{
if(a[i]==b[j])
n++;
}
}
switch(n)
{
case 7:
cout<<" 恭喜你中了特等奖!";break;
case 6:
cout<<" 恭喜你中了一等奖!";break;
case 5:
cout<<" 恭喜你中了二等奖!";break;
case 4:
cout<<" 恭喜你中了三等奖!";break;
case 3:
cout<<" 恭喜你中了四等奖!";break;
case 2:
cout<<" 谢谢合作!下次好运!";break;
case 1:
cout<<" 谢谢合作!下次好运!";break;
case 0:
cout<<" 谢谢合作!下次好运!";break;
default:
cout<<"error!";
}
return n;
}
void main()//主函数*******************************************************************
{
const n=1000000;
int k;
for(k=0;k<n;k++)//buy ticket
{
char w;
cout<<"您购买的是第"<<k<<"号彩票"<<endl;
buycp(k);
cout<<"继续购买请按Y,退出请按B,再回车"<<endl;
cin>>w;
if((w=='Y')||(w=='y'))
{
cout<<"Continue..."<<endl;
continue;
}
else
{
cout<<"Break..."<<endl;
break;
}
}
cout<<"购买彩票结束!"<<endl;
srand((unsigned)time(NULL));//choose random number
k=rand();
SambukeRandom(k,127,7,30);
cout<<"抽奖已结束,现在等待兑奖结果:)......"<<endl;
cout<<"谢谢大家对本彩票的支持!:)"<<endl;
k=duijiang();
cout<<k<<endl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -