数学建模社区-数学中国
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
[打印本页]
作者:
wangzheng3056
时间:
2013-7-30 15:31
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑
& M) L; u; \' @) H# f1 X. J. e
* h5 p' h) j5 c2 b; Z8 ~
上一篇:
科普之-------随机数rand()的用法
# D. H9 x+ K/ s$ W* E0 O9 [
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。
% u0 s( V! e& K" j1 g4 H
程序的流程是:
8 ^* N' }! D o$ b; d. \4 F9 D
1.生成一个四位数要求每一位都不同,放在数组的四个元组中
7 c: Z$ B* I& T% T0 L! m& r
2.要求用户输入四位数
* \8 `% D% U) p+ f, b! ?8 @# x
3.程序将用户输入的四位数分离,放在数组的四个元组中
7 @3 z6 H. M( M
4.将两个数组进行对比,记录对比结果
' w% ~" j- t& H! \! r$ B, h
5.输出结果
6 O7 ^/ C, U' }
[attach]128096[/attach]
#include<stdio.h>
. r- w) A% E: @. i* X _
#include<stdlib.h>
% ]2 T% V) h% E+ L' i5 a h j1 v
#include<time.h>
9 v3 p0 B; K' F& R3 j) e+ H
int judge(int *a,int *b)
( e' f& S$ D& v$ C( D. e4 r( Q! }
{
. D8 r/ z1 l! @- m7 L5 V6 j
int i,j;
% s7 h. y2 G `
int count_A,count_B;
) q0 |! ?* N9 p
count_A = count_B = 0;
7 y, K4 D7 f$ C2 M( w1 ]
for(i = 0;i<4 ;i++ )
* X7 e/ r! W0 ^( x
{
) P2 t8 ]& A& T* D3 @% a
if(a[i] == b[i]) count_A++;
8 R% w! ]- ~& e/ T
}
. Z& T7 b7 A$ \8 R4 c/ }
$ D6 j ^8 m, f
if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}
. k6 o) f2 M$ _
for(i = 0; i < 4;i ++)
! a* \0 s0 q$ h: t
{
+ c: {8 ^# w: O0 S
for(j = 0;j < 4;j ++)
8 U/ Y5 ?( @% H ^% u6 h* e
{
& {0 m8 H$ A/ `, v% c0 S8 e G
if(a[j] == b[i]) {count_B++;j = 4;}
7 c b2 d c6 d+ v
}
. B: N. ?7 H* Y0 [- \$ P0 }
}
2 m! T2 K4 P! v5 e( n8 W3 o
printf(\"%dA%dB\\n\",count_A,count_B);
" C5 D5 g5 |: _* B v3 C- O8 Z
return 0;
* D& d+ N2 L( O2 R
}
! a/ F1 @' Y: w5 W- z! V
void main()//c语言版猜数字游戏
7 F, I! p( _5 G$ f. p& ?
{
' U5 e2 R# x; r# A2 [
int r_num[4];
. i: n0 D y6 g; }9 t0 p! L
int input_num[4];
' Y8 f9 j, R6 Q! b) ]4 }; E y. x
srand(time(0));
* n" Q8 Z, H7 S# E0 `, c
int j,i = 0,temp1,temp2 = 0;
* ]# C+ S l4 w
/*********************生成四个随机数***********************/
7 p/ S$ o7 V( V& A; a; D$ w
while(i<4)
. y4 z4 A& Y1 f# g7 e( P5 G
{
' T# V- z t1 y6 Y. B
if(i == 0) {r_num[i] = rand()%10;i++;}
- p. _4 N' p. O. I
else
7 s5 ~3 R1 }" [. E" O. P8 b% L
{
( ], g4 n6 M3 e: I' C+ n2 L
temp1 = rand()%10;
9 T* c2 }; b: f$ [& q% _$ A
for(j=0;j<i;j++)
- {" O, E I- A7 D6 }3 v
{
4 `) ^; s6 A9 ^ ^: b
if(temp1 == r_num[j]) temp2++;
9 Q( }' B5 d* G% q7 U. Q j
}
' ?! b" s8 r5 ?
if(temp2 == 0)
* [9 i: b' T- s- g' Q/ f& Z
{
+ p3 x! T {0 T, \$ P3 B+ X
r_num[i] = temp1;
& @3 ]' \( _' q+ O
temp2 = 0;
" y" y4 @ Y; H# s0 l4 b9 y. T% K
i ++;
! ?6 {7 e, [. i6 S* j) W4 R- V
}
# Q* n- I' }' P# z! T4 r: j: a, i
else
- l# I" E# v& x) ]# S5 e
{
% S5 z& z/ v4 a
temp2 = 0;
: e+ c. A" @3 @% X) Y
continue;
S1 z0 g$ ^2 x9 e& ]
}
. v+ g+ w1 x9 n2 }, p$ _
}
) ]; K3 ?# J+ J0 m* d. @( H5 s
}
, V; ?5 R1 V/ b7 G$ r3 u: y4 ^
for(i = 0;i<4;i++)
8 \7 \: W% e; R: ~3 }
printf(\"%d\\n\",r_num[i]);
- x) m* `( f( N/ O
/************************猜数字游戏核心部分*********************/
) {( x5 |# z) v) ~8 \
for(;;)
, A$ Z5 [- r" p$ i& c$ m: ]
{
# t! G% B* _( s$ s: ~
scanf(\"%d\",&j);
0 [6 L5 G0 @. s' R& _& p8 k1 Z8 m
input_num[0] = j/1000;
+ e: ` j( b S) C3 {/ J$ _
input_num[3] = j%10;
$ s+ w9 d' Z9 Y' k6 u5 g5 {! z
input_num[1] = (j - input_num[0]*1000)/100;
" Y- n* t- S2 k0 @
input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;
. S% j' p; E" [& n+ w* R" u
/********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
6 J7 F" H. y; X0 p9 p' `
if(judge(input_num,r_num)==1) break;
& l9 i3 {6 Q4 m. U0 u1 h
else
( i6 M/ ~' V# \
continue;
d8 I3 D- @4 V
}
3 _: ~8 R3 B. L: h# N3 r; J1 a8 E
}
复制代码
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5