数学建模社区-数学中国

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

作者: wangzheng3056    时间: 2013-7-30 15:31
标题: 【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑
6 W! {8 e9 Z* D
) T: a+ j8 e& H4 ~& _2 @" M& W上一篇:科普之-------随机数rand()的用法$ @: i. i9 k* c- d+ `
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。
" F( m! W6 H( }程序的流程是:4 L" x. j* \6 K" j. {' Z( `
1.生成一个四位数要求每一位都不同,放在数组的四个元组中5 i* g( a6 K, `) U1 f$ D  D; i$ a
2.要求用户输入四位数7 A& p1 m8 S- H9 k1 q$ X! p
3.程序将用户输入的四位数分离,放在数组的四个元组中
! E6 F$ k& V" L# V! O4.将两个数组进行对比,记录对比结果4 J; K" G3 U+ z& @# B
5.输出结果8 U- \. N( Z  z. ~4 S2 c
[attach]128096[/attach]
  1. #include<stdio.h>
    & W- E) B# c& V3 {' D2 ]5 o
  2. #include<stdlib.h>
    * T( y. [( l- C, Z
  3. #include<time.h>
    ) Z: w& v% K$ Y) U1 E) o
  4. int judge(int *a,int *b)
    0 z% a8 U  T# o  g' h- }4 p( }
  5. {3 [8 @$ W# a& [3 t  g+ J% C& ^
  6.     int i,j;! D" D: @- N, N" v, Z2 x
  7.     int count_A,count_B;
    + F; t; Z1 D' E, P! p+ \
  8.     count_A = count_B = 0;
    4 K0 K3 r* y) Z8 d( G$ k  b1 y
  9.     for(i = 0;i<4 ;i++ )
    7 S7 y4 U8 e/ X7 ~7 x
  10.     {
    ; ^+ E1 z' `* n( Q/ M+ b' ?
  11.         if(a[i] == b[i])  count_A++;& P; D! }( j* M2 ~
  12.     }" x; L- T- v( f
  13. ! E4 D! w. x, H& W; E& ?. p
  14.     if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}
    ' @% \& C& u  M. @& ^
  15.     for(i = 0; i < 4;i ++)
    / y& i! D8 |0 u9 U, N" E
  16.     {
    & U5 ~  Y7 c" [5 T
  17.         for(j = 0;j < 4;j ++)
    * Z& @; }8 E; _" ?  S- R
  18.         {
    + U8 d0 V! m7 p- m: ]9 P
  19.              if(a[j] == b[i]) {count_B++;j = 4;}
    ) b- A) e8 C+ n( C* o" N8 Y
  20.          }9 Z- \+ r* }% A7 l1 V
  21.     }) L) l0 l8 M$ l" t1 x5 O
  22.     printf(\"%dA%dB\\n\",count_A,count_B);
    - A1 ]! ~  d* O# ~1 ]
  23.     return 0;
    % ?. n" f, ?& g3 J0 s
  24. }
    3 Z7 N4 ~8 r3 m: X) n
  25. void main()//c语言版猜数字游戏
    1 L2 j4 \$ D; H$ k  G$ H& p
  26. {9 G* v2 T9 }/ z- U" S
  27.     int r_num[4];& l  z: M- i3 S! A1 u; P7 S
  28.     int input_num[4];5 M$ Q. ^( D. ~2 B
  29.     srand(time(0));. X: `. g' v$ ^1 x0 _
  30.     int j,i = 0,temp1,temp2 = 0;
    $ m; V, T( p3 S6 J1 W# ?
  31.     /*********************生成四个随机数***********************/
    ! e0 p; D* V+ V  t0 v
  32.     while(i<4)
    9 U8 \8 ~5 M5 [0 u
  33.     {
    & i7 p1 J$ p. {6 E3 C  ?
  34.        if(i == 0) {r_num[i] = rand()%10;i++;}& s' F0 H- |8 D$ d! T5 S
  35.        else
    4 h, b  X# o5 |' u5 e$ c$ a! _7 r2 B
  36.        {
    . V0 k9 H. V, o3 ]# ], }" C* r3 K
  37.            temp1 = rand()%10;: P& i2 ~6 J/ l7 I# J
  38.            for(j=0;j<i;j++)" U7 }! x) z. V  e0 ?' Y
  39.            {* @+ O: K1 H2 O7 e
  40.                if(temp1 == r_num[j]) temp2++;      
    * l" e. G2 g' T4 z
  41.            }
    $ }/ e! x; H8 S
  42.            if(temp2 == 0)
    ) _' J6 @; {7 q- F5 i/ d
  43.            {! H9 f- j. a8 B7 o
  44.                r_num[i] = temp1;8 O0 e  @- |3 @8 K" m$ n
  45.                temp2 = 0;( Q) N9 m6 T8 B/ K& l* L* ^
  46.                i ++;- l5 W# z) x8 @9 K: v3 {& Z$ q9 v
  47.            }* G9 _8 x6 ^+ W* d
  48.            else! w: s$ T+ d7 {
  49.            {7 V8 ^' \' o% P/ Q
  50.                temp2 = 0;4 o( Q/ ^4 R9 W4 R/ P
  51.                continue;
    9 M* x$ }/ |0 R
  52.             }8 ]9 F( c. Z0 a" @: K
  53.        }   * {7 _: v5 k; N& N7 b  x( ^) E2 W
  54.     }5 O5 i0 D: _. U  J) t
  55.     for(i = 0;i<4;i++)/ m$ h: A6 W1 |5 {4 k, E* F# p, E4 s0 S
  56.     printf(\"%d\\n\",r_num[i]);
    . u0 n: w) F5 r7 M* B: K
  57.     /************************猜数字游戏核心部分*********************/
    + f) `# |* p8 {) x  |5 y
  58.     for(;;)
    . l, P; k! k8 U; Q
  59.     {2 p1 Y* z$ A. N+ `% o
  60.         scanf(\"%d\",&j);, v  |- V0 t2 i  t
  61.         input_num[0] =  j/1000;
    8 S7 H: B+ W5 \0 |7 \
  62.         input_num[3] =  j%10;, Q/ a3 M8 k; X" c
  63.         input_num[1] = (j - input_num[0]*1000)/100;+ q+ j' N, R2 H* I9 }) W; }
  64.         input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;5 s! |' X+ ^7 k4 i
  65.         /********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
    + C( F" P' P+ I
  66.         if(judge(input_num,r_num)==1) break;
    * o* }% n7 V6 h' S  ^
  67.         else
    2 \: o; `! i/ t9 E) `, U( k
  68.             continue;
      g( f, k( g$ R) T0 L' |0 q6 B
  69.     }
    8 o: s# g& V8 K# A8 _
  70. }
复制代码





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