数学建模社区-数学中国
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
[打印本页]
作者:
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% j
2.要求用户输入四位数
' \& @! b' G* C( f
3.程序将用户输入的四位数分离,放在数组的四个元组中
# y; p9 R3 c- v
4.将两个数组进行对比,记录对比结果
# y- d- X9 }# \1 R! x% S
5.输出结果
: ?1 X8 ^: j0 E2 j% @' ~
[attach]128096[/attach]
#include<stdio.h>
: Q) q7 n s _. L0 }
#include<stdlib.h>
: l8 H4 O, O2 I6 k$ ?
#include<time.h>
" Z( f' |7 W6 q Q3 D) w& i
int judge(int *a,int *b)
8 t; D/ \( Q5 U, J3 D
{
* j- R' S( C9 Q" y4 n& l/ Z+ q4 k
int i,j;
8 K; ~+ Y9 `( o/ A/ v; M
int count_A,count_B;
4 L+ g# ?: t( ?& K+ z1 m* v
count_A = count_B = 0;
* Q' e' G* E, L; ~/ k8 D* O
for(i = 0;i<4 ;i++ )
5 C7 Y9 y5 ^% h0 s
{
- S/ B/ w- S8 [5 m
if(a[i] == b[i]) count_A++;
' S; @& M( M& P% L8 @5 F
}
9 Y/ c4 s: q5 n9 o d
2 m0 l9 |( d9 ^* R8 ~+ w3 K
if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}
6 G5 ]/ i# f5 W
for(i = 0; i < 4;i ++)
5 ~5 }; M# @. D& W1 \2 E2 a
{
E2 i( w, O. k: ^/ V0 ]: _5 t
for(j = 0;j < 4;j ++)
! v- ^! _9 g9 u; q' x
{
2 M' o' I5 J4 o2 X: ]
if(a[j] == b[i]) {count_B++;j = 4;}
1 l g) T, h+ E9 M3 V) N
}
6 M! F: ~- m6 z/ Q5 |
}
0 v- l1 N& h K
printf(\"%dA%dB\\n\",count_A,count_B);
8 V0 O, q" w% s' v/ q: }( i
return 0;
/ R. B; c7 Z( C8 A( m7 A" F
}
* }" W/ t% G6 ^- c! D- W
void main()//c语言版猜数字游戏
1 U+ m8 F3 d% I
{
% O0 l+ R8 d0 n' E( P! J
int r_num[4];
+ ?. a6 L' d2 `* d( W; _- z" O$ y1 W7 a
int input_num[4];
/ ]9 r) F" m, g6 e# x. P4 O
srand(time(0));
, o7 L( w' P! C9 _
int j,i = 0,temp1,temp2 = 0;
0 e! p8 T4 z% j0 L
/*********************生成四个随机数***********************/
% x0 b8 U. i5 q O
while(i<4)
# I* m2 B0 z- J8 N. O' O
{
. {8 F9 V2 `5 o% \/ l
if(i == 0) {r_num[i] = rand()%10;i++;}
% }6 t% n" i8 f% D! F3 ~
else
8 H/ P/ f/ B3 i& Z
{
$ g9 a5 z: ^+ e' F+ L% n
temp1 = rand()%10;
+ x' g; r. L+ Z
for(j=0;j<i;j++)
2 v4 L2 {8 M6 O6 z: \
{
& j2 ~' T2 t* H+ b9 }/ N
if(temp1 == r_num[j]) temp2++;
8 j+ ^1 b9 |0 Y
}
5 u% |; i: Y0 d' m' V" q: q$ p: l
if(temp2 == 0)
0 y) x# n! g$ r1 T
{
+ s) n) w7 w$ [: y1 w, I
r_num[i] = temp1;
: C* K U# M- l. _6 X8 R W
temp2 = 0;
* K* c) K. T. m7 [& p
i ++;
" u0 n1 j% K' \+ b3 T8 g
}
; b, M0 S# _4 K* D9 V2 [8 ?
else
1 H$ v- H7 f$ C2 a* G) \1 \" g
{
+ [' W3 {2 K6 J. P
temp2 = 0;
0 V* E' x# B1 F. `
continue;
8 f# M3 Q9 @( t* ]0 k* O; I
}
0 Y) d9 a/ \6 W
}
0 X. Z3 d! O% k3 M9 a/ E
}
$ q, R( [4 {9 o, T7 ?
for(i = 0;i<4;i++)
! z; N9 s! x! r! }3 m! A
printf(\"%d\\n\",r_num[i]);
6 C- y M l( n) c5 |
/************************猜数字游戏核心部分*********************/
! H* n1 C: n! z) O0 z' A& `8 D( i
for(;;)
( O. I2 x; W! A; @& J+ Z
{
( X+ K/ r* y% s
scanf(\"%d\",&j);
) J0 a. i' A0 k! p) `* J
input_num[0] = j/1000;
# V; N2 j4 u. S# U
input_num[3] = j%10;
3 b- l1 j' d/ D) e4 R/ p
input_num[1] = (j - input_num[0]*1000)/100;
4 f, J9 ?+ A, o6 H" _+ D* X! S
input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;
. f, F! B" y( o* f- O
/********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
" L4 V4 K+ [7 L- c2 }/ `
if(judge(input_num,r_num)==1) break;
7 G9 P6 I L- X# g" B
else
9 M. p4 x: w7 E. C7 R% n8 u
continue;
! E; O. o/ F5 M' v- z" ~+ K6 `
}
% ?. M* u; H: M
}
复制代码
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5