数学建模社区-数学中国
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
[打印本页]
作者:
wangzheng3056
时间:
2013-7-30 10:11
标题:
【连载】科普之---随机数的应用(猜数字游戏的实现)
本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑
& }" M7 \$ W2 w& K2 x5 s/ ?# g
* i: O! x# s8 @
上一篇:
科普之-------随机数rand()的用法
8 y; n1 [% z" v5 l$ N
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。
: \ B: N! U X6 S0 v
程序的流程是:
0 ?) k' e! z* i1 }: {
1.生成一个四位数要求每一位都不同,放在数组的四个元组中
* ]: Z8 c$ J6 i5 j: }
2.要求用户输入四位数
* h2 D# e4 `& E7 s2 W4 S! c
3.程序将用户输入的四位数分离,放在数组的四个元组中
f' h; V+ L# q+ i' {/ z
4.将两个数组进行对比,记录对比结果
% l$ r" w0 {: B( K5 c/ e: M0 M
5.输出结果
; t# x6 M& v. G0 H
猜数字游戏的实现.c
(1.69 KB, 下载次数: 0)
2013-7-30 10:11 上传
点击文件名下载附件
下载积分: 体力 -2 点
#include<stdio.h>
% e2 V6 F/ n4 r: f/ r
#include<stdlib.h>
% f9 ]# v e% u( l: m) w$ _& x% n
#include<time.h>
# ]5 \1 X) w8 k% q2 }& G- H
int judge(int *a,int *b)
4 ~ u2 q; x/ n! P5 u6 J
{
' B. J! ^$ {$ M" y* X# }2 z
int i,j;
0 [/ x2 @0 ~! L
int count_A,count_B;
* ~# k+ X* C5 o! W D. j y& j
count_A = count_B = 0;
( i7 F( [/ h" q( a/ ?' _
for(i = 0;i<4 ;i++ )
% W! A! @ p. {5 V0 _- Q
{
9 }: p$ T- z& q
if(a[i] == b[i]) count_A++;
, a9 t5 l, ?* {$ d1 K3 n5 k
}
6 X: T% B' ]4 q! I8 u, p8 w
7 U- Q0 h- B* Y8 z* R
if(count_A == 4) {printf("%dA%dB\n",count_A,count_B);return 1;}
+ m0 K: P+ X* ?: H
for(i = 0; i < 4;i ++)
( u3 P0 s+ i7 C6 D6 Q
{
, k* |( {% O/ W1 Z4 M
for(j = 0;j < 4;j ++)
# \% Q; D, t" K. K+ L4 B( M
{
6 s1 s8 x( N& l, k2 |' W
if(a[j] == b[i]) {count_B++;j = 4;}
/ x1 a& A/ z6 {5 \
}
; A% Z6 y0 N! \
}
/ A/ [ h( }1 P, i
printf("%dA%dB\n",count_A,count_B);
* f) x8 p; E" v$ v
return 0;
5 d& ` N" z1 a6 i; i7 o
}
8 W+ Q# O/ [& L7 }
void main()//c语言版猜数字游戏
. \3 @7 d3 t1 ~$ q
{
0 @+ L$ q+ A0 V. ?
int r_num[4];
! X/ a/ g3 |" s# r0 A6 A V2 U
int input_num[4];
8 h1 m" l4 A/ o* r% H7 o" i# N, T
srand(time(0));
1 `0 f c; K5 _; T; Z- \
int j,i = 0,temp1,temp2 = 0;
4 Q9 r- w. l6 b! f8 ~8 ]& ^0 g
/*********************生成四个随机数***********************/
5 w8 ]1 H" o4 k) W
while(i<4)
( S9 R' z6 R) Z& P- {) \/ R
{
9 |, q: n+ d! _5 ]. f8 ~
if(i == 0) {r_num[i] = rand()%10;i++;}
& v4 P1 ?( R. e, E' U" _! S
else
! \5 P3 d; e- \" E
{
" d7 J! V9 W: b; Z: q9 T2 b( ]) S
temp1 = rand()%10;
, H& r, |6 F) M8 k" W
for(j=0;j<i;j++)
& J7 k$ w) H2 _( m6 @* \4 [9 o+ K
{
0 `- r! N# J( S9 Q3 ~* Q, H
if(temp1 == r_num[j]) temp2++;
( x. G" n& P' C* r% g( r/ y
}
, Z/ z% E6 q4 ~9 Y8 w
if(temp2 == 0)
3 f: o7 a A/ `9 I2 q! y
{
3 q9 i y. k P
r_num[i] = temp1;
; ?9 i3 R4 }3 F* r& M/ [5 f9 R4 x
temp2 = 0;
" Y6 w( U0 V& D, G, x
i ++;
R! E+ `$ t- O/ f/ c
}
4 J3 |; e, D- D( ]+ b$ d/ t6 w9 l0 m
else
4 {& Z- {; c/ s! n2 D; U
{
/ W& r9 _; r @9 d
temp2 = 0;
+ d9 e, g' N* {# r
continue;
! `+ g, C- ^& f4 P3 E+ ~0 s9 C
}
6 h9 U- p# ]0 c% Q
}
+ k2 B$ \- G8 I
}
/ e; Q$ I7 M1 j; p
for(i = 0;i<4;i++)
& C" }2 L' B- c- i& {8 m
printf("%d\n",r_num[i]);
5 z( w% V5 J9 D. |3 _/ Y( a
/************************猜数字游戏核心部分*********************/
* ~% {: R" n: h
for(;;)
( b3 k; F% r3 o7 N6 F6 B+ B" X- ?
{
5 a+ J. v' _- t6 O" F9 _
scanf("%d",&j);
; f( B2 k: o \. ^5 Y, @2 ^
input_num[0] = j/1000;
2 A3 A2 i6 L; o- H1 k' V- E
input_num[3] = j%10;
* g3 a5 P( [8 q Y3 m M/ q; g
input_num[1] = (j - input_num[0]*1000)/100;
3 K3 @, ?1 q7 A* T9 @
input_num[2] = (j - input_num[0]*1000 - input_num[1]*100)/10;
, |, j& v C$ `2 I
/********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
|+ e6 r( i9 x9 _6 `
if(judge(input_num,r_num)==1) break;
' d/ c% Y/ f+ |: ]
else
, O! Z. T/ m( r' f1 s5 M
continue;
* h, I& B$ @' k& e
}
" o J5 R' r+ E! S7 R
}
复制代码
作者:
百年孤独
时间:
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