头文件:
#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("参数是 双色球 或者是 大乐透 "); 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 }
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(" "); 14 15 printf("%s 红球:", arg); 16 17 printResult(a1, len1); 18 19 printf("蓝球:"); 20 21 printResult(a2, len2); 22 23 printf(" "); 24 }
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; }
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 }
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 }
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; } } } }
测试:
int main(int arcl, char *args[], char **env){ if(arcl < 2){ printf("请输入参数 双色球 或者是 大乐透 "); return -1; } hanldeArg(arcl, args[1]); system("pause"); return 0; }
运行及结果: