我想问为什么我输入非0,1,2,3的时候会进入死循环??

供稿:hz-xin.com     日期:2025-01-15
C语言 这代码 a输入非1,2 怎么就死循环

输入非1,2的时候,switch语句执行的是default:b=1;不是重新输入,你下面的while循环的控制变量是b,经过上面的赋值,则b==1,即while(1),一直执行,就是死循环了

这不是死循环,但是while(1<=x<=2);这个表达不对,应该是while(1<=x && x<=2);
还在,这个程序不会输出"*",因为当y的值为1后,x的值就自减为0,下一次的循环就不会继续。

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main()
{

int NG=1,times=0,end=0;
int play_1,play_2;
NG:
cout<<"剪刀=1,石头=2,布=3,0=游戏结束"<<endl;
cout<<"慢慢来想好先哦,请玩家一输入"<<endl;
cin>>play_1;
srand ((unsigned) time (NULL));
play_2=rand()%3;
if(play_2==0)
play_2=3;
switch(times)
{
case 3:
cout<<"你已经在线了"<<times<<"小时"<<endl;
break;
case 9:
cout<<"你已经在线了"<<times<<"小时,请注意身体哦"<<endl;
break;
case 15:
cout<<"你已经在线了"<<times<<"小时,你未进行实名验证,现经验减半"<<endl;
break;
case 20:
cout<<"你过度游戏"<<times<<"小时,现在强迫游戏结束"<<endl;
goto OVER;
}

switch(play_1)
{
case 1:
times++;
switch (play_2)
{
case 1 :
cout<<"平局"<<endl;
break;
case 2 :
cout<<"玩家二出石头,第二玩家胜"<<endl;
break;
case 3 :
cout<<"玩家二出布,你赢了胜"<<endl;
break;
}goto NG;

case 2:
times++;
switch(play_2)
{
case 1 :
cout<<"玩家二出剪刀,你赢了"<<endl;
break;
case 2 :
cout<<"平局"<<endl;
break;
case 3 :
cout<<"玩家二出布,第二玩家胜"<<endl;
break;
}goto NG;

case 3:
times++;
switch(play_2)
{
case 1 :
cout<<"玩家二出剪刀,第二玩家胜"<<endl;
break;
case 2 :
cout<<"玩家二出石头,你赢了"<<endl;
break;
case 3 :
cout<<"平局"<<endl;
break;
}goto NG;

case 0:
cout<<"游戏结束"<<endl;
break;
default :
cout<<"输入错误"<<endl;
goto NG;
}

OVER:
cout<<"游戏结束\n\n\n你总在线"<<times<<"小时"<<endl;

}

play_2=rand()%4+1;
有错 当rand()%4=3时,play_2=4了,根本不能比较了
改正:
play_2=rand()%3;
play_2的取值有 0,1,2
if(play_2==0)
play_2=3;
这样就ok了

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void main()
{

int NG=1,times=0,end=0;
int play_1,play_2;
NG:
cout<<"剪刀=1,石头=2,布=3,0=游戏结束"<<endl;
cout<<"慢慢来想好先哦,请玩家一输入"<<endl;
cin>>play_1;
srand ((unsigned) time (NULL));
play_2=rand()%3;
if(play_2==0)
play_2=3;
switch(times)
{
case 3:
cout<<"你已经在线了"<<times<<"小时"<<endl;
break;
case 9:
cout<<"你已经在线了"<<times<<"小时,请注意身体哦"<<endl;
break;
case 15:
cout<<"你已经在线了"<<times<<"小时,你未进行实名验证,现经验减半"<<endl;
break;
case 20:
cout<<"你过度游戏"<<times<<"小时,现在强迫游戏结束"<<endl;
goto OVER;
}

switch(play_1)
{
case 1:
times++;
switch (play_2)
{
case 1 :
cout<<"平局"<<endl;
break;
case 2 :
cout<<"玩家二出石头,第二玩家胜"<<endl;
break;
case 3 :
cout<<"玩家二出布,你赢了胜"<<endl;
break;
}goto NG;

case 2:
times++;
switch(play_2)
{
case 1 :
cout<<"玩家二出剪刀,你赢了"<<endl;
break;
case 2 :
cout<<"平局"<<endl;
break;
case 3 :
cout<<"玩家二出布,第二玩家胜"<<endl;
break;
}goto NG;

case 3:
times++;
switch(play_2)
{
case 1 :
cout<<"玩家二出剪刀,第二玩家胜"<<endl;
break;
case 2 :
cout<<"玩家二出石头,你赢了"<<endl;
break;
case 3 :
cout<<"平局"<<endl;
break;
}goto NG;

case 0:
cout<<"游戏结束"<<endl;
break;
default :
cout<<"输入错误"<<endl;
goto NG;
}

OVER:
cout<<"游戏结束\n\n\n你总在线"<<times<<"小时"<<endl;

}

play_2=rand()%4+1;
有错 当rand()%4=3时,play_2=4了,根本不能比较了
改正:
play_2=rand()%3;
play_2的取值有 0,1,2
if(play_2==0)

从新开电脑

...格中输入=if({0,1},4,9),返回9,我想问的是,为什么{0,1}可以作为判 ...
{0,1}是一个常量数组,0代表FALSE ,1代表TRUE,因为是已回车结束所以只按普通公式判断第一个0的判断值,如果选中两个单元格横向的,已CTRL+SHIFT+回车结束则这两个单元格得到的值为9和4(数组公式)

想问大家一下用excel,输入1:2怎么输?为什么我输完变成了1:02?
默认情况下 冒号是时间的分隔符 你输入1:2 ,默认下计算机excle认为你输入的是1:02:00 选中你需要输入的区域,点右键,设置单元格格式 将单元格格式设置成文本型

我想问一下手机不能发信息是什么原因
2、检查是否使用第三方短信App第三方短信App可能存在兼容性原因,建议使用系统自带短信App。进入设置--应用与权限--权限管理--权限--默认应用设置--信息,设置为信息。3、查看短信中心号码设置是否正确进入设置--应用与权限--系统应用设置--信息--更多设置--短信中心号码,如果不知道当地短信中心号码,请...

您好,我想问一下为什么我的招商银行的卡取款之后短信没有提示余额多少啊...
若您的一卡通已经开通账务变动通知服务功能,可以通过手机银行“修改”的方式进行余额提醒的设置,设置后T+1生效;路径1:我的频道-银行卡(头像下方)-选择卡-更多功能-招行短信服务;路径2:在首页直接搜索“短信”,点击“招行短信服务”后根据提示进行操作。(应答时间:2022年3月28日,最新业务变动请...

你好,我想问下为什么001表示1,010表示2?是有什么规律或者其他?
这是二进制的表示。二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统。

你好,我想问一下为什么我手机上的相册显示不出来啊,照片没删啊,我的...
1、重启手机以及检测手机系统版本、相册版本是否为最新的,若可检测到新的版本,可更新后体验;2、备份数据后进入设置--应用与权限\/更多设置--应用管理—点击右上角 --显示系统进程--相册--存储,进入清除下数据,然后使用看看。3、进入vivo官网\/vivo商城APP--我的--在线客服或者vivo官网网页版--下滑...

我想问一下手机怎么录屏,这样做
,在屏幕录制时,可以录制声音。录屏文件存储路径:进入相册--录屏--打开该录屏,点击右上角“!”,可查看存储路径。注意事项:部分机型在录屏时播放音乐或视频,会中断;上下折叠屏机型暂不支持录屏外屏。更多使用疑惑可进入vivo官网--我的--在线客服--输入人工,咨询在线客服反馈。

...未知量是不是可以随便设,比如第一小题我设1,0,0;1,1,2;0,0,3...
是的,除了线性无关之外,有时候尽量取一些整数,确保解出的基础解系中,向量的分量都是整数,需要凑一凑。

c语言 输入1 2 3 4 5 0回车输出结果为6566456我想问它一步步算的...
4.输入4时,switch语句中没有相对应的case,所以执行default,结果s+1=5;5.输入5时,switch语句中没有相对应的case,所以执行default,结果为s+1=6;6.输入0退出while循环,因为之前输入数都大于0,所以会循环执行 \/ scanf("%d",&s);while(s>0){ switch(s){ case 1: printf("%d",s+5);cas...

word怎么设置下划线?
第2步与第三步差别在于第2步应用于整篇文档,第3步应用于插入点之后。这样,做两次首页不同以后,页码从第三页开始从1编号,完成。问:WORD页眉自动出现一根直线,请问怎么处理?答:格式从“页眉”改为“清除格式”,就在“格式”快捷工具栏最左边;选中页眉文字和箭头,格式-边框和底纹-设置选无问:页眉一般是---,上面...