⑴ 请C语言高手编程!“双色球”红号组合编程
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int isLegal(int std[],int a[])
{
int sum=0;
int i,j;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
{
if(a[i]==std[j])
sum++;
}
if(sum>3) return 0;
else return 1;
}
int isRepeated(int a[],int temp)
{
int i;
for(i=0; i<6; i++)
if(temp == a[i]) return 1;
return 0;
}
void main()
{
int randNumber[6]={-1,-1,-1,-1,-1,-1},i,k,n,judge,temp;
int std[][6]={ {1,5,6,15,22,28},
{4,9,13,18,21,32},
{8,16,21,22,27,30},
{5,8,11,20,24,29},
{12,13,19,23,25,33},
{10,11,15,16,27,29},
{6,9,14,16,24,32}
};
srand((unsigned)time(NULL));
printf("要产生几组这样的数? ");
scanf("%d",&n);
for(k=0;k<n;k++)
{
do{
judge=1;
for(i=0;i<6;i++)
{
do{
temp=rand()%33+1;
} while(isRepeated(randNumber,temp));
randNumber[i]=temp;
}
for(i=0;i<7;i++)
{
judge*=isLegal(std[i],randNumber);
if(judge==0)
break;
}
}while(judge!=1);
for(i=0;i<6;i++)
printf("%d ",randNumber[i]);
printf("\n");
}
}
****************************************
以下是运行效果:
要产生几组这样的数? 10
3 29 13 22 9 7
24 1 5 13 17 6
9 19 24 8 33 20
5 9 29 7 10 26
19 28 18 31 11 9
6 23 28 13 27 24
5 20 1 14 11 26
19 30 25 32 8 12
20 14 24 19 18 15
29 27 25 23 24 19
Press any key to continue...
⑵ 入门java彩票编程题
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Random;
importjava.util.Scanner;
publicclassLotto{
publicstaticfinalintNUMBER=7;
publicstaticvoidmain(String[]args){
List<Integer>userNumbers=newArrayList<Integer>();
Scannerscanner=newScanner(System.in);
inti=1;
while(i<8){
System.out.println("输入第"+i+"个数字:");
userNumbers.add(scanner.nextInt());
i++;
}
System.out.println(prize(userNumbers.toArray(newInteger[NUMBER])));
}
privatestaticInteger[]generateLotto(){
List<Integer>lottoNumbers=newArrayList<Integer>();
Randomrand=newRandom();
intlottoNumber,i=0;
while(i<NUMBER){
lottoNumber=rand.nextInt(35)+1;
if(!lottoNumbers.contains(lottoNumber)){
lottoNumbers.add(lottoNumber);
i++;
}
}
returnbubbleSort(lottoNumbers.toArray(newInteger[NUMBER]));
}
privatestaticInteger[]bubbleSort(Integer[]array){
for(inti=0;i<array.length;i++){
for(intj=0;j<array.length-i-1;j++){
if(array[j]>array[j+1]){
inttemp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
}
returnarray;
}
publicstaticStringprize(Integer[]userNumbers){
intcount=0;
Integer[]lottoNumbers=generateLotto();
for(Integeri:userNumbers){
for(Integerj:lottoNumbers){
if(i==j){
count++;
}
}
}
return"猜对了"+count+"个彩票号码";
}
}
输入第1个数字:
5
输入第2个数字:
14
输入第3个数字:
19
输入第4个数字:
24
输入第5个数字:
33
输入第6个数字:
34
输入第7个数字:
27
猜对了 3 个彩票号码
截图:
publicclassTest1{
publicstaticvoidmain(String[]arg){
Test1localTest1=newTest1();
//双色球:红色球号码+蓝色球号码
//六个红色球和一个蓝色球号码
//红色球号码从1~33中选择
//蓝色球号码从1~16中选择
//一等奖:七个号码相符(六个红色号码和一个蓝色球号码)(红色球号码顺序不限,下同)
//二等奖:六个红色球号码相符;
//三等奖:五个红色球号码,或者四个红色球号码和一个蓝色球号码相符;
//四等奖:五个红色球号码,或者三个红色球号码和一个蓝色球号码相符;
//五等奖:四个红色球号码,或者三个红色球号码和一个蓝色球号码相符;
//六等奖:一个蓝色球号码相符(有误红色球号码相符均可);
//例如:红色球号码010613192428蓝色球号码16
System.out.println("开始出奖");
//定义双色球数组,大小为7
String[]values=newString[7];
for(inti=0;i<7;i++){
if(i==6){
intblueValue=localTest1.randomOneBlueValue();
if(blueValue<10){
values[i]="0"+blueValue;
}else{
values[i]=String.valueOf(blueValue);
}
}else{
intredValue=localTest1.randomOneRedValue();
if(redValue<10){
values[i]="0"+redValue;
}else{
values[i]=String.valueOf(redValue);
}
}
}
System.out.println();
System.out.println("出奖结束");
System.out.println();
System.out.print("双色球开奖号码:");
//打印双色球号码
for(Stringvalue:values){
System.out.print(""+value);
}
}
}
⑷ 用Java程序写一个彩票的模拟程序生成6个红球(1-33的随机数),1个蓝球(1-16的随机数),随机数可以重复
(){
Randomrandom=newRandom();
intredball[]=newint[6];
StringBufferstringBuf=newStringBuffer();
for(inti=0;i<6;){
inttemp=random.nextInt(33)+1;
if(this.isGenerated(redball,temp))
continue;
elsestringBuf.append((redball[i++]=temp)+(i==6?"":","));
}
stringBuf.append("|"+(random.nextInt(16)+1));
returnstringBuf.toString();
}
privatebooleanisGenerated(int[]scope,inttarget){
if(scope==null)returnfalse;
for(inti=0;i<scope.length;i++)
if(target==scope[i])returntrue;
returnfalse;
}
⑸ c语言彩票兑奖程序
一、主要要求:
1。自动购票
2。自动选号
3。奖金累计
4、开奖功能
二、例程:
#include<stdlib.h>
#include<time.h>
#defineRAND_MAX899;
typedefstructGr
{
charname[10];
intnum;
};
main()
{
charlaji[100];
GrRen[100];
intjiang,n=0;//n为中奖人数,jiang为中奖号码
puts("——————————幻星彩票选购系统!———————— ");
charx;
inti=0,j;
inttemp=3;
a1:puts("请选择:1-购票,2-自动选号,3-奖金累计,4-开奖(退出请直接关闭程序!)");
scanf("%c",&x);
switch(x)
{
case'1':puts(" **************-----购票!----************ ");
printf("请输入姓名:");
scanf("%s",Ren[i].name);printf("请输入买入号码(3位数字!):");
scanf("%d",&Ren[i].num);
printf("购票成功,你是第%d位购票人! ************************ ",i+1);
i++;
gets(laji);
gotoa1;
break;
//case2
case'2':puts(" **************-----自动选号!----************ ");
printf("请输入姓名:");
scanf("%s",Ren[i].name);
srand(time(0));
//为了让随机数更随机,多次设置种子数
for(intj=0;j<5;j++)
{
temp=rand();
srand(temp);
}
temp=rand();
Ren[i].num=100+temp%899;
printf("选号成功!您的号码是:%d",Ren[i].num);
printf(" ************************ ");
gets(laji);
i++;
gotoa1;
break;
//case3
case'3':puts(" **************-----奖金累计!----************ ");
printf("当前总人数为%d,当前奖金总数为:%d! ",i,2*i);
gets(laji);
puts(" ******************** ");
gotoa1;
break;
case'4':puts("****************抽奖!*************** ");
if(i==0)
{
printf("没有人买彩票,不能开奖! ");
gets(laji);
gotoa1;
}
else
{
srand((int)time(0)%temp);
jiang=rand()%899+100;
printf("!!!!!!!!!!!!!!!!本次中奖号码为:%d ",jiang);
for(j=0;j<i;j++)
{
if(Ren[j].num==jiang)
{
printf("中奖人:%s ",Ren[i].name);
n++;
}
}
if(n==0)
{
printf("本次开奖无中奖人数,奖金将累计到下期! ");
}
else
{
printf("本次中奖人数有:%d人,每人奖金为:%f! ",n,(float)(i*2)/n);
}
printf("欢迎大家使用幻星彩票选购系统,GoodBye!");
}
break;
default:printf(" ************输入错误——————,重新输入! ");
gets(laji);
gotoa1;
break;
}
system("pause");
}
⑹ 写一彩票程序,要求能随机产生并按照升序输出1-30之间的7个数,且其中任意两个数字不能重复,Java程序
一楼的老哥给的答案是没问题的,而且最妙的就是那个26行的(randomNum--);
问这个问题的应该都是新手,所以我就解释一下这个老哥写的代码意思;
首先创建一个30长度的数组,遍历赋值,这个里面数字为1-30的数组就是取值范围;
我们会从这个数组里取到我们需要的随机数.
然后创建一个7长度的答案数组,这个数组用来装答案.
生成随机数的random要放在for循环里面,每循环一次都能获得不同的随机数.
这里注意26行的randomNum--,每循环一次,我们的取值范围下标就提前一位,也就是说,第一次赋值,取值范围是30个数全部,第二次--之后变成了前29个数,每循环一次减去一,每次循环都把最后一位数剔除出取值范围;
从取值范围数组里随机拿一个数放到答案数组第一位,然后这个数我们就跟最后一位数交换,
随后randomNum--,我们已经取过的这个数,跟最后一位数交换,而且退出了取值范围了,
举个例子,答案数组现在是空的{}, 取值范围数组现在有{1,2,3};
第一次循环之后,假如答案数组变成:{1},那个取值范围就变成了{3,2}1,已经取值过的1,因为randomNum--,已经跟最后一位交换并且剔除了.