‘壹’ c语言,双色球随机小程序,要求前6个33选6不重复,最后一个16选1.请问为什么我这个程序33选6的时候会重复
程序修改过了:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{int r[6],b,i,j;
srand(time(NULL));
r[0]=rand()%33+1;
for(i=1;i<6;i++)
{r[i]=rand()%33+1;
for(j=i-1;j>=0;j--) //有改动
if(r[i]==r[j])
{i--;
break;
}
}
for(i=0;i<5;i++) //有改动
for(j=i+1;j<6;j++)
{b=r[i];
if(r[j]<r[i])
{b=r[j];
r[j]=r[i];
r[i]=b;
}
}
for(i=0;i<6;i++)
printf("%d ",r[i]);
b=rand()%16+1;
printf("+ %d",b);
printf("\n");
}
‘贰’ 请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...
‘叁’ C语言实现双色球模拟兑奖
对这个程序,其实很简单,相信自己可以做到的,我们可以将中奖号码放在一个文件里,并创建一个文件,然后用指针对其调用里面的元素,然后将元素与你输入的号码做个对比,在这儿你需要将输入的号码它的地址表明清楚,再用条件语句IF做比较,这样就可以完成了!因为自己很久不弄这东西了,有点儿生熟了,但是它的算法我想应该是这样的!
‘肆’ 一个C语言的编程题!
如果只是想知道答案的话,这不用编程,用排列组合知识就行了。
首先:从33个里面选出六个,共C(33,6)种
再减去三个连号的:2*C(29,3)+29*C(28,3)
再减去四个连号的:2*C(28,2)+28*C(27,2)
再减去五个连号的:2*C(27,1)+27*C(26,1)
再减去六个连号的:28种
其中,C(x,y)代表组合数公式
‘伍’ C程序编写双色球代码问题
/*DEV C++4.9.9.2编译通过如果用vc6,加几个#define来表示一下true,false,bool这三个符号就行了,分别是Bool,1,0O(∩_∩)O~*/ #include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>int main(void)
{
unsigned int count = 0;
int number[7] = { 0 };
bool next = true;
printf("这个程序用来生成双色球号码\n");
printf("输入要生成的注数:");
srand( (unsigned int)time(NULL) );
do{
fflush(stdin);
scanf(" %d",&count); for(int i = 1; i <= count; i++)
{
printf("\n\n");
number[6] = rand() % 16 + 1;
for(int j = 0; j < 6; j++)
{
number[j] = rand() % 33 + 1;
for(int k = 0;k < j; k++)
if(number[k] == number[j])
j--;
}
for(int k = 0; k < 5; k++)
for(int n = 0; n < 5 - k; n++)
if( number[n] > number[n+1])
{
int box = 0;
box = number[n+1];
number[n+1] = number[n];
number[n] = box;
}
for(int m = 0; m < 7; m++)
printf(" %s%3d",(0==m) ? "红 球:" : ( (6==m) ? "篮 球:" : ""),number[m]);
}
printf("\n\n输入注数,您可以再来几注:");
}while(true);
getch();
return 0;
} 贴出来经过快捷方式修饰的效果看看:
‘陆’ 用C语言编写双色球代码
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
constintMAX1=33;
constintMAX2=16;
voidmain()
{
intx[6]={0};
inty=0;
inti,j,k,r;
k=0;
srand(time(0));
while(k<6)
{
r=rand()%MAX1+1;
for(i=0;i<k;i++)
if(x[i]==r)
break;
x[k++]=r;
}
y=rand()%MAX2+1;
for(i=0;i<6;i++)
printf("%d",x[i]);
printf("%d",y);
}
‘柒’ 用C语言怎样编程双色球
srand(time(NULL));
rand();
‘捌’ 请C语言高手编程!“双色球”红号组合编程 1,从1到33里任意取六个数进行组合。
#include <stdlib.h>
#include <stdio.h>
##include <stdlib.h>
#include <stdio.h>
#include <time.h> /*用到了time函数,所以要有这个头文件*/
#define MAX 6
int main( void)
{
int number[MAX] = {0};
int i,j;
srand((unsigned) time(NULL)); /*播种子*/
for(i = 0; i < MAX; i++)
{
number[i] = rand() % 33; /*产生33以内的随机整数*/
while(number[i]==0)
number[i] = rand() % 33;
//printf("%d ", number[i]);
}
while(1)
{
for(i=0;i<6;i++)
for(j=i+1;j<6;j++)
{ if(number[i]==number[j])
{
number[j]=rand() % 33;
i=-1;
}
}
if(i==6)
break;
}
for(i = 0; i < MAX; i++)
printf("%d ", number[i]);
printf("\n");
return 0;
}
程序为1-33的不重复随机数