#include <time.h>
#include <stdlib.h>
int rollDie(void)
{
return rand()%6+1
}
void drawDic(int* pdic,int n)
{
int i,sum=0
for(i=0i<ni++)
{
pdic[i]=rollDie()
}
for(i=0i<ni++)
{
printf("----")
}
printf("\n")
for(i=0i<ni++)
{
printf("|%d| ",pdic[i])
sum+=pdic[i]
}
printf("\n")
for(i=0i<ni++)
{
printf("----")
}
printf("\nsum=%d\n",sum)
}
int main()
{
int dic[100]
int n=1
int i
printf("输入骰子数目:")
scanf("%d",&n)
srand(time(0))
drawDic(dic,n)
return 0
}
结果:
这个我不是在baiduHi里面给你粘贴过一次了么?关于你这里的rand的问题,解释如下:
int
rand()函数,随机产生一整数
rand()%MAX
产生[0,MAX)的整数
a+rand()%(b-a+1)
产生[a,b]之间的整数
下面是代码:
/*
每个骰子有六面,这些面包含1,2,3,4,5,6个点,每次掷两枚骰子,然后计算点数之和。
如果第一次的和味7或11,则游戏者获胜。
2,3或12,则输。
4,5,6,8,9,10
则继续,
并将这个和作为游戏者获胜所需要的点数,直到赚到该点数是算游戏者胜。如果7次仍未,则输
*/
#include
<iostream>
#include
<cstdlib>
#include
<ctime>
#include
<cassert>
#include
"Random.H"
using
namespace
std
#define
MIN
1
#define
SIDE
6
#define
WIN
21
int
dice::getP(void)
{
srand(time(NULL))
int
p1
=
MIN+rand()%SIDE
int
p2
=
MIN+rand()%SIDE
cout
<<
"\n
p1
=
"
<<
p1
<<
",
p2="
<<
p2
<<
endl
return
(p1+p2)
}
int
rule::judge(int
p)
{
assert(
(p>=2)
&&
(p<=12)
)
int
ret
if(
p==7
||
p
==
11)
{
ret
=
1
//
win
when
first
time
}
else
if
(p==2||p==3||p==4)
{
ret
=
-1
//
lost
when
first
time
}
else
{
ret
=
0
}
return
ret
}
int
boy::play(void)
{
rule
r
dice
d
int
ret
while(
(++time)<=7
)
{
int
p1
=
d.getP()
int
ret1
=
r.judge(p1)
if(time
==
1)
{
if(
(ret1==1)
)
{
cout
<<
"
Congratulations,
You
Win!"
<<
endl
return
1
}
else
if
((ret1
==
-1))
{
cout
<<
"My
God,
You
Lost"
<<
endl
return
-1
}
}
total_
+=
p1
if(total==WIN)
{
cout
<<
"
Congratulations,
You
Win!"
<<
endl
return
1
}
}
return
-1
}