本来是要ESC终止,Q暂停,R继续,但为什么这个程序在暂停之后,除了ESC任何键都能继续运行
本来是要ESC停止,Q暂停,R继续,但为什么这个程序在暂停之后,除了ESC任何键都能继续运行
#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);
}
}
------解决思路----------------------

把格式写好,最下面if(j==R)......else if(j==ESC)部分后面没有没有else,就是输入其他字符就是什么都不做结束本次循环,然后继续下次while循环。
------解决思路----------------------
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
#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);
}
}
------解决思路----------------------
把格式写好,最下面if(j==R)......else if(j==ESC)部分后面没有没有else,就是输入其他字符就是什么都不做结束本次循环,然后继续下次while循环。
------解决思路----------------------
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。