c++如何使程序暂停(非system(“pause”))

qq_34177881 2016-03-05 01:20:27
有没有命令,能通过按键盘上的一个特定键使得程序暂停,再按一次(可以是不同的键)又让程序继续运行呢?
主要我写了一个数论问题的程序,但是要算到的数很大,如果能这样暂停的话就不会影响正常使用电脑了。请各位大神赐教。下面是代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
freopen("友好数.txt","w",stdout);
long long x,y,add,a;
int c=0;
for(x=1;x<18400000000000000000;x++)
{
for(a=1,add=0;a<sqrt(x);a++)
{
if(x%a==0) add=add+a+x/a;
}
y=add-x;
for(a=1,add=0;a<sqrt(y);a++)
{
if(y%a==0) add=add+a+y/a;
}
if(x>=y) continue;
if(x==add-y&&x!=y) {c++;cout<<x<<" "<<y<<"\t"<<"第"<<c<<"对"<<endl;}
}
return 0;
}
如上,是个求友好数的程序。
...全文
1460 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
imkelt 2016-03-08
  • 打赏
  • 举报
回复
std::cin.ignore(); std::cin.get(); 这两个都可以
「已注销」 2016-03-07
  • 打赏
  • 举报
回复
检测键盘状态是 GetKeyState ,会漏消息,getch不漏,只要有过按键都在缓冲区里面
gh_99 2016-03-07
  • 打赏
  • 举报
回复 1

效果如上:

如果可以的话.
代码如下:
辰岡墨竹 2016-03-07
  • 打赏
  • 举报
回复
“如果能这样暂停的话就不会影响正常使用电脑了?” 你用的不是图形界面?不是可以开多个窗口干别的吗? 难道是Linux?Linux的话,可以按Ctrl+Z把进程切到后台,用fg命令再调回来。 DOS的话不行,DOS是单任务的。
lm_whales 2016-03-06
  • 打赏
  • 举报
回复
1)单线程:在程序运行一段时间后检测键盘,有特定键按下,终止运行 ,没有键按下,继续执行 2)多线程: 检测到键盘,挂起 任务线程 3)多线程:任务线程 在程序运行一段时间后,检测终止标志, 是否终止,是终止,否继续运行 主线程或者 专门线程检测键盘。 有特定键按下,设置终止标志。
「已注销」 2016-03-06
  • 打赏
  • 举报
回复
getch 啊
qq_34177881 2016-03-06
  • 打赏
  • 举报
回复
引用 4 楼 lm_whales 的回复:
1)单线程:在程序运行一段时间后检测键盘,有特定键按下,终止运行 ,没有键按下,继续执行 2)多线程: 检测到键盘,挂起 任务线程 3)多线程:任务线程 在程序运行一段时间后,检测终止标志, 是否终止,是终止,否继续运行 主线程或者 专门线程检测键盘。 有特定键按下,设置终止标志。
已经很准确了,谢谢!接下来我去baidu就行了
qq_34177881 2016-03-06
  • 打赏
  • 举报
回复
引用 5 楼 jha334201553 的回复:
getch 啊
好吧
paschen 2016-03-05
  • 打赏
  • 举报
回复
引用 2 楼 qq_34177881 的回复:
[quote=引用 1 楼 paschen 的回复:] 开一个线程在后台监视是否按了某个键
说的好。 然而我还没有学线程。[/quote] 网上大把文章讲到的,楼主可以搜了来看下
qq_34177881 2016-03-05
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
开一个线程在后台监视是否按了某个键
说的好。 然而我还没有学线程。
paschen 2016-03-05
  • 打赏
  • 举报
回复
开一个线程在后台监视是否按了某个键

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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