数学建模社区-数学中国

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

作者: wangzheng3056    时间: 2013-7-30 15:31
标题: 【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑 7 V* @% W" w! o  E4 A5 j8 z
6 ~! n: w2 b8 D5 @
上一篇:科普之-------随机数rand()的用法
- c7 n/ g7 u2 O# ?- c上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。' ?3 L4 F) Q, u+ M3 u% F
程序的流程是:  u; n0 z; X9 v" L: g) ?
1.生成一个四位数要求每一位都不同,放在数组的四个元组中
& t" V9 K5 T+ C% ?, Y& R% j2.要求用户输入四位数
' \& @! b' G* C( f3.程序将用户输入的四位数分离,放在数组的四个元组中# y; p9 R3 c- v
4.将两个数组进行对比,记录对比结果# y- d- X9 }# \1 R! x% S
5.输出结果
: ?1 X8 ^: j0 E2 j% @' ~[attach]128096[/attach]
  1. #include<stdio.h>
    : Q) q7 n  s  _. L0 }
  2. #include<stdlib.h>
    : l8 H4 O, O2 I6 k$ ?
  3. #include<time.h>
    " Z( f' |7 W6 q  Q3 D) w& i
  4. int judge(int *a,int *b)
    8 t; D/ \( Q5 U, J3 D
  5. {* j- R' S( C9 Q" y4 n& l/ Z+ q4 k
  6.     int i,j;8 K; ~+ Y9 `( o/ A/ v; M
  7.     int count_A,count_B;4 L+ g# ?: t( ?& K+ z1 m* v
  8.     count_A = count_B = 0;* Q' e' G* E, L; ~/ k8 D* O
  9.     for(i = 0;i<4 ;i++ )5 C7 Y9 y5 ^% h0 s
  10.     {
    - S/ B/ w- S8 [5 m
  11.         if(a[i] == b[i])  count_A++;
    ' S; @& M( M& P% L8 @5 F
  12.     }9 Y/ c4 s: q5 n9 o  d
  13. 2 m0 l9 |( d9 ^* R8 ~+ w3 K
  14.     if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}6 G5 ]/ i# f5 W
  15.     for(i = 0; i < 4;i ++)
    5 ~5 }; M# @. D& W1 \2 E2 a
  16.     {   E2 i( w, O. k: ^/ V0 ]: _5 t
  17.         for(j = 0;j < 4;j ++)
    ! v- ^! _9 g9 u; q' x
  18.         {
    2 M' o' I5 J4 o2 X: ]
  19.              if(a[j] == b[i]) {count_B++;j = 4;}
    1 l  g) T, h+ E9 M3 V) N
  20.          }6 M! F: ~- m6 z/ Q5 |
  21.     }
    0 v- l1 N& h  K
  22.     printf(\"%dA%dB\\n\",count_A,count_B);8 V0 O, q" w% s' v/ q: }( i
  23.     return 0;/ R. B; c7 Z( C8 A( m7 A" F
  24. }
    * }" W/ t% G6 ^- c! D- W
  25. void main()//c语言版猜数字游戏
    1 U+ m8 F3 d% I
  26. {
    % O0 l+ R8 d0 n' E( P! J
  27.     int r_num[4];
    + ?. a6 L' d2 `* d( W; _- z" O$ y1 W7 a
  28.     int input_num[4];
    / ]9 r) F" m, g6 e# x. P4 O
  29.     srand(time(0));
    , o7 L( w' P! C9 _
  30.     int j,i = 0,temp1,temp2 = 0;
    0 e! p8 T4 z% j0 L
  31.     /*********************生成四个随机数***********************/% x0 b8 U. i5 q  O
  32.     while(i<4)
    # I* m2 B0 z- J8 N. O' O
  33.     {
    . {8 F9 V2 `5 o% \/ l
  34.        if(i == 0) {r_num[i] = rand()%10;i++;}% }6 t% n" i8 f% D! F3 ~
  35.        else
    8 H/ P/ f/ B3 i& Z
  36.        {
    $ g9 a5 z: ^+ e' F+ L% n
  37.            temp1 = rand()%10;
    + x' g; r. L+ Z
  38.            for(j=0;j<i;j++)2 v4 L2 {8 M6 O6 z: \
  39.            {
    & j2 ~' T2 t* H+ b9 }/ N
  40.                if(temp1 == r_num[j]) temp2++;       8 j+ ^1 b9 |0 Y
  41.            }
    5 u% |; i: Y0 d' m' V" q: q$ p: l
  42.            if(temp2 == 0)
    0 y) x# n! g$ r1 T
  43.            {+ s) n) w7 w$ [: y1 w, I
  44.                r_num[i] = temp1;
    : C* K  U# M- l. _6 X8 R  W
  45.                temp2 = 0;
    * K* c) K. T. m7 [& p
  46.                i ++;" u0 n1 j% K' \+ b3 T8 g
  47.            }
    ; b, M0 S# _4 K* D9 V2 [8 ?
  48.            else1 H$ v- H7 f$ C2 a* G) \1 \" g
  49.            {
    + [' W3 {2 K6 J. P
  50.                temp2 = 0;0 V* E' x# B1 F. `
  51.                continue;8 f# M3 Q9 @( t* ]0 k* O; I
  52.             }
    0 Y) d9 a/ \6 W
  53.        }   
    0 X. Z3 d! O% k3 M9 a/ E
  54.     }
    $ q, R( [4 {9 o, T7 ?
  55.     for(i = 0;i<4;i++)
    ! z; N9 s! x! r! }3 m! A
  56.     printf(\"%d\\n\",r_num[i]);6 C- y  M  l( n) c5 |
  57.     /************************猜数字游戏核心部分*********************/! H* n1 C: n! z) O0 z' A& `8 D( i
  58.     for(;;)( O. I2 x; W! A; @& J+ Z
  59.     {( X+ K/ r* y% s
  60.         scanf(\"%d\",&j);) J0 a. i' A0 k! p) `* J
  61.         input_num[0] =  j/1000;# V; N2 j4 u. S# U
  62.         input_num[3] =  j%10;3 b- l1 j' d/ D) e4 R/ p
  63.         input_num[1] = (j - input_num[0]*1000)/100;4 f, J9 ?+ A, o6 H" _+ D* X! S
  64.         input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;. f, F! B" y( o* f- O
  65.         /********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/" L4 V4 K+ [7 L- c2 }/ `
  66.         if(judge(input_num,r_num)==1) break;7 G9 P6 I  L- X# g" B
  67.         else9 M. p4 x: w7 E. C7 R% n8 u
  68.             continue;
    ! E; O. o/ F5 M' v- z" ~+ K6 `
  69.     }% ?. M* u; H: M
  70. }
复制代码





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