
C++初学者:投骰子随机游戏,我写的程序错在哪?
运行结果总为WIN。。。#include<iostream>#include<cstdlib>usingnamespacestd;intmain(){intseed,i,...
运行结果总为WIN。。。
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int seed,i,j,sum,point;
cout<<"Please input a number: ";
cin>>seed;
srand(seed);
i=rand();
j=rand();
sum=i+j;
switch(sum)
{
case 7:
case 11:
cout<<"WIN!"<<endl;
break;
case 2:
case 3:
case 12:
cout<<"LOST!"<<endl;
break;
default:
point=sum;
i=rand();
j=rand();
sum=i+j;
if(sum==7)
cout<<"LOST!"<<endl;
else
{
do
{
cout<<"WIN!"<<endl;
}while(sum==point);
}
}
} 展开
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int seed,i,j,sum,point;
cout<<"Please input a number: ";
cin>>seed;
srand(seed);
i=rand();
j=rand();
sum=i+j;
switch(sum)
{
case 7:
case 11:
cout<<"WIN!"<<endl;
break;
case 2:
case 3:
case 12:
cout<<"LOST!"<<endl;
break;
default:
point=sum;
i=rand();
j=rand();
sum=i+j;
if(sum==7)
cout<<"LOST!"<<endl;
else
{
do
{
cout<<"WIN!"<<endl;
}while(sum==point);
}
}
} 展开
展开全部
因为rand()的值是0~1之间,不是1~6,如果想要1到6,可以i=1+rand()%6;j=1+rand()%6;
这是我编写的代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int i,j,sum,seed;
printf("请输入一个数:");
scanf("%d",&seed);
srand((unsigned)time(0));
i=1+rand()%6;
j=1+rand()%6;
sum=i+j;
switch(sum)
{
case 2:case 3:case 4:case 5:case 6:printf("LOST!\n");break;
case 7:case 8:case 9:case 10:case 11:case 12:printf("WIN!\n");break;
default: printf("系统错误,请重新输入:");
}
}
不懂的再问我吧!
这是我编写的代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int i,j,sum,seed;
printf("请输入一个数:");
scanf("%d",&seed);
srand((unsigned)time(0));
i=1+rand()%6;
j=1+rand()%6;
sum=i+j;
switch(sum)
{
case 2:case 3:case 4:case 5:case 6:printf("LOST!\n");break;
case 7:case 8:case 9:case 10:case 11:case 12:printf("WIN!\n");break;
default: printf("系统错误,请重新输入:");
}
}
不懂的再问我吧!
追问
rand()那个明白了。
default 之后,还要继续第二轮、第三轮...直到某轮的和数等于点数则取胜,若在此前出现和数为7则为负继续。。我的后面对吗?还用不用再加一个函数体对投的结果讨论一下?
追答
你好,这是逻辑问题;i=rand();j=rand();sum=i+j;sum的值并没有被限定,等于那几种可能是万分之几或更多吧;便执行default,point=sum;那do-while()就只执行一次,就一直win吧。 10+rand()%100的范围是10~100。 如果不懂的,发信息过来吧,不过你的后面得重新设计下,作为单独的模块运行检验。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询