数学建模社区-数学中国
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
[打印本页]
作者:
wangzheng3056
时间:
2013-7-30 15:31
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑
, E+ {5 b( k+ G) F7 G
* s% E1 {! E }( d6 [ F
上一篇:
科普之-------随机数rand()的用法
4 A$ f2 d% a0 I% s2 T$ K
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。
4 ?: G# _8 P5 y6 |
程序的流程是:
: U$ o0 n. C H2 P* X- d4 U
1.生成一个四位数要求每一位都不同,放在数组的四个元组中
5 B* B$ O+ G4 f& q' i. h
2.要求用户输入四位数
$ G) D) p5 [. U5 k- A- `& Z& w
3.程序将用户输入的四位数分离,放在数组的四个元组中
! d# F0 n! P6 w5 S& v2 a* H" k
4.将两个数组进行对比,记录对比结果
1 {# z m" X/ ]' M$ K# k$ K7 ]1 p
5.输出结果
! T9 b8 L1 f! r5 b
[attach]128096[/attach]
#include<stdio.h>
) L- S) J0 s- _) m9 l
#include<stdlib.h>
( b* w4 H7 e! I
#include<time.h>
2 o z2 V+ ]* E" @& ~
int judge(int *a,int *b)
/ v" O9 M& F) _" E% u# e
{
- y% D O+ o6 }; S0 k R8 \
int i,j;
/ s6 i' H+ y0 S) Z9 h
int count_A,count_B;
; X# c0 {) e, C6 F; S2 X
count_A = count_B = 0;
. U9 a" K* T; u4 e" l; |8 P/ R
for(i = 0;i<4 ;i++ )
2 s* `% l" M% j2 c( |4 x- L- o
{
4 X# J9 z. X8 q+ }$ G$ d
if(a[i] == b[i]) count_A++;
" F* L( u4 p1 g6 e! J6 i3 o1 a
}
& w w# Q; p: F* |& ^
5 ?0 ]8 F5 `& _; T
if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}
6 h0 C9 `- |; V( v
for(i = 0; i < 4;i ++)
1 [8 }; W) i1 x- z9 [
{
) z) L. p' r1 H0 O! @ R
for(j = 0;j < 4;j ++)
' Z) a8 j0 G* |$ ^: P: y6 c
{
( `0 h6 Z) R. u& x2 R m
if(a[j] == b[i]) {count_B++;j = 4;}
- `5 R) [+ E9 Q- C
}
9 X, [2 k7 R" s' b
}
$ d9 w( N8 _( ]% `; F& W. o
printf(\"%dA%dB\\n\",count_A,count_B);
5 Q6 L" f1 g% I% A5 h Y$ d
return 0;
* u" w" q# o8 `) V* c& s: N- u
}
U1 C, E8 h- `: V# ?. `
void main()//c语言版猜数字游戏
( M7 c) S6 M& t4 J# n% U/ I
{
+ t% g) h: e6 v' K/ l* @* }
int r_num[4];
. Z7 r, U" B+ A7 q5 N7 t
int input_num[4];
! |6 H; `% ^6 x
srand(time(0));
4 e/ _/ ~- ~% c9 X9 c; Z
int j,i = 0,temp1,temp2 = 0;
, P+ A, L2 b. ?+ h! q/ w
/*********************生成四个随机数***********************/
; M4 j/ s7 e- b
while(i<4)
+ W6 y6 H' E* [7 [5 {8 |0 L& H4 b+ ?
{
' D5 @1 R( L8 d# \& o2 V* Y
if(i == 0) {r_num[i] = rand()%10;i++;}
, @+ i, N1 l+ n+ ]2 P. H
else
+ M z) z# h$ \; H E
{
0 f+ f' D5 {0 J5 O& D
temp1 = rand()%10;
5 O N+ R) t8 Q S# F l: S
for(j=0;j<i;j++)
, Q7 G7 u9 U( M. e
{
0 A: R0 ^# {8 l% x- D8 `
if(temp1 == r_num[j]) temp2++;
/ m+ w' P6 m9 {7 N) S, s8 V: v
}
# c# I" }% S( v& t" a+ r! E5 J: @ ~
if(temp2 == 0)
- v1 A* u5 x* ?, ^! ^
{
5 W, H1 I o7 a/ [
r_num[i] = temp1;
- q( i. i2 d. a$ y0 y
temp2 = 0;
% L8 B6 T+ Z3 y" A
i ++;
# M- w4 A9 n3 q3 s
}
- d2 s; U& s5 k* o
else
* a& j+ u/ H2 f" s: C0 A8 M1 D) c/ `
{
" c! H b( r4 Q0 y5 B$ S6 f
temp2 = 0;
. `! V/ l* |( t4 c6 C
continue;
+ r! |5 p/ x$ [9 Q# ^% v* B
}
1 ^+ K4 y* Q2 O7 O+ K1 t+ k4 C
}
( k# J; a7 `' k' k4 ^# M8 T8 @
}
: _" \- ]& G3 p2 `# h3 m
for(i = 0;i<4;i++)
$ Q4 F# Y/ q1 l. V% z4 q4 Z7 U; Z
printf(\"%d\\n\",r_num[i]);
. U# g' f$ u* d9 w9 i' r7 A5 y
/************************猜数字游戏核心部分*********************/
3 R; {- V7 U2 y5 K+ q1 s& h7 X
for(;;)
! C9 J+ T( X# }5 i+ f
{
/ c$ b5 [2 D" a" l2 }
scanf(\"%d\",&j);
. J: n1 Z- p h2 j. v: ?0 d' T% x
input_num[0] = j/1000;
; Y) J, L5 V4 _* Q7 l/ `( X5 f
input_num[3] = j%10;
2 w- t$ x+ I2 H* K9 X
input_num[1] = (j - input_num[0]*1000)/100;
' `3 }1 ?* k) h# C! G4 O
input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;
! M) x6 `, d1 a1 A& E+ G$ L& ]3 e
/********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
g. f" P- K1 z& i
if(judge(input_num,r_num)==1) break;
$ c( \, i7 x- q- W K, \
else
. M4 p$ y5 `8 L& e6 q6 h8 M) s
continue;
1 I& B7 w+ b3 m9 i# j: h$ @: U
}
6 V# b) z$ U# @% z Z7 p
}
复制代码
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5