⑴ 請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--,已經跟最後一位交換並且剔除了.