本来是要ESC停止,Q暂停,R继续,但为什么这个程序在暂停之后,除了ESC任何键都能继续运行

SharvInCDSN 2015-01-04 10:10:19
#include<iostream>
using namespace std;
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#define ESC 0x1b
#define Q 0x71
#define R 0x72
void loop (void);
int main()
{
loop();
return 0;
}
void loop(void)
{
int w,seed=1;
char i,j;
while(1)
{
if(kbhit()==0)
{
srand(seed);
w=rand()%100;
cout<<w<<endl;
seed=rand()+time(NULL)%1000;
Sleep(100); //产生随机数
}
else
{
i=getch();
if(i==ESC) //ESC停止
exit(0);
else if(i==Q)
{
if(w<=50)
cout<<"小"<<endl;
else
cout<<"大"<<endl;
j=getch(); //Q 暂停
if(j==R)//R继续
loop();
else if(j==ESC) //ESC停止
exit(0);
}
}
...全文
166 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
纵横车 2015-01-05
  • 打赏
  • 举报
回复
引用 2 楼 SharvInCDSN 的回复:
[quote=引用 1 楼 a1193561652 的回复:] 把格式写好,最下面if(j==R)......else if(j==ESC)部分后面没有没有else,就是输入其他字符就是什么都不做结束本次循环,然后继续下次while循环。
那else 加什么呢?[/quote] 在j=getchar()......if(j==R)........else if(j==ESC)这部分的外面加一个while循环吧。按了一个其他的键后什么都不做,然后继续j=gatchar()等待字符输入。 另外看你的程序,是按R之后又调用一个loop()函数,为什么不直接继续执行本次的loop()函数呢?
赵4老师 2015-01-05
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
SharvInCDSN 2015-01-05
  • 打赏
  • 举报
回复
引用 1 楼 a1193561652 的回复:
把格式写好,最下面if(j==R)......else if(j==ESC)部分后面没有没有else,就是输入其他字符就是什么都不做结束本次循环,然后继续下次while循环。
那else 加什么呢?
SharvInCDSN 2015-01-05
  • 打赏
  • 举报
回复
引用 4 楼 a1193561652 的回复:
[quote=引用 2 楼 SharvInCDSN 的回复:] [quote=引用 1 楼 a1193561652 的回复:] 把格式写好,最下面if(j==R)......else if(j==ESC)部分后面没有没有else,就是输入其他字符就是什么都不做结束本次循环,然后继续下次while循环。
那else 加什么呢?[/quote] 在j=getchar()......if(j==R)........else if(j==ESC)这部分的外面加一个while循环吧。按了一个其他的键后什么都不做,然后继续j=gatchar()等待字符输入。 另外看你的程序,是按R之后又调用一个loop()函数,为什么不直接继续执行本次的loop()函数呢?[/quote] 谢谢,解决了,我在else后面加了个goto就行了
纵横车 2015-01-04
  • 打赏
  • 举报
回复

把格式写好,最下面if(j==R)......else if(j==ESC)部分后面没有没有else,就是输入其他字符就是什么都不做结束本次循环,然后继续下次while循环。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧