数学建模社区-数学中国

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

作者: wangzheng3056    时间: 2013-7-30 10:11
标题: 【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑
: c, x0 m0 s) m+ `" u
( s* N2 l$ `5 i$ X5 `' }( K上一篇:科普之-------随机数rand()的用法) t. t# J# h$ |1 I1 ?0 m
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。$ Y" E/ y: B. A4 E# b0 o9 a+ d
程序的流程是:% R" ~$ R0 K3 W) C8 q1 q
1.生成一个四位数要求每一位都不同,放在数组的四个元组中4 r: F3 ]  H+ \
2.要求用户输入四位数
. b* A# p% w7 \7 M& `3.程序将用户输入的四位数分离,放在数组的四个元组中) U! M! }/ d3 s2 [
4.将两个数组进行对比,记录对比结果) U4 r) p/ q) |4 M2 O7 D
5.输出结果  I$ x+ v- Z7 g: f' s
猜数字游戏的实现.c (1.69 KB, 下载次数: 0)
  1. #include<stdio.h>3 n# [" I! {; e  o, d; T
  2. #include<stdlib.h>! V1 u/ i: O$ c* D5 j
  3. #include<time.h># J* D% ?7 \7 ]9 U& B
  4. int judge(int *a,int *b)
    6 m2 ?# \9 ^0 q+ _
  5. {" V  ~( ]( S  j4 E
  6.     int i,j;/ @# p. n" r( O0 m
  7.     int count_A,count_B;6 g0 H# l' e$ Y$ Z( v9 c
  8.     count_A = count_B = 0;  a1 P8 n* u7 u7 s3 F4 j
  9.     for(i = 0;i<4 ;i++ )
    9 U9 v& u5 i( J/ ^
  10.     { - t8 [5 x5 |. ]" p. Q- l
  11.         if(a[i] == b[i])  count_A++;( f4 r" k" H0 ~1 i) }
  12.     }9 h( |0 B- ]  w0 _
  13. 3 Z4 M" `! c7 p+ ~* _! [/ f3 P
  14.     if(count_A == 4) {printf("%dA%dB\n",count_A,count_B);return 1;}& M0 b: i1 u  v. a
  15.     for(i = 0; i < 4;i ++)" M* H% a( ]* c, q% R
  16.     {
    3 T8 h. |4 `7 N' C2 y
  17.         for(j = 0;j < 4;j ++)
    4 v7 r& ^! R" T- S6 ~- e
  18.         {. q: \) Q. V" D! g8 D& i
  19.              if(a[j] == b[i]) {count_B++;j = 4;}
    . W* O/ Z6 B9 `2 ?  W' |
  20.          }
    ( i; f4 U. d/ [1 j& K* Z
  21.     }! H& z# Q* l( ~+ v
  22.     printf("%dA%dB\n",count_A,count_B);8 _0 y" `$ z  u, B0 C7 D3 ~1 V
  23.     return 0;% e: ^7 W1 I. |3 H6 ?3 P
  24. }
    5 W# }5 j0 V! a% N6 L% `
  25. void main()//c语言版猜数字游戏( b" d, c) h. m* y! e
  26. {
      s7 Q' K% E3 y$ W6 y2 h
  27.     int r_num[4];# J. o' c0 L1 C3 R3 [
  28.     int input_num[4];
    6 J  t: b! X( ]
  29.     srand(time(0));
    ) s4 V: C1 f  [
  30.     int j,i = 0,temp1,temp2 = 0;, m; r, @: S, J" Y2 B
  31.     /*********************生成四个随机数***********************/) T2 ^+ z+ W+ B7 A! [
  32.     while(i<4)
    7 u- p7 G) m: ?# N# B) x
  33.     {+ c: g; H9 g; ?# Y; d
  34.        if(i == 0) {r_num[i] = rand()%10;i++;}0 O+ [1 h$ Z+ G5 X
  35.        else. @- W1 z; O% v+ A( `% R
  36.        {
    6 V$ I8 h- u, t/ H1 G
  37.            temp1 = rand()%10;9 }2 `3 ^7 O+ O* T- ~
  38.            for(j=0;j<i;j++)
    & c3 ~& _, A9 d8 t% r4 d+ ]- l5 b
  39.            {
    . u) ^! ?' @. D1 {+ H
  40.                if(temp1 == r_num[j]) temp2++;       . K4 W' `0 A5 X) q1 g
  41.            }6 \$ e) F" t- r: v0 D4 z3 v' J& z
  42.            if(temp2 == 0)
    # f! \3 z# y: D& B
  43.            {$ Y' I" {- u* d: F- N# v
  44.                r_num[i] = temp1;
    ' v% j1 V* f' ^! N# N
  45.                temp2 = 0;9 y# X$ l4 {5 n
  46.                i ++;
    % f% _$ j- _2 D( ]6 Q/ e% i, `
  47.            }
    4 O7 Z1 V3 J' H0 @5 e) l0 j1 L
  48.            else" T, x( t. l8 M* `3 d# ~4 @, `
  49.            {
    : U! _, S2 h3 c
  50.                temp2 = 0;
    : r' j& Z+ {, F$ n" q. ~+ k  N1 v6 x4 C
  51.                continue;+ `8 p6 d! p) d0 K# k
  52.             }* ~% U3 R& o* R+ {% a
  53.        }   ! k& e) `1 u$ a( y" R* B9 m; z. m) B
  54.     }
    4 @' J) b' d) w; h& S9 B
  55.     for(i = 0;i<4;i++)$ l- p' o7 q  Q: `- U2 G9 p* v# ?
  56.     printf("%d\n",r_num[i]);' c  ?4 z  r* t/ Z
  57.     /************************猜数字游戏核心部分*********************/
    6 e& ^7 \! k5 f, u- n. d3 `' b
  58.     for(;;)
    ! y1 B/ K# g, b$ f( _, b
  59.     {4 b' O" j% }) F
  60.         scanf("%d",&j);" G6 f! ?# r1 B0 I7 F) j
  61.         input_num[0] =  j/1000;7 ]$ u: D1 x8 U* e/ O6 Z3 A
  62.         input_num[3] =  j%10;2 D3 p# D6 w( u
  63.         input_num[1] = (j - input_num[0]*1000)/100;
    2 @, A0 ?; g0 R' A$ u  z9 m7 ?$ c
  64.         input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;* l  @% s0 Z" i) t. ~
  65.         /********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/4 X% [+ C9 F4 C% p! V, n
  66.         if(judge(input_num,r_num)==1) break;  |$ ?4 r; L) P$ \
  67.         else
    1 r! M+ q5 |+ o6 s7 `' Y" o
  68.             continue;) h3 i3 `: O9 ]! }
  69.     }7 K, ~4 a! g) @  a+ z3 ^
  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