数学建模社区-数学中国
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
[打印本页]
作者:
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! O
4.将两个数组进行对比,记录对比结果
4 J; K" G3 U+ z& @# B
5.输出结果
8 U- \. N( Z z. ~4 S2 c
[attach]128096[/attach]
#include<stdio.h>
& W- E) B# c& V3 {' D2 ]5 o
#include<stdlib.h>
* T( y. [( l- C, Z
#include<time.h>
) Z: w& v% K$ Y) U1 E) o
int judge(int *a,int *b)
0 z% a8 U T# o g' h- }4 p( }
{
3 [8 @$ W# a& [3 t g+ J% C& ^
int i,j;
! D" D: @- N, N" v, Z2 x
int count_A,count_B;
+ F; t; Z1 D' E, P! p+ \
count_A = count_B = 0;
4 K0 K3 r* y) Z8 d( G$ k b1 y
for(i = 0;i<4 ;i++ )
7 S7 y4 U8 e/ X7 ~7 x
{
; ^+ E1 z' `* n( Q/ M+ b' ?
if(a[i] == b[i]) count_A++;
& P; D! }( j* M2 ~
}
" x; L- T- v( f
! E4 D! w. x, H& W; E& ?. p
if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}
' @% \& C& u M. @& ^
for(i = 0; i < 4;i ++)
/ y& i! D8 |0 u9 U, N" E
{
& U5 ~ Y7 c" [5 T
for(j = 0;j < 4;j ++)
* Z& @; }8 E; _" ? S- R
{
+ U8 d0 V! m7 p- m: ]9 P
if(a[j] == b[i]) {count_B++;j = 4;}
) b- A) e8 C+ n( C* o" N8 Y
}
9 Z- \+ r* }% A7 l1 V
}
) L) l0 l8 M$ l" t1 x5 O
printf(\"%dA%dB\\n\",count_A,count_B);
- A1 ]! ~ d* O# ~1 ]
return 0;
% ?. n" f, ?& g3 J0 s
}
3 Z7 N4 ~8 r3 m: X) n
void main()//c语言版猜数字游戏
1 L2 j4 \$ D; H$ k G$ H& p
{
9 G* v2 T9 }/ z- U" S
int r_num[4];
& l z: M- i3 S! A1 u; P7 S
int input_num[4];
5 M$ Q. ^( D. ~2 B
srand(time(0));
. X: `. g' v$ ^1 x0 _
int j,i = 0,temp1,temp2 = 0;
$ m; V, T( p3 S6 J1 W# ?
/*********************生成四个随机数***********************/
! e0 p; D* V+ V t0 v
while(i<4)
9 U8 \8 ~5 M5 [0 u
{
& i7 p1 J$ p. {6 E3 C ?
if(i == 0) {r_num[i] = rand()%10;i++;}
& s' F0 H- |8 D$ d! T5 S
else
4 h, b X# o5 |' u5 e$ c$ a! _7 r2 B
{
. V0 k9 H. V, o3 ]# ], }" C* r3 K
temp1 = rand()%10;
: P& i2 ~6 J/ l7 I# J
for(j=0;j<i;j++)
" U7 }! x) z. V e0 ?' Y
{
* @+ O: K1 H2 O7 e
if(temp1 == r_num[j]) temp2++;
* l" e. G2 g' T4 z
}
$ }/ e! x; H8 S
if(temp2 == 0)
) _' J6 @; {7 q- F5 i/ d
{
! H9 f- j. a8 B7 o
r_num[i] = temp1;
8 O0 e @- |3 @8 K" m$ n
temp2 = 0;
( Q) N9 m6 T8 B/ K& l* L* ^
i ++;
- l5 W# z) x8 @9 K: v3 {& Z$ q9 v
}
* G9 _8 x6 ^+ W* d
else
! w: s$ T+ d7 {
{
7 V8 ^' \' o% P/ Q
temp2 = 0;
4 o( Q/ ^4 R9 W4 R/ P
continue;
9 M* x$ }/ |0 R
}
8 ]9 F( c. Z0 a" @: K
}
* {7 _: v5 k; N& N7 b x( ^) E2 W
}
5 O5 i0 D: _. U J) t
for(i = 0;i<4;i++)
/ m$ h: A6 W1 |5 {4 k, E* F# p, E4 s0 S
printf(\"%d\\n\",r_num[i]);
. u0 n: w) F5 r7 M* B: K
/************************猜数字游戏核心部分*********************/
+ f) `# |* p8 {) x |5 y
for(;;)
. l, P; k! k8 U; Q
{
2 p1 Y* z$ A. N+ `% o
scanf(\"%d\",&j);
, v |- V0 t2 i t
input_num[0] = j/1000;
8 S7 H: B+ W5 \0 |7 \
input_num[3] = j%10;
, Q/ a3 M8 k; X" c
input_num[1] = (j - input_num[0]*1000)/100;
+ q+ j' N, R2 H* I9 }) W; }
input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;
5 s! |' X+ ^7 k4 i
/********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
+ C( F" P' P+ I
if(judge(input_num,r_num)==1) break;
* o* }% n7 V6 h' S ^
else
2 \: o; `! i/ t9 E) `, U( k
continue;
g( f, k( g$ R) T0 L' |0 q6 B
}
8 o: s# g& V8 K# A8 _
}
复制代码
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5