问:C++随机函数rand()怎样在整型数字1,2,3之间随机产生不同的数生
我有这样一个只供自己玩的小程序(石头剪子布)只供用户键入play1(玩家1的拳项)和play2(玩家2的拳项)然后才能进行常规的游戏。现在想改进一下,仅输入play1(玩...
我有这样一个只供自己玩的小程序(石头剪子布)只供用户键入play1(玩家1的拳项)和play2(玩家2的拳项)然后才能进行常规的游戏。现在想改进一下,仅输入play1(玩家1的拳项),然后像下面的if语句一样每次进行play1和电脑随机数(3以内不包括0)的比较,得出相应的结果显示(比如我程序中的puts()函数)。在随机函数这块我不是很熟,求高人帮忙在不改整体框架的条件下,帮我加一下随机函数(1,2,3),不甚感激···!
qq:340090738
email:340090738@qq.com以下是我的程序:
#include"iostream.h"
#include"string.h"
#include"stdio.h"
/*规划:数字'1'代表石头,数字'2'代表剪刀,数字'3'代表布。
运行模式:石头VS剪刀=>结果石头胜;石头VS布=>结果布胜;剪刀VS布=>结果剪刀胜
*/
void main()
{
int play1,play2; //定义两个玩家
int time,i=1; //用来控制玩家想要玩耍的次数和累计
char show[20]; //用于键入密码项
/*以下为游戏中可能出现的七种结果*/
char show11[]="***石头VS剪刀=>石头胜***";
char show12[]="***石头VS布=>布胜***";
char show21[]="***剪刀VS布=>剪刀胜***";
char show22[]="***剪刀VS石头=>石头胜***";
char show31[]="***布VS石头=>布胜***";
char show32[]="***布VS剪刀=>剪刀胜***";
char show40[]="***双方平局***";
cout<<"********************陈曦开发石头剪刀布游戏*******************"<<endl;
cout<<"游戏说明:介于DOS的限制,无活动丰富的彩色显示,规则上可同时出两种拳,查看结果(1:代表石头)(2:代表剪刀)(3:代表布),"<<endl;
cout<<"此款游戏伴随我们每一个人长大,陈曦在此祝大家玩得高兴!"<<endl;
cout<<"请输入开关密码:"<<endl;
gets(show);
if(strcmp(show,"chenxistart")==0)
{
cout<<"恭喜获得游戏权!"<<endl;
cout<<"请输入欲玩耍的次数,按Enter确定"<<endl;
cin>>time;
while(i<=time)
{
cout<<"请玩家1键入一种拳项:"<<endl;
cin>>play1;
cout<<"请玩家2键入一种拳项:"<<endl;
cin>>play2;
if((play1==1||play1==2||play1==3)&&(play2==1||play2==2||play2==3)) //输入的拳项
{
if(play1==play2)
puts(show40);
else if(play1==1&&play2==2)
puts(show11);
else if(play1==1&&play2==3)
puts(show12);
else if(play1==2&&play2==3)
puts(show21);
else if(play1==2&&play2==1)
puts(show22);
else if(play1==3&&play2==1)
puts(show31);
else if(play1==3&&play2==2)
puts(show32);
}
else
cout<<"键入拳项错误!"<<endl;
i++; //用于计数
}
}
else
cout<<"对不起!输入开关密码错误,您无权进入,请按任意键退出!"<<endl;
cout<<"*************预知密码可咨询编写者陈曦*************"<<endl;
} 展开
qq:340090738
email:340090738@qq.com以下是我的程序:
#include"iostream.h"
#include"string.h"
#include"stdio.h"
/*规划:数字'1'代表石头,数字'2'代表剪刀,数字'3'代表布。
运行模式:石头VS剪刀=>结果石头胜;石头VS布=>结果布胜;剪刀VS布=>结果剪刀胜
*/
void main()
{
int play1,play2; //定义两个玩家
int time,i=1; //用来控制玩家想要玩耍的次数和累计
char show[20]; //用于键入密码项
/*以下为游戏中可能出现的七种结果*/
char show11[]="***石头VS剪刀=>石头胜***";
char show12[]="***石头VS布=>布胜***";
char show21[]="***剪刀VS布=>剪刀胜***";
char show22[]="***剪刀VS石头=>石头胜***";
char show31[]="***布VS石头=>布胜***";
char show32[]="***布VS剪刀=>剪刀胜***";
char show40[]="***双方平局***";
cout<<"********************陈曦开发石头剪刀布游戏*******************"<<endl;
cout<<"游戏说明:介于DOS的限制,无活动丰富的彩色显示,规则上可同时出两种拳,查看结果(1:代表石头)(2:代表剪刀)(3:代表布),"<<endl;
cout<<"此款游戏伴随我们每一个人长大,陈曦在此祝大家玩得高兴!"<<endl;
cout<<"请输入开关密码:"<<endl;
gets(show);
if(strcmp(show,"chenxistart")==0)
{
cout<<"恭喜获得游戏权!"<<endl;
cout<<"请输入欲玩耍的次数,按Enter确定"<<endl;
cin>>time;
while(i<=time)
{
cout<<"请玩家1键入一种拳项:"<<endl;
cin>>play1;
cout<<"请玩家2键入一种拳项:"<<endl;
cin>>play2;
if((play1==1||play1==2||play1==3)&&(play2==1||play2==2||play2==3)) //输入的拳项
{
if(play1==play2)
puts(show40);
else if(play1==1&&play2==2)
puts(show11);
else if(play1==1&&play2==3)
puts(show12);
else if(play1==2&&play2==3)
puts(show21);
else if(play1==2&&play2==1)
puts(show22);
else if(play1==3&&play2==1)
puts(show31);
else if(play1==3&&play2==2)
puts(show32);
}
else
cout<<"键入拳项错误!"<<endl;
i++; //用于计数
}
}
else
cout<<"对不起!输入开关密码错误,您无权进入,请按任意键退出!"<<endl;
cout<<"*************预知密码可咨询编写者陈曦*************"<<endl;
} 展开
3个回答
展开全部
//已经帮你改的很完善了 ,两种情况都加进去了...
//直接用rand()是伪随机数,加上srand((unsigned)time( NULL ))才是真随机数
#include"iostream.h"
#include"string.h"
#include"stdio.h"
#include <stdlib.h>
#include <time.h>
/*规划:数字'1'代表石头,数字'2'代表剪刀,数字'3'代表布。
运行模式:石头VS剪刀=>结果石头胜;石头VS布=>结果布胜;剪刀VS布=>结果剪刀胜
*/
void main()
{
srand( (unsigned)time( NULL ) );
int play1,play2; //定义两个玩家
int time,model,i=1; //用来控制玩家想要玩耍的次数和累计
char show[20]; //用于键入密码项
/*以下为游戏中可能出现的七种结果*/
char show11[]="***石头VS剪刀=>石头胜***";
char show12[]="***石头VS布=>布胜***";
char show21[]="***剪刀VS布=>剪刀胜***";
char show22[]="***剪刀VS石头=>石头胜***";
char show31[]="***布VS石头=>布胜***";
char show32[]="***布VS剪刀=>剪刀胜***";
char show40[]="***双方平局***";
cout<<"********************陈曦开发石头剪刀布游戏*******************"<<endl;
cout<<"游戏说明:介于DOS的限制,无活动丰富的彩色显示,规则上可同时出两种拳,查看结果(1:代表石头)(2:代表剪刀)(3:代表布),"<<endl;
cout<<"此款游戏伴随我们每一个人长大,陈曦在此祝大家玩得高兴!"<<endl;
cout<<"请输入开关密码:"<<endl;
gets(show);
if(strcmp(show,"chenxistart")==0)
{
cout<<"恭喜获得游戏权!"<<endl;
cout<<"请输入欲玩耍的次数,按Enter确定"<<endl;
cin>>time;
cout<<"请输入玩法(1人机猜拳,2人人对猜): "<<endl;
cin>>model;
if(model==2)
{
cout<<"****************************人人对猜模式****************************"<<endl;
while(i<=time)
{
cout<<"请玩家1键入一种拳项:"<<endl;
cin>>play1;
cout<<"请玩家2键入一种拳项:"<<endl;
cin>>play2;
if((play1==1||play1==2||play1==3)&&(play2==1||play2==2||play2==3)) //输入的拳项
{
if(play1==play2)
puts(show40);
else if(play1==1&&play2==2)
puts(show11);
else if(play1==1&&play2==3)
puts(show12);
else if(play1==2&&play2==3)
puts(show21);
else if(play1==2&&play2==1)
puts(show22);
else if(play1==3&&play2==1)
puts(show31);
else if(play1==3&&play2==2)
puts(show32);
}
else
cout<<"键入拳项错误!"<<endl;
i++; //用于计数
}
}
else if(model==1)
{
cout<<"****************************人人猜拳模式****************************"<<endl;
while(i<=time)
{
cout<<"电脑已经出拳完毕!!"<<endl;
play2=rand()%3+1;
cout<<"请玩家1键入一种拳项:"<<endl;
cin>>play1;
if((play1==1||play1==2||play1==3)&&(play2==1||play2==2||play2==3))
{
if(play1==play2)
puts(show40);
else if(play1==1&&play2==2)
puts(show11);
else if(play1==1&&play2==3)
puts(show12);
else if(play1==2&&play2==3)
puts(show21);
else if(play1==2&&play2==1)
puts(show22);
else if(play1==3&&play2==1)
puts(show31);
else if(play1==3&&play2==2)
puts(show32);
}
else
cout<<"键入拳项错误!"<<endl;
i++; //用于计数
}
}
else cout<<"输入游戏模式错误!!"<<endl;
}
else
cout<<"对不起!输入开关密码错误,您无权进入,请按任意键退出!"<<endl;
cout<<"*************预知密码可咨询编写者陈曦*************"<<endl;
}
//直接用rand()是伪随机数,加上srand((unsigned)time( NULL ))才是真随机数
#include"iostream.h"
#include"string.h"
#include"stdio.h"
#include <stdlib.h>
#include <time.h>
/*规划:数字'1'代表石头,数字'2'代表剪刀,数字'3'代表布。
运行模式:石头VS剪刀=>结果石头胜;石头VS布=>结果布胜;剪刀VS布=>结果剪刀胜
*/
void main()
{
srand( (unsigned)time( NULL ) );
int play1,play2; //定义两个玩家
int time,model,i=1; //用来控制玩家想要玩耍的次数和累计
char show[20]; //用于键入密码项
/*以下为游戏中可能出现的七种结果*/
char show11[]="***石头VS剪刀=>石头胜***";
char show12[]="***石头VS布=>布胜***";
char show21[]="***剪刀VS布=>剪刀胜***";
char show22[]="***剪刀VS石头=>石头胜***";
char show31[]="***布VS石头=>布胜***";
char show32[]="***布VS剪刀=>剪刀胜***";
char show40[]="***双方平局***";
cout<<"********************陈曦开发石头剪刀布游戏*******************"<<endl;
cout<<"游戏说明:介于DOS的限制,无活动丰富的彩色显示,规则上可同时出两种拳,查看结果(1:代表石头)(2:代表剪刀)(3:代表布),"<<endl;
cout<<"此款游戏伴随我们每一个人长大,陈曦在此祝大家玩得高兴!"<<endl;
cout<<"请输入开关密码:"<<endl;
gets(show);
if(strcmp(show,"chenxistart")==0)
{
cout<<"恭喜获得游戏权!"<<endl;
cout<<"请输入欲玩耍的次数,按Enter确定"<<endl;
cin>>time;
cout<<"请输入玩法(1人机猜拳,2人人对猜): "<<endl;
cin>>model;
if(model==2)
{
cout<<"****************************人人对猜模式****************************"<<endl;
while(i<=time)
{
cout<<"请玩家1键入一种拳项:"<<endl;
cin>>play1;
cout<<"请玩家2键入一种拳项:"<<endl;
cin>>play2;
if((play1==1||play1==2||play1==3)&&(play2==1||play2==2||play2==3)) //输入的拳项
{
if(play1==play2)
puts(show40);
else if(play1==1&&play2==2)
puts(show11);
else if(play1==1&&play2==3)
puts(show12);
else if(play1==2&&play2==3)
puts(show21);
else if(play1==2&&play2==1)
puts(show22);
else if(play1==3&&play2==1)
puts(show31);
else if(play1==3&&play2==2)
puts(show32);
}
else
cout<<"键入拳项错误!"<<endl;
i++; //用于计数
}
}
else if(model==1)
{
cout<<"****************************人人猜拳模式****************************"<<endl;
while(i<=time)
{
cout<<"电脑已经出拳完毕!!"<<endl;
play2=rand()%3+1;
cout<<"请玩家1键入一种拳项:"<<endl;
cin>>play1;
if((play1==1||play1==2||play1==3)&&(play2==1||play2==2||play2==3))
{
if(play1==play2)
puts(show40);
else if(play1==1&&play2==2)
puts(show11);
else if(play1==1&&play2==3)
puts(show12);
else if(play1==2&&play2==3)
puts(show21);
else if(play1==2&&play2==1)
puts(show22);
else if(play1==3&&play2==1)
puts(show31);
else if(play1==3&&play2==2)
puts(show32);
}
else
cout<<"键入拳项错误!"<<endl;
i++; //用于计数
}
}
else cout<<"输入游戏模式错误!!"<<endl;
}
else
cout<<"对不起!输入开关密码错误,您无权进入,请按任意键退出!"<<endl;
cout<<"*************预知密码可咨询编写者陈曦*************"<<endl;
}
展开全部
rand()怎样在整型数字1,2,3之间随机产生不同的数生
答:int r = rand()%3 + 1;
答:int r = rand()%3 + 1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在指示地方进行修改,代码如下:
#include"iostream.h"
#include"string.h"
#include"time.h"//增加time头文件
#include"stdlib.h"//头文件
#include"stdio.h"
/*规划:数字'1'代表石头,数字'2'代表剪刀,数字'3'代表布。
运行模式:石头VS剪刀=>结果石头胜;石头VS布=>结果布胜;剪刀VS布=>结果剪刀胜
*/
void main()
{
int play1,play2; //定义两个玩家
int tim,i=1; //用来控制玩家想要玩耍的次数和累计
char show[20]; //用于键入密码项
/*以下为游戏中可能出现的七种结果*/
char show11[]="***石头VS剪刀=>石头胜***";
char show12[]="***石头VS布=>布胜***";
char show21[]="***剪刀VS布=>剪刀胜***";
char show22[]="***剪刀VS石头=>石头胜***";
char show31[]="***布VS石头=>布胜***";
char show32[]="***布VS剪刀=>剪刀胜***";
char show40[]="***双方平局***";
cout<<"********************陈曦开发石头剪刀布游戏*******************"<<endl;
cout<<"游戏说明:介于DOS的限制,无活动丰富的彩色显示,规则上可同时出两种拳,查看结果(1:代表石头)(2:代表剪刀)(3:代表布),"<<endl;
cout<<"此款游戏伴随我们每一个人长大,陈曦在此祝大家玩得高兴!"<<endl;
cout<<"请输入开关密码:"<<endl;
gets(show);
if(strcmp(show,"chenxistart")==0)
{
cout<<"恭喜获得游戏权!"<<endl;
cout<<"请输入欲玩耍的次数,按Enter确定"<<endl;
cin>>tim;
while(i<=tim)
{
cout<<"请玩家1键入一种拳项:"<<endl;
cin>>play1;
//cout<<"请玩家2键入一种拳项:"<<endl;
//cin>>play2;
srand(time(NULL));//****这儿这样修改*****
play2=rand()%3+1;
if((play1==1||play1==2||play1==3)&&(play2==1||play2==2||play2==3)) //输入的拳项
{
if(play1==play2)
puts(show40);
else if(play1==1&&play2==2)
puts(show11);
else if(play1==1&&play2==3)
puts(show12);
else if(play1==2&&play2==3)
puts(show21);
else if(play1==2&&play2==1)
puts(show22);
else if(play1==3&&play2==1)
puts(show31);
else if(play1==3&&play2==2)
puts(show32);
}
else
cout<<"键入拳项错误!"<<endl;
i++; //用于计数
}
}
else
cout<<"对不起!输入开关密码错误,您无权进入,请按任意键退出!"<<endl;
cout<<"*************预知密码可咨询编写者陈曦*************"<<endl;
}
#include"iostream.h"
#include"string.h"
#include"time.h"//增加time头文件
#include"stdlib.h"//头文件
#include"stdio.h"
/*规划:数字'1'代表石头,数字'2'代表剪刀,数字'3'代表布。
运行模式:石头VS剪刀=>结果石头胜;石头VS布=>结果布胜;剪刀VS布=>结果剪刀胜
*/
void main()
{
int play1,play2; //定义两个玩家
int tim,i=1; //用来控制玩家想要玩耍的次数和累计
char show[20]; //用于键入密码项
/*以下为游戏中可能出现的七种结果*/
char show11[]="***石头VS剪刀=>石头胜***";
char show12[]="***石头VS布=>布胜***";
char show21[]="***剪刀VS布=>剪刀胜***";
char show22[]="***剪刀VS石头=>石头胜***";
char show31[]="***布VS石头=>布胜***";
char show32[]="***布VS剪刀=>剪刀胜***";
char show40[]="***双方平局***";
cout<<"********************陈曦开发石头剪刀布游戏*******************"<<endl;
cout<<"游戏说明:介于DOS的限制,无活动丰富的彩色显示,规则上可同时出两种拳,查看结果(1:代表石头)(2:代表剪刀)(3:代表布),"<<endl;
cout<<"此款游戏伴随我们每一个人长大,陈曦在此祝大家玩得高兴!"<<endl;
cout<<"请输入开关密码:"<<endl;
gets(show);
if(strcmp(show,"chenxistart")==0)
{
cout<<"恭喜获得游戏权!"<<endl;
cout<<"请输入欲玩耍的次数,按Enter确定"<<endl;
cin>>tim;
while(i<=tim)
{
cout<<"请玩家1键入一种拳项:"<<endl;
cin>>play1;
//cout<<"请玩家2键入一种拳项:"<<endl;
//cin>>play2;
srand(time(NULL));//****这儿这样修改*****
play2=rand()%3+1;
if((play1==1||play1==2||play1==3)&&(play2==1||play2==2||play2==3)) //输入的拳项
{
if(play1==play2)
puts(show40);
else if(play1==1&&play2==2)
puts(show11);
else if(play1==1&&play2==3)
puts(show12);
else if(play1==2&&play2==3)
puts(show21);
else if(play1==2&&play2==1)
puts(show22);
else if(play1==3&&play2==1)
puts(show31);
else if(play1==3&&play2==2)
puts(show32);
}
else
cout<<"键入拳项错误!"<<endl;
i++; //用于计数
}
}
else
cout<<"对不起!输入开关密码错误,您无权进入,请按任意键退出!"<<endl;
cout<<"*************预知密码可咨询编写者陈曦*************"<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询