该程序功能为从键盘输入想要够买的彩票注数,随后生成对应个随机球号数并输出(显然随机数不能重复)。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//双色球:红:33选6 蓝:16选1
//大乐透:红:35选5 蓝:12选2
#define RED 35
#define pick1 5
#define BLUE 12
#define pick2 2
int r1[RED]={0},b1[BLUE]={0},r2[RED]={0},b2[BLUE]={0};
void red()
{
int i,j,k;
for(j=0,i=0;i<pick1;i++,j++)
{
r1[i]=rand()%RED+1;
for(k=0;k<=i;k++)
{
r2[j]=r1[i];
if(r1[i]==r2[k] && i!=k)
{
i--;
j--;
break;
}
}
}
for(i=0;i<pick1;i++)
printf("%02d ",r1[i]);
}
void blue()
{
int i,j,k;
for(j=0,i=0;i<pick2;i++,j++)
{
b1[i]=rand()%BLUE+1;
for(k=0;k<=i;k++)
{
b2[j]=b1[i];
if(b1[i]==b2[k] && i!=k)
{
i--;
j--;
break;
}
}
}
for(i=0;i<pick2;i++)
printf("%02d ",b1[i]);
}
int main()
{
int n,i;
srand(time(NULL));
printf("Please enter the number:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("<%d> ",i);
red();
printf("----");
blue();
printf("\n");
}
system("pause");
return 0;
}
修改define中相应的数字,即可改变对应颜色输出的球号的个数。
其中生成不重复随机数的方法为:
通过比较当前生成数与除它本身之外已生成的数,若有相同的数,则对它进行重新赋值,直到没有重复的数为止。
程序运行结果如下: