数学建模社区-数学中国
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
[打印本页]
作者:
wangzheng3056
时间:
2013-7-30 15:31
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑
* J; M3 v i: m6 w" t* ?. r- o$ h( P
" t# b# x. U& E( v6 j9 X& b+ X0 T
上一篇:
科普之-------随机数rand()的用法
9 H" ^) g5 ?8 R3 d3 ]% B8 ^- X
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。
6 W4 ]7 r1 `( K F% o1 k
程序的流程是:
. M" e# Q* ]3 L& ?8 l9 v) T+ O
1.生成一个四位数要求每一位都不同,放在数组的四个元组中
( F4 [# a! j% m) {
2.要求用户输入四位数
! m. @/ c4 E S
3.程序将用户输入的四位数分离,放在数组的四个元组中
' |" Q( D' q' Q o
4.将两个数组进行对比,记录对比结果
: ]+ u: S( U$ E: z7 ~6 D0 F
5.输出结果
5 V1 N! C, i! s) ~' \* h2 o
[attach]128096[/attach]
#include<stdio.h>
" Q' G/ O8 U \% L( j
#include<stdlib.h>
2 x O+ V6 C0 \
#include<time.h>
2 k Z1 P$ _" d0 \( |0 L9 I9 s% Z
int judge(int *a,int *b)
1 p3 Y7 [; d& P* ^7 J
{
* J8 _6 ], S2 w0 ?" d* o
int i,j;
( ~( c1 c( j! d$ R9 f, O2 b
int count_A,count_B;
/ \" r' r/ I' u- u1 E. {. w* I
count_A = count_B = 0;
: C; U$ O$ \+ H6 }# R1 R0 ]
for(i = 0;i<4 ;i++ )
" t. ?( x1 N: Y* a; F
{
8 {5 ^$ F0 Q* V, B5 A0 c$ F) H# n
if(a[i] == b[i]) count_A++;
+ r4 p9 ~: e# S' m% _: `+ b
}
& v% M1 y$ X' S, u1 J
8 j6 L$ ~ V7 r. c
if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}
0 z7 ~# g- @3 r" T0 u
for(i = 0; i < 4;i ++)
/ l. x( ?2 U# {* ?; I6 B8 f
{
G5 e+ a1 o* r/ U* e7 w
for(j = 0;j < 4;j ++)
( L8 G. c! Z2 R( Z3 j9 g
{
( \2 o4 v1 d/ X) ~- {" {0 F
if(a[j] == b[i]) {count_B++;j = 4;}
* p" h" u+ W8 b' [, ?0 I2 g
}
: b# t7 q! Y0 [# ^2 a
}
( U" r* r: f$ w
printf(\"%dA%dB\\n\",count_A,count_B);
4 @6 z# U; C" V" F" H! A
return 0;
( s. M/ {0 B% N
}
' ^& x6 S+ K- _" J: a
void main()//c语言版猜数字游戏
! T- M( X4 Z' E0 _8 l) _2 ]
{
' y& S& y' r, r0 j
int r_num[4];
7 ^. k4 C6 x$ v% _5 \; _- ~1 b: @
int input_num[4];
- T' w" o: j( [5 F- a$ O
srand(time(0));
3 L/ d" V7 ?) K2 M, Z( A+ D
int j,i = 0,temp1,temp2 = 0;
! p! }6 j" X$ X
/*********************生成四个随机数***********************/
|7 U& K4 O9 E3 a; t4 ?+ [
while(i<4)
' {7 G3 c2 }( v! v C6 u
{
" K( U' u O8 ~- e/ G, a) P+ F' X
if(i == 0) {r_num[i] = rand()%10;i++;}
% C* w$ |6 @) B" [2 _) R
else
T. U M0 t1 j" u5 C% b
{
. j' P# B8 @ x# l( A: k
temp1 = rand()%10;
2 a. \" Q6 U2 x4 C5 \/ Z0 S& M
for(j=0;j<i;j++)
/ a G& b4 \" D a" c; |
{
. q* C* U9 m0 e% Z: C% |
if(temp1 == r_num[j]) temp2++;
' K# a8 R/ D, P5 V8 a, V' s$ m
}
2 _( [, s! e2 G; j: I0 M8 g. j
if(temp2 == 0)
6 I5 v2 {: h( u7 V
{
& ~2 }2 z4 ~ E. i9 H/ d
r_num[i] = temp1;
4 v4 w1 b( C4 G$ m
temp2 = 0;
; B5 a' W% @$ D+ h# f
i ++;
6 G* u6 t0 |2 I2 U
}
2 I6 T5 o" H! D1 T* D# y5 I
else
) K" A; L a/ k
{
) G" |5 {' q x, B. u- D# S
temp2 = 0;
* h+ \9 T1 M9 T8 l& V* G
continue;
- s3 ?, @7 l- k* V
}
8 S0 K. V. \7 a2 Q
}
3 b+ y9 T# _2 k# K2 U/ y2 @
}
5 _% [4 J6 h' g! w
for(i = 0;i<4;i++)
1 D) S6 @/ K0 c; o
printf(\"%d\\n\",r_num[i]);
3 P) I0 [ o" X y
/************************猜数字游戏核心部分*********************/
5 U" `" S1 ^: O3 o( I( F
for(;;)
% x" s2 r- b: d7 R. |
{
9 ?, [; p P9 E
scanf(\"%d\",&j);
{1 l E$ r1 D1 u
input_num[0] = j/1000;
" x2 T8 h \) L# G) b" p T
input_num[3] = j%10;
0 h8 e, |6 p$ l8 f E3 e
input_num[1] = (j - input_num[0]*1000)/100;
7 ^- E* Z/ Z9 ]% {8 P
input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;
* [/ `; n! G M% n' e T
/********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
; A5 B( p) v8 l
if(judge(input_num,r_num)==1) break;
. J, i7 S; @" [9 {) ^% y/ D$ `
else
" V/ d& e" z+ u) k3 F( m8 h
continue;
. V- G/ L. k5 P B
}
$ P: b& |7 n$ ^& _
}
复制代码
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5