#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int craps(void) //这是一个双骰子的函数,本人感觉这个函数的返回值本人没有整对
{
enum Status{CONTINUE,WON,LOST};
int sum,myPoint,die1,die2;
enum Status gameStatus;
srand(time(NULL));
die1=1+(rand()%6);
die2=1+(rand()%6);
sum=die1+die2;
switch(sum){
case 7:
case 11:
gameStatus=WON;
break;
case 2:
case 3:
case 12:
gameStatus=LOST;
break;
default:
gameStatus=CONTINUE;
myPoint=sum;
break;
}
while(gameStatus==CONTINUE){
die1=1+(rand()%6);
die2=1+(rand()%6);
sum=die1+die2;
if(sum==myPoint){
gameStatus=WON;
}
else{
if(sum==7){
gameStatus=LOST;
}
}
}
if(gameStatus==WON){
return 1;
}
else{
return 0;
}
}
int craps(void);
int main(void)
{
int bankBalance=1000;
int wager;
int result;
printf("请您输入赌注:\n");
scanf("%d",wager);
while(wager<=bankBalance){
result=craps();
if(result==1){
bankBalance+=wager;
printf("手气不错,再来一次吧!");
}
else{
if(result==0){
bankBalance=bankBalance-wager;
printf("胜败乃兵家常事,再来一次!");
}
}
}
}
这段代码本来应该实现本人输入一个小于或等于本金的赌注,这里本人用的是while循环来实现,接下来假如条件满足的话就会执行一次craps函数,接下来就是用if…else来把产生的结果做处理。
int craps(void);
int main(void)
{
int result,i;
int win=0;
int lost=0;
for(i=1;i<=100;i++){
result=craps();
if(result==1){
win+=1;
}
else{
if(result==0){
lost+=1;
}
}
}
printf("the win is %d\n",win);
printf("the lost is %d\n",lost);
return 0;
}
上面这个代码是本人想要测试本人的craps函数能否正确来编写的,但是出来的结果却是win:100,lost:0.所以本人的craps函数错了,希望高手能帮本人看看本人的问题
解决方案
80
有两个问题:
1.scanf(“%d”,wager);应该是scanf(“%d”,&wager);
2.srand(time(NULL));放到main函数里,srand一次就行了,否则种子一样,产生的随机数也会一样
1.scanf(“%d”,wager);应该是scanf(“%d”,&wager);
2.srand(time(NULL));放到main函数里,srand一次就行了,否则种子一样,产生的随机数也会一样
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int craps(void) //这是一个双骰子的函数,本人感觉这个函数的返回值本人没有整对
{
enum Status{CONTINUE,WON,LOST};
int sum,myPoint,die1,die2;
enum Status gameStatus;
die1=1+(rand()%6);
die2=1+(rand()%6);
sum=die1+die2;
switch(sum){
case 7:
case 11:
gameStatus=WON;
break;
case 2:
case 3:
case 12:
gameStatus=LOST;
break;
default:
gameStatus=CONTINUE;
myPoint=sum;
break;
}
while(gameStatus==CONTINUE){
die1=1+(rand()%6);
die2=1+(rand()%6);
sum=die1+die2;
if(sum==myPoint){
gameStatus=WON;
}
else{
if(sum==7){
gameStatus=LOST;
}
}
}
if(gameStatus==WON){
return 1;
}
else{
return 0;
}
}
int craps(void);
int main(void)
{
int bankBalance=1000;
int wager;
int result;
srand(time(NULL));
printf("请您输入赌注:\n");
scanf("%d",&wager);
while(wager<=bankBalance){
result=craps();
if(result==1){
bankBalance+=wager;
printf("手气不错,再来一次吧!");
}
else{
if(result==0){
bankBalance=bankBalance-wager;
printf("胜败乃兵家常事,再来一次!");
}
}
}
}