您当前的位置看一看 -> 编程文档 -> 开发语言 -> C语言 -> C技术资料-> 文章内容
栏目导航
热门文章
相关文章
C语言优化双色球自选程序的小技巧
作者:cdmalcl 发布时间:2007-03-18

原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?BoardID=5&ID=120387

我刚开始写双色球机选程序都是像下面这样写

#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();
}

大家可以很快的看出这个程序要优于上一个程序

[1][2] 下一页