数学建模社区-数学中国
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
[打印本页]
作者:
wangzheng3056
时间:
2013-7-30 10:11
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑
: c, x0 m0 s) m+ `" u
( s* N2 l$ `5 i$ X5 `' }( K
上一篇:
科普之-------随机数rand()的用法
) t. t# J# h$ |1 I1 ?0 m
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。
$ Y" E/ y: B. A4 E# b0 o9 a+ d
程序的流程是:
% R" ~$ R0 K3 W) C8 q1 q
1.生成一个四位数要求每一位都不同,放在数组的四个元组中
4 r: F3 ] H+ \
2.要求用户输入四位数
. b* A# p% w7 \7 M& `
3.程序将用户输入的四位数分离,放在数组的四个元组中
) U! M! }/ d3 s2 [
4.将两个数组进行对比,记录对比结果
) U4 r) p/ q) |4 M2 O7 D
5.输出结果
I$ x+ v- Z7 g: f' s
猜数字游戏的实现.c
(1.69 KB, 下载次数: 0)
2013-7-30 10:11 上传
点击文件名下载附件
下载积分: 体力 -2 点
#include<stdio.h>
3 n# [" I! {; e o, d; T
#include<stdlib.h>
! V1 u/ i: O$ c* D5 j
#include<time.h>
# J* D% ?7 \7 ]9 U& B
int judge(int *a,int *b)
6 m2 ?# \9 ^0 q+ _
{
" V ~( ]( S j4 E
int i,j;
/ @# p. n" r( O0 m
int count_A,count_B;
6 g0 H# l' e$ Y$ Z( v9 c
count_A = count_B = 0;
a1 P8 n* u7 u7 s3 F4 j
for(i = 0;i<4 ;i++ )
9 U9 v& u5 i( J/ ^
{
- t8 [5 x5 |. ]" p. Q- l
if(a[i] == b[i]) count_A++;
( f4 r" k" H0 ~1 i) }
}
9 h( |0 B- ] w0 _
3 Z4 M" `! c7 p+ ~* _! [/ f3 P
if(count_A == 4) {printf("%dA%dB\n",count_A,count_B);return 1;}
& M0 b: i1 u v. a
for(i = 0; i < 4;i ++)
" M* H% a( ]* c, q% R
{
3 T8 h. |4 `7 N' C2 y
for(j = 0;j < 4;j ++)
4 v7 r& ^! R" T- S6 ~- e
{
. q: \) Q. V" D! g8 D& i
if(a[j] == b[i]) {count_B++;j = 4;}
. W* O/ Z6 B9 `2 ? W' |
}
( i; f4 U. d/ [1 j& K* Z
}
! H& z# Q* l( ~+ v
printf("%dA%dB\n",count_A,count_B);
8 _0 y" `$ z u, B0 C7 D3 ~1 V
return 0;
% e: ^7 W1 I. |3 H6 ?3 P
}
5 W# }5 j0 V! a% N6 L% `
void main()//c语言版猜数字游戏
( b" d, c) h. m* y! e
{
s7 Q' K% E3 y$ W6 y2 h
int r_num[4];
# J. o' c0 L1 C3 R3 [
int input_num[4];
6 J t: b! X( ]
srand(time(0));
) s4 V: C1 f [
int j,i = 0,temp1,temp2 = 0;
, m; r, @: S, J" Y2 B
/*********************生成四个随机数***********************/
) T2 ^+ z+ W+ B7 A! [
while(i<4)
7 u- p7 G) m: ?# N# B) x
{
+ c: g; H9 g; ?# Y; d
if(i == 0) {r_num[i] = rand()%10;i++;}
0 O+ [1 h$ Z+ G5 X
else
. @- W1 z; O% v+ A( `% R
{
6 V$ I8 h- u, t/ H1 G
temp1 = rand()%10;
9 }2 `3 ^7 O+ O* T- ~
for(j=0;j<i;j++)
& c3 ~& _, A9 d8 t% r4 d+ ]- l5 b
{
. u) ^! ?' @. D1 {+ H
if(temp1 == r_num[j]) temp2++;
. K4 W' `0 A5 X) q1 g
}
6 \$ e) F" t- r: v0 D4 z3 v' J& z
if(temp2 == 0)
# f! \3 z# y: D& B
{
$ Y' I" {- u* d: F- N# v
r_num[i] = temp1;
' v% j1 V* f' ^! N# N
temp2 = 0;
9 y# X$ l4 {5 n
i ++;
% f% _$ j- _2 D( ]6 Q/ e% i, `
}
4 O7 Z1 V3 J' H0 @5 e) l0 j1 L
else
" T, x( t. l8 M* `3 d# ~4 @, `
{
: U! _, S2 h3 c
temp2 = 0;
: r' j& Z+ {, F$ n" q. ~+ k N1 v6 x4 C
continue;
+ `8 p6 d! p) d0 K# k
}
* ~% U3 R& o* R+ {% a
}
! k& e) `1 u$ a( y" R* B9 m; z. m) B
}
4 @' J) b' d) w; h& S9 B
for(i = 0;i<4;i++)
$ l- p' o7 q Q: `- U2 G9 p* v# ?
printf("%d\n",r_num[i]);
' c ?4 z r* t/ Z
/************************猜数字游戏核心部分*********************/
6 e& ^7 \! k5 f, u- n. d3 `' b
for(;;)
! y1 B/ K# g, b$ f( _, b
{
4 b' O" j% }) F
scanf("%d",&j);
" G6 f! ?# r1 B0 I7 F) j
input_num[0] = j/1000;
7 ]$ u: D1 x8 U* e/ O6 Z3 A
input_num[3] = j%10;
2 D3 p# D6 w( u
input_num[1] = (j - input_num[0]*1000)/100;
2 @, A0 ?; g0 R' A$ u z9 m7 ?$ c
input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;
* l @% s0 Z" i) t. ~
/********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
4 X% [+ C9 F4 C% p! V, n
if(judge(input_num,r_num)==1) break;
|$ ?4 r; L) P$ \
else
1 r! M+ q5 |+ o6 s7 `' Y" o
continue;
) h3 i3 `: O9 ]! }
}
7 K, ~4 a! g) @ a+ z3 ^
}
复制代码
作者:
百年孤独
时间:
2013-7-30 10:25
今天果然及时更新了!威武~~~
作者:
wangzheng3056
时间:
2013-7-30 11:20
我想知道大家想用随机数做什么, 大家给点意见~!!!!好让我连载下去
作者:
平凡之不凡
时间:
2013-7-30 17:41
如果与统计学挂钩,随机数很重要
作者:
他山石
时间:
2013-8-8 18:03
确实。如果向数据挖掘方面走。我觉得更好。
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5