c语言实现双色球和大乐透

头文件:

#include<stdio.h>
#include <stdlib.h> 
#include<string.h>
#include <time.h>

函数原型:

void sortArray(int *a, int length); // 数组的排序

int randInMinAndMax( int range_min, int range_max );//产生一个0~max之间的某个数

void getRandArray(int *a, int length, int max); //产生某一长度的数组,它的每个元素都是随机生成的,且都在1~max之间、各不相同

void printResult(int *a, int length); //遍历数组

void getReult(char *arg, int *a1, int len1,int max1, int *a2, int len2, int max2);//产生双色球或者大乐透的结果

void hanldeArg(int argl, char *arg); //根据传入的参数判断是需要双色球还是大乐透,并跳转到相应的方法

实现方法:

 1 void hanldeArg(int argl, char *arg){
 2 
 3     int *a1 = NULL, *a2 = NULL;
 4 
 5     if(strcmp(arg, "双色球") == 0){
 6         
 7         a1 = (int *)malloc(sizeof(int) * 6);
 8 
 9         a2 = (int *)malloc(sizeof(int) * 1);
10 
11         getReult(arg, a1, 6, 33, a2, 1, 16);
12 
13     }else if(strcmp(arg, "大乐透") == 0){
14 
15         a1 = (int *)malloc(sizeof(int) * 5);
16 
17         a2 = (int *)malloc(sizeof(int) * 2);
18 
19         getReult(arg, a1, 5, 35, a2, 2, 12);
20 
21     }else
22         printf("参数是 双色球 或者是 大乐透 \n");
23 
24     if(a1 == NULL){
25 
26         free(a1);
27 
28         a1 = NULL;
29 
30     }
31 
32     if(a2 == NULL){
33 
34         free(a2);
35 
36         a2 = NULL;
37 
38     }
39 }
View Code
 1 void getReult(char *arg, int *a1, int len1,int max1, int *a2, int len2, int max2){
 2 
 3     int i ;
 4 
 5     srand((unsigned)time(NULL));
 6 
 7     for(i = 0; i < 10000; ++i){
 8         getRandArray(a1, len1, max1);
 9 
10         getRandArray(a2, len2, max2);
11     }
12 
13     printf("\n");
14 
15     printf("%s 红球:", arg);
16 
17     printResult(a1, len1);
18 
19     printf("蓝球:");
20 
21     printResult(a2, len2);
22 
23     printf("\n");
24 }
View Code
int randInMinAndMax( int range_min, int range_max )
{
    int i, u;

    for(i = 0; i < 10; ++i)
        u = (double)rand() / RAND_MAX * (range_max - range_min) + range_min;

    return u;
}
View Code
 1 void printResult(int *a, int length){
 2 
 3     int i;
 4 
 5     for(i = 0; i < length; ++i){
 6 
 7         printf(" %d ", a[i]);
 8     }
 9 
10 }
View Code
 1 void getRandArray(int *a, int length, int max){
 2     
 3     int i, j, flag ;
 4 
 5     int temp;
 6 
 7     for(i =0; i < length; ++i){
 8 
 9         exist : {
10             
11             //得到一个随机数
12             temp = randInMinAndMax(1, max);
13 
14             flag =0; //设置数组中不存在这个数
15 
16             //判段数组中是否存在
17             for(j = i; j >= 0; --j){
18 
19                 if(temp == a[j]){
20 
21                     flag = 1;
22 
23                     break;
24                 }
25 
26             }
27         };
28 
29         if(flag){
30 
31             goto exist;
32 
33         }
34             
35         a[i] = temp;
36 
37     }
38 
39     sortArray(a, length);
40 }
View Code
void sortArray(int *a, int length){

    int i, j, temp;

    for(i = 0; i < length; ++i){

        for(j = i + 1; j < length; ++j){

            if(a[j] < a[i]){

                temp = a[i];

                a[i] = a[j];

                a[j] = temp;

            }

        }

    }
}
View Code

 

测试:

int main(int arcl, char *args[], char **env){

    if(arcl < 2){

        printf("请输入参数 双色球 或者是 大乐透 \n");

        return -1;

    }

    hanldeArg(arcl, args[1]);

    system("pause");

    return 0;

}

运行及结果:

转载于:https://www.cnblogs.com/zhouquan-1992-04-06/p/6234612.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值