数学建模社区-数学中国

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

作者: wangzheng3056    时间: 2013-7-30 10:11
标题: 【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑 " a% M* v7 h2 L' A2 Y. D
/ [& m( @: R0 F/ \
上一篇:科普之-------随机数rand()的用法4 @+ Q, Q% m( v. Q5 g( t+ z
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。( x- }  l0 R# j0 e* Q  [
程序的流程是:! _4 U' Z# Y4 M: E& r9 q$ l  ^
1.生成一个四位数要求每一位都不同,放在数组的四个元组中. U0 w. m1 w1 Z/ S& H
2.要求用户输入四位数. k% t: J3 E" ~# K# V$ ]
3.程序将用户输入的四位数分离,放在数组的四个元组中# M+ e7 @' D9 L' w: R  ]" [
4.将两个数组进行对比,记录对比结果
6 z! A. `4 X. a5.输出结果5 L6 `3 H/ O# {& U
猜数字游戏的实现.c (1.69 KB, 下载次数: 0)
  1. #include<stdio.h>
    9 d1 x0 l1 j6 i# D" p' }( @  k
  2. #include<stdlib.h>
    8 v- e$ y  `  U: c
  3. #include<time.h>8 @5 V0 C+ N9 k& I8 k5 A) Q
  4. int judge(int *a,int *b)2 d( Y2 o& P  n/ H( C2 t) h
  5. {
    % Q0 m7 Z' m/ n, E! E
  6.     int i,j;6 y+ i0 F& a" ?# C  [2 ^
  7.     int count_A,count_B;
    / o; d: l! q& S9 N; A
  8.     count_A = count_B = 0;
    8 T8 S7 w7 I, Z$ b: Y: h
  9.     for(i = 0;i<4 ;i++ )
    9 t# O8 ]' s0 `0 `
  10.     { 3 B* A& v  E& {7 {1 Y" V
  11.         if(a[i] == b[i])  count_A++;  F, J+ F  p" ~
  12.     }
    # z/ u( }* L9 v4 Z8 n
  13. * Y6 H5 o) p8 r/ p  A1 m. g
  14.     if(count_A == 4) {printf("%dA%dB\n",count_A,count_B);return 1;}/ w4 w* A1 q! w  x4 z
  15.     for(i = 0; i < 4;i ++)& X7 A: h' V2 {8 V3 k/ q) B7 F
  16.     { ; U$ s. v% c2 X$ C/ Y% K( w; g
  17.         for(j = 0;j < 4;j ++)
    ' q  G6 A3 G" N8 r) \1 {& l" v
  18.         {2 W+ Z, H* t8 {0 |
  19.              if(a[j] == b[i]) {count_B++;j = 4;}4 U  @6 t' G3 x6 x3 c: |
  20.          }9 F. D0 L  c1 c! Y2 {4 \
  21.     }9 z, k, o. S3 s- k
  22.     printf("%dA%dB\n",count_A,count_B);
    ; f" h. ?6 U2 m" L9 ?$ G
  23.     return 0;; Q8 I. P- s/ g4 M3 T. e, H
  24. }/ f0 D9 i; ?/ P# L: A6 }- O& r$ Z) Z
  25. void main()//c语言版猜数字游戏( t* c( D$ e' H% j
  26. {: o3 f: h& D8 @
  27.     int r_num[4];8 e& S- c( k8 \" J/ R" H
  28.     int input_num[4];
    3 P) w# C- U7 j/ g1 \* p6 P
  29.     srand(time(0));
    8 `/ Y$ ^2 s9 i) ^; {0 r
  30.     int j,i = 0,temp1,temp2 = 0;
    % s  W) E. B2 L
  31.     /*********************生成四个随机数***********************/* F* z- J9 D4 Y! s+ B& k
  32.     while(i<4)! H/ I0 y3 X. L! j
  33.     {$ n' V+ e6 `/ S' ?7 v4 m
  34.        if(i == 0) {r_num[i] = rand()%10;i++;}
    8 y4 z/ t- ]8 c0 G' i. |
  35.        else
    1 ~2 k* {, d/ D; Q/ i6 c
  36.        {) ], X- b: {  c& ^  o9 y0 ]4 x
  37.            temp1 = rand()%10;
    0 u7 f3 y: I2 t" ?/ t' w2 H
  38.            for(j=0;j<i;j++)
    , Q7 ?+ F% j0 ]  e
  39.            {
    ; U4 h1 I, A* R4 L3 d
  40.                if(temp1 == r_num[j]) temp2++;       9 k. ^# _( S; Z  N9 N" }$ _( x
  41.            }( P6 N, }% ?1 \$ ]% @, F
  42.            if(temp2 == 0)
    . v1 n0 X% f+ b7 ^1 m
  43.            {: [: N9 p9 |% F2 K/ m3 f
  44.                r_num[i] = temp1;
    ! P7 w; D/ B0 @: L9 t& Y( W
  45.                temp2 = 0;/ ], _* n5 f2 O( n. T
  46.                i ++;
    % E4 q$ D7 r  v" l( j, ?
  47.            }% X- T) F8 M6 b  p4 q
  48.            else
    4 _3 X6 m9 F5 e& S7 D5 k
  49.            {& l. {# t. }9 \7 Z. `
  50.                temp2 = 0;' j' i, E3 f3 F! g0 C' W. U
  51.                continue;& a# L3 ?' v5 l- {
  52.             }
      e! ]9 M2 I& P8 X
  53.        }   9 ?2 s( ~% Q* F
  54.     }1 R- K1 _5 D8 X0 G
  55.     for(i = 0;i<4;i++)
    + R, X; B( L- d5 B+ m- r
  56.     printf("%d\n",r_num[i]);
    ) M2 f6 I: @; {1 e0 ^
  57.     /************************猜数字游戏核心部分*********************/
    ( {! m, S/ Y* [+ L  [  S$ V' @
  58.     for(;;)
    , q1 O! G' x; N$ R% Q; _- j; T
  59.     {
    , Y; d  V. o5 c0 n4 t* k
  60.         scanf("%d",&j);
    5 V; m  U8 r  p
  61.         input_num[0] =  j/1000;
    ' v. l" t: K  M0 v9 q, l
  62.         input_num[3] =  j%10;
    5 W2 z+ I4 f8 G  K% k7 U' u
  63.         input_num[1] = (j - input_num[0]*1000)/100;
    3 `8 G- f  `) O, o
  64.         input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;
    7 n9 M( S( _* J( k1 A1 q) g& e% |
  65.         /********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
    , f# d" d. y# ^' ?9 |5 z+ s
  66.         if(judge(input_num,r_num)==1) break;
    4 [' ]" r; s/ E3 _2 n
  67.         else
      f5 W/ t, g' _0 N' {7 A2 T
  68.             continue;
    8 Y  W) b1 m$ r
  69.     }
    . f6 l2 B# i6 @& y- k, e! P/ Y5 m& Z
  70. }
复制代码

作者: 百年孤独    时间: 2013-7-30 10:25
今天果然及时更新了!威武~~~
作者: wangzheng3056    时间: 2013-7-30 11:20
我想知道大家想用随机数做什么, 大家给点意见~!!!!好让我连载下去
作者: 平凡之不凡    时间: 2013-7-30 17:41
如果与统计学挂钩,随机数很重要
作者: 他山石    时间: 2013-8-8 18:03
确实。如果向数据挖掘方面走。我觉得更好。




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