桑丛纵目 桑丛纵目
Que
关注数: 70 粉丝数: 128 发帖数: 1,238 关注贴吧数: 41
请哪位大神帮帮忙看下我的彩票程序,忙整天了总是不能解重号问体 // 本程序有2个功能,一个是双色球随机生成,另一个是大乐透随机生成 #include <stdio.h> #include <time.h> // time()函数 #include <stdlib.h> //srand() rand() #define S_RED 6 //双色球中红色球个数 #define S_R_NO 34 //红色球范围,必须必实际的数字大1,才能产生出33这个数 #define S_BLUE 1 //双色球中蓝色去个数 #define S_B_NO 16 //蓝色去范围 #define S_Q 5 //双色球因子,这样才能在红球后接着打印篮球 #define D_RED 5 //大乐透中红色球个数 #define D_R_NO 36 // 大乐透中红球范围,必须必实际的数字大1,才能产生出35这个数 #define D_BLUE 2 //大乐透球中蓝色去个数 #define D_B_NO 12 //大乐透中红球的范围 #define D_Q 4 //双色球因子,这样才能在红球后接着打印篮球 #define MAX 100 //彩票注数最多100注 #define LEN 7 //彩票号码数 void show_menu ( void ); //显示菜单选项 char input_comfirm ( void ); //保证用户输入的字符符合程序要求,否则要求用户再次输入正确字符, void header_al ( char *pch ); //只获取输入的第一个字符 int (*get_number ( int, int, int ))[LEN]; void s_s_q ( void ); //双色球 void d_l_t ( void ); //大乐透 void show_result ( int q, int pcs, int qian[][LEN],int q_n, int hou[][LEN], int h_n ); //将篮球和红球数组传递,并显示成一排 int main ( void ) { char choice; printf ( "请勿购买非法私彩,以免上当受骗!!!\n" ); show_menu ( ); choice = input_comfirm ( ); switch ( choice ) { case 'a': s_s_q ( ); //双色球 break; case 'b': d_l_t ( ); //大乐透 break; case 'c': default: //退出程序 break; } return 0; } void show_menu ( void ) { printf ( "********************************************\n" ); printf ( " a. 双色球 b. 大乐透 \n" ); printf ( " c. 退出\n" ); printf ( "********************************************\n" ); printf ( "请选择你需要的彩票类型:" ); } char input_comfirm ( void ) // 来确保用户输入的是正确的字符,不然就给出提示。 { char ch; //用来存储用户输入的字符 char *p_ch = &ch; header_al( &ch); while ( (ch < 'a' || ch > 'c' )) { printf ( "输入错误,请重新输入正确的字符a, b, 或者 c 。\n" ); header_al( &ch); } return ch; } void header_al ( char *pch ) // 只读取用户输入的第一个字符, { *pch = getchar (); while ( getchar () != '\n' ) continue; //将用户多输入的字符扔除掉 } void s_s_q ( void ) { int zhu_shu; //彩票注数 int front[MAX][LEN]; int behind[MAX][LEN]; int (* p_f)[LEN]; p_f = front; int (* p_b)[LEN]; p_b = behind; int i, j, n; //int red[MAX][LEN]; // srand ( time ( NULL )); printf ( "请输入你需要多少注双色球: " ); while( (scanf ("%d", &zhu_shu ) != 1 ) && zhu_shu <= 0 && zhu_shu > 100 ) { printf ( "输入错误,请输入数字!\n" ); scanf ( "%d", &zhu_shu ); } printf ( " 以下是你需要的%d注双色球号码。\n" , zhu_shu ); printf ( " 祝你好运!!!\n" ); p_f = get_number ( zhu_shu, S_RED, S_R_NO ); p_b = get_number ( zhu_shu, S_BLUE, S_B_NO ); show_result ( S_Q, zhu_shu, p_f, S_RED, p_b, S_BLUE ); } void d_l_t ( void ) { int zhu_shu; //彩票注数 int front[MAX][LEN]; int behind[MAX][LEN]; int (* p_f)[LEN]; p_f = front; int (* p_b)[LEN]; p_b = behind; int i, j, n; printf ( "请输入你需要多少注大乐透: " ); while( (scanf ("%d", &zhu_shu ) != 1 ) && zhu_shu <= 0 && zhu_shu > 100 ) { printf ( "输入错误,请输入数字!\n" ); scanf ( "%d", &zhu_shu ); } printf ( " 以下是你需要的%d注大乐透号码。\n" , zhu_shu ); printf ( " 祝你好运!!!\n" ); p_f = get_number ( zhu_shu, D_RED, D_R_NO ); //前区红球 p_b = get_number ( zhu_shu, D_BLUE, D_B_NO ); //后区篮球 show_result ( D_Q, zhu_shu, p_f, D_RED, p_b, D_BLUE ); } int (*get_number ( int z_s, int loop, int area ))[LEN] //本函数为号码生成,要返回一个二维数组 { int i, j, n; static int numbers[MAX][LEN]; //号码存储数组 int temp[area]; //临时转换数组 for ( i = 1; i < area; i++ ) //彩票号码不能等于0 temp[i] = i; //通过循环,将area(号码的范围)内的所有数字,赋值给临时数组 srand ( (int)time ( NULL )); //生成随机种子 for ( i = 0; i < z_s; i++ ) // 外循环,z_S是传递过来的用户输入的彩票注数 { for ( j = 0; j < loop; j++ ) //内循环,loop是 彩票前区或者后区的号码个数 { n = rand () % area; //得到0到(area - 1)的下标数 numbers[i][j] = temp[n]; //将该下标的值赋值给彩票号码数组 temp[n] = temp[--area]; } } return numbers; } /*int (*get_number ( int z_s,int loop, int area ))[LEN] { int i, j, n, m, k; int tt[MAX][LEN]; static int temp[MAX][LEN]; srand ( time( NULL )); for ( i = 0; i < z_s; i++ ) { for ( j= 0; j < loop; j++ ) { while ( (temp[i][j] = rand ( ) % area) == 0 ) { temp[i][j] = rand ( ) % area; if ( j > 0 ) { for ( n = 0; n < j; n++ ) { m = temp[i][n]; k = temp[i][j]; while ( m == k ) temp[i][j] = rand ( ) % area ; } } } } } return temp; } */ void show_result (int q, int pcs, int qian[][LEN],int q_n, int hou[][LEN], int h_n ) { int i, j, n; for( i = 0; i < pcs; i++ ) { for ( j = 0; j < q_n; j++ ) { printf ("%4d ", qian[i][j]); if ( j == q ) { printf ( "**"); for (n = 0; n < h_n; n++ ) // printf ( "%d", p_b[i][0]); //每6次打一次篮球 printf ( "%3d", hou[i][n] ); } } printf ( "\n" ); } }
1 下一页