C语言实现随机抽奖程序

  #include

  #include

  #include // 使用当前时钟做种子

  #include

  /*

  做一个抽奖程序,一等奖1%二等奖5%三等奖10%

  要求1:基本功能实现,按下任意字母按键打印一次抽奖结果。

  要求2:程序开始的时候可以选择模式,键盘A键按下,代表自动模式;M代表手动模式,自动模式抽奖可以一直抽,直到抽到1等奖为止。

  要求3:在要求2的前提下,(自动模式)先打印第一次抽到三等奖所需要的次数,然后打印第一次抽到二等奖所需要的次数,最后打印第

  一次获得一等奖所需要的次数,程序结束

  */

  //随机数取段落,保证抽到的误差较小

  #define CJ_game(a) if(a>=0&&a<=327) printf("恭喜你!获得一等奖!!

  ");

  else if(a>=4000&&a<=5638) printf("恭喜你!获得二等奖!!

  ");

  else if(a>=400&&a<=3676) printf("恭喜你!获得三等奖!!

  ");

  else printf("再接再厉

  ")

  void CJ_mode_auto() //自动模式

  {

  int First_f = 0,Second_f = 0,Third_f = 0; //定义第一次抽取到奖品的标志位

  int Sjs = 0,Game_state = 1;

  int F_count = 0,S_count = 0,T_count = 0,count = 0;//定义抽到奖品的计数位

  printf("

  ");

  printf("

  ");

  printf("==========模式A:自动抽奖 游戏开始==========

  ");

  while(Game_state)

  {

  Sleep(200);

  Sjs=rand();

  CJ_game(Sjs);

  count++;

  // printf("%d

  ",count); //测试位

  if(Sjs >= 400 && Sjs <= 3676)

  {

  T_count++;

  if(T_count == 1)

  {

  Third_f = count;

  }

  }

  if(Sjs >= 4000 && Sjs <= 5638)

  {

  S_count++;

  if(S_count == 1)

  {

  Second_f = count;

  }

  }

  if(Sjs >= 0 && Sjs <= 327)

  {

  F_count++;

  if(F_count == 1)

  {

  First_f = count;

  }

  }

  if(First_f && Second_f && Third_f)

  {

  Game_state = 0;

  }

  }

  printf("第一次抽到一等奖所需要的次数为:%d

  ",First_f);

  printf("第一次抽到二等奖所需要的次数为:%d

  ",Second_f);

  printf("第一次抽到三等奖所需要的次数为:%d

  ",Third_f);

  printf("抽到一等奖的总次数为:%d

  ",F_count);

  printf("抽到二等奖的总次数为:%d

  ",S_count);

  printf("抽到三等奖的总次数为:%d

  ",T_count);

  printf("=====请选择新的游戏模式:M:手动,A:自动=====

  ");

  }

  void CJ_mode_handch(void) //手动抽奖

  {

  char ch;

  int Sjs;

  printf("

  ");

  printf("

  ");

  printf("==========模式M:手动抽奖 游戏开始==========

  ");

  printf("==========按0退出自动模式==========

  ");

  while(1)

  {

  printf("=====请输入一个字母:");

  //scanf(" %c",&ch); //如果需要输入字符然后回车的,需要在%c前面加空格或者

  ,来过滤缓冲区的“回车”

  ch = getch(); //从键盘获取字符

  if( (ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z') )

  {

  Sjs = rand();

  // printf("%d

  ",Sjs);

  CJ_game(Sjs);

  }

  else if(ch == '0')

  {

  printf("=====退出手动抽奖模式=====

  ");

  printf("=====请输入新的游戏模式:M:手动,A:自动

  ");

  break;

  }

  else

  {

  printf("=====请输入字母!!!=====

  ");

  }

  }

  }

  int main()

  {

  srand((unsigned)time( NULL ) ); // 初始化随机数

  char mode;

  printf("=======游戏开始==========

  ");

  printf("=====请选择抽奖模式======

  ");

  printf("=====按M进入模式M:手动抽奖=====

  ");

  printf("=====按A进入模式A:自动抽奖=====

  ");

  printf("=====按0结束游戏!!=====

  ");

  while(1)

  {

  mode = getch();

  if(mode =='A')

  {

  CJ_mode_auto();

  }

  else if(mode =='M')

  {

  CJ_mode_handch();

  }

  else if(mode == '0')

  {

  printf("游戏结束!");

  break;

  }

  else

  {

  printf("请输入正确的模式!!!

  ");

  }

  }

  return 0;

  }