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);
}
}
}
展开
 我来答
养家小能手
2013-04-14 · 超过14用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:36.6万
展开全部
因为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("系统错误,请重新输入:");
}
}
不懂的再问我吧!
追问
rand()那个明白了。
default 之后,还要继续第二轮、第三轮...直到某轮的和数等于点数则取胜,若在此前出现和数为7则为负继续。。我的后面对吗?还用不用再加一个函数体对投的结果讨论一下?
追答
你好,这是逻辑问题;i=rand();j=rand();sum=i+j;sum的值并没有被限定,等于那几种可能是万分之几或更多吧;便执行default,point=sum;那do-while()就只执行一次,就一直win吧。      10+rand()%100的范围是10~100。 如果不懂的,发信息过来吧,不过你的后面得重新设计下,作为单独的模块运行检验。
南柯一梦之小
2013-04-12 · TA获得超过430个赞
知道小有建树答主
回答量:458
采纳率:0%
帮助的人:352万
展开全部
你检查一下每次产生的随机数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式