我刚开始写双色球机选程序都是像下面这样写
#include<math.h>
#include<stdlib.h>
#include<time.h>
main()
{
int i ,j ,k;
int num[6];
srand((unsigned)time(NULL));
for(i = 0;i < 6;i++)
{
num[i] = random(33)+1;
for(j = 0;j < i;j++)
{
if(num[i] == num[j])
{
i--;
j = 7;
}
}
}
num[5] = random(16)+1;
for(i = 0;i < 6;i++)
printf("%2d ",num[i]);
printf("+%2d ",num[5]);
getch();
}
这种写法的好处是好想
但是要承认的是这种写法效率很低(而且这个程序还是没有加号码大小的排序)
要只输出少量号码组的时候可能并没有表现出它的低效问题
但是在产生并输出大量这些号码的时候就会表现出其低效性
为此我想到了一个更好的方法:
#include<math.h>
#include<stdlib.h>
#include<time.h>
main()
{
int i ,j ,k;
int num[6];
srand((unsigned)time(NULL));
num[0] = random(28)+1;
for(i = 1;i < 6;i++)
{
num[i] = num[i-1]+random(28-num[i-1]+i)+1;
}
num[5] = random(16)+1;
for(i = 0;i < 6;i++)
printf("%2d ",num[i]);
printf("%2d ",num[i]);
getch();
}
大家可以很快的看出这个程序要优于上一个程序