数学建模社区-数学中国

标题: 【连载】科普之---随机数的应用(猜数字游戏的实现) [打印本页]

作者: wangzheng3056    时间: 2013-7-30 15:31
标题: 【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑 , E+ {5 b( k+ G) F7 G
* s% E1 {! E  }( d6 [  F
上一篇:科普之-------随机数rand()的用法4 A$ f2 d% a0 I% s2 T$ K
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。4 ?: G# _8 P5 y6 |
程序的流程是:
: U$ o0 n. C  H2 P* X- d4 U1.生成一个四位数要求每一位都不同,放在数组的四个元组中5 B* B$ O+ G4 f& q' i. h
2.要求用户输入四位数$ G) D) p5 [. U5 k- A- `& Z& w
3.程序将用户输入的四位数分离,放在数组的四个元组中! d# F0 n! P6 w5 S& v2 a* H" k
4.将两个数组进行对比,记录对比结果
1 {# z  m" X/ ]' M$ K# k$ K7 ]1 p5.输出结果
! T9 b8 L1 f! r5 b[attach]128096[/attach]
  1. #include<stdio.h>) L- S) J0 s- _) m9 l
  2. #include<stdlib.h>
    ( b* w4 H7 e! I
  3. #include<time.h>2 o  z2 V+ ]* E" @& ~
  4. int judge(int *a,int *b)/ v" O9 M& F) _" E% u# e
  5. {
    - y% D  O+ o6 }; S0 k  R8 \
  6.     int i,j;/ s6 i' H+ y0 S) Z9 h
  7.     int count_A,count_B;
    ; X# c0 {) e, C6 F; S2 X
  8.     count_A = count_B = 0;
    . U9 a" K* T; u4 e" l; |8 P/ R
  9.     for(i = 0;i<4 ;i++ )2 s* `% l" M% j2 c( |4 x- L- o
  10.     {
    4 X# J9 z. X8 q+ }$ G$ d
  11.         if(a[i] == b[i])  count_A++;
    " F* L( u4 p1 g6 e! J6 i3 o1 a
  12.     }& w  w# Q; p: F* |& ^

  13. 5 ?0 ]8 F5 `& _; T
  14.     if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}6 h0 C9 `- |; V( v
  15.     for(i = 0; i < 4;i ++)1 [8 }; W) i1 x- z9 [
  16.     { ) z) L. p' r1 H0 O! @  R
  17.         for(j = 0;j < 4;j ++)
    ' Z) a8 j0 G* |$ ^: P: y6 c
  18.         {
    ( `0 h6 Z) R. u& x2 R  m
  19.              if(a[j] == b[i]) {count_B++;j = 4;}- `5 R) [+ E9 Q- C
  20.          }
    9 X, [2 k7 R" s' b
  21.     }
    $ d9 w( N8 _( ]% `; F& W. o
  22.     printf(\"%dA%dB\\n\",count_A,count_B);5 Q6 L" f1 g% I% A5 h  Y$ d
  23.     return 0;* u" w" q# o8 `) V* c& s: N- u
  24. }
      U1 C, E8 h- `: V# ?. `
  25. void main()//c语言版猜数字游戏
    ( M7 c) S6 M& t4 J# n% U/ I
  26. {
    + t% g) h: e6 v' K/ l* @* }
  27.     int r_num[4];
    . Z7 r, U" B+ A7 q5 N7 t
  28.     int input_num[4];! |6 H; `% ^6 x
  29.     srand(time(0));4 e/ _/ ~- ~% c9 X9 c; Z
  30.     int j,i = 0,temp1,temp2 = 0;, P+ A, L2 b. ?+ h! q/ w
  31.     /*********************生成四个随机数***********************/; M4 j/ s7 e- b
  32.     while(i<4)
    + W6 y6 H' E* [7 [5 {8 |0 L& H4 b+ ?
  33.     {' D5 @1 R( L8 d# \& o2 V* Y
  34.        if(i == 0) {r_num[i] = rand()%10;i++;}, @+ i, N1 l+ n+ ]2 P. H
  35.        else
    + M  z) z# h$ \; H  E
  36.        {0 f+ f' D5 {0 J5 O& D
  37.            temp1 = rand()%10;5 O  N+ R) t8 Q  S# F  l: S
  38.            for(j=0;j<i;j++), Q7 G7 u9 U( M. e
  39.            {0 A: R0 ^# {8 l% x- D8 `
  40.                if(temp1 == r_num[j]) temp2++;       / m+ w' P6 m9 {7 N) S, s8 V: v
  41.            }# c# I" }% S( v& t" a+ r! E5 J: @  ~
  42.            if(temp2 == 0)
    - v1 A* u5 x* ?, ^! ^
  43.            {
    5 W, H1 I  o7 a/ [
  44.                r_num[i] = temp1;
    - q( i. i2 d. a$ y0 y
  45.                temp2 = 0;% L8 B6 T+ Z3 y" A
  46.                i ++;
    # M- w4 A9 n3 q3 s
  47.            }- d2 s; U& s5 k* o
  48.            else* a& j+ u/ H2 f" s: C0 A8 M1 D) c/ `
  49.            {
    " c! H  b( r4 Q0 y5 B$ S6 f
  50.                temp2 = 0;
    . `! V/ l* |( t4 c6 C
  51.                continue;
    + r! |5 p/ x$ [9 Q# ^% v* B
  52.             }
    1 ^+ K4 y* Q2 O7 O+ K1 t+ k4 C
  53.        }   
    ( k# J; a7 `' k' k4 ^# M8 T8 @
  54.     }: _" \- ]& G3 p2 `# h3 m
  55.     for(i = 0;i<4;i++)$ Q4 F# Y/ q1 l. V% z4 q4 Z7 U; Z
  56.     printf(\"%d\\n\",r_num[i]);
    . U# g' f$ u* d9 w9 i' r7 A5 y
  57.     /************************猜数字游戏核心部分*********************/3 R; {- V7 U2 y5 K+ q1 s& h7 X
  58.     for(;;)! C9 J+ T( X# }5 i+ f
  59.     {
    / c$ b5 [2 D" a" l2 }
  60.         scanf(\"%d\",&j);
    . J: n1 Z- p  h2 j. v: ?0 d' T% x
  61.         input_num[0] =  j/1000;; Y) J, L5 V4 _* Q7 l/ `( X5 f
  62.         input_num[3] =  j%10;
    2 w- t$ x+ I2 H* K9 X
  63.         input_num[1] = (j - input_num[0]*1000)/100;
    ' `3 }1 ?* k) h# C! G4 O
  64.         input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;! M) x6 `, d1 a1 A& E+ G$ L& ]3 e
  65.         /********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
      g. f" P- K1 z& i
  66.         if(judge(input_num,r_num)==1) break;
    $ c( \, i7 x- q- W  K, \
  67.         else. M4 p$ y5 `8 L& e6 q6 h8 M) s
  68.             continue;1 I& B7 w+ b3 m9 i# j: h$ @: U
  69.     }
    6 V# b) z$ U# @% z  Z7 p
  70. }
复制代码





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5