C++如何实现在规定时间内给一个变量赋值,超过这一时间就不赋值,而是执行下一语句?
比如:#Include<iostream>usingnamespacestd;intmain(){inta=0;cin>>a;cout<<a;}如何实现在程序运行时,如果...
比如:
#Include<iostream>
using namespace std;
int main()
{ int a=0;
cin>>a;
cout<<a;
}
如何实现在程序运行时,如果你5秒钟内没输入一个数给它赋值,那么它就跳过cin>>a;这一语句,直接执行cout<<a;这一语句; 展开
#Include<iostream>
using namespace std;
int main()
{ int a=0;
cin>>a;
cout<<a;
}
如何实现在程序运行时,如果你5秒钟内没输入一个数给它赋值,那么它就跳过cin>>a;这一语句,直接执行cout<<a;这一语句; 展开
3个回答
展开全部
方法:1.选择用其他非柱塞函数,如kbhit()
#include <stdio.h>
#include<iostream>
#include<time.h>
#include<conio.h>
using namespace std;
int main()
{
int a=0;
double start=clock(),tot;
while((tot=clock()-start)<=5000 && !kbhit());
if (tot>5000)
cout<<"time over"<<endl;
else
cin>>a;
cout<<a<<endl;
return 0;
}
方法:2.或者用多线程,用主线程控制另外一个线程
#include <stdio.h>
#include<iostream>
#include<time.h>
#include<conio.h>
using namespace std;
DWORD WINAPI wait_for_msg(LPVOID lp);
int flag=0;
int main()
{
int a=0;
//创建输入线程
LPVOID* lp = (LPVOID*) &a;
HANDLE hThread1;
hThread1 = CreateThread(NULL, 0, wait_for_msg, lp, 0, NULL);
double start=clock();
while((clock()-start<=5000 ||flag==1))
if (flag==2) break;
CloseHandle(hThread1);//终止输入线程
cout<<a<<endl;
return 0;
}
DWORD WINAPI wait_for_msg(LPVOID lp)
{
int *s =(int *)lp;
while(!kbhit());
flag=1;
cin>>*s;
flag=2;
return 0;
}
#include <stdio.h>
#include<iostream>
#include<time.h>
#include<conio.h>
using namespace std;
int main()
{
int a=0;
double start=clock(),tot;
while((tot=clock()-start)<=5000 && !kbhit());
if (tot>5000)
cout<<"time over"<<endl;
else
cin>>a;
cout<<a<<endl;
return 0;
}
方法:2.或者用多线程,用主线程控制另外一个线程
#include <stdio.h>
#include<iostream>
#include<time.h>
#include<conio.h>
using namespace std;
DWORD WINAPI wait_for_msg(LPVOID lp);
int flag=0;
int main()
{
int a=0;
//创建输入线程
LPVOID* lp = (LPVOID*) &a;
HANDLE hThread1;
hThread1 = CreateThread(NULL, 0, wait_for_msg, lp, 0, NULL);
double start=clock();
while((clock()-start<=5000 ||flag==1))
if (flag==2) break;
CloseHandle(hThread1);//终止输入线程
cout<<a<<endl;
return 0;
}
DWORD WINAPI wait_for_msg(LPVOID lp)
{
int *s =(int *)lp;
while(!kbhit());
flag=1;
cin>>*s;
flag=2;
return 0;
}
追答
程序2中要加入#include
展开全部
#include<iostream>
#include<ctime>
#include <conio.h>
using namespace std;
int main(){
time_t now,t_end;
double dif;
double dt=5.0; // 时间间隔5秒
int a=0;
cout << "input a" << endl;
now = time (NULL);
while (!kbhit()){
t_end = time (NULL);
dif = difftime (t_end,now);
if (dif > dt){ cout << "time over" <<endl; goto Lab;};
}
cin>>a;
cout << a << endl;
Lab:;
return 0;
}
#include<ctime>
#include <conio.h>
using namespace std;
int main(){
time_t now,t_end;
double dif;
double dt=5.0; // 时间间隔5秒
int a=0;
cout << "input a" << endl;
now = time (NULL);
while (!kbhit()){
t_end = time (NULL);
dif = difftime (t_end,now);
if (dif > dt){ cout << "time over" <<endl; goto Lab;};
}
cin>>a;
cout << a << endl;
Lab:;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-04-12
展开全部
比如后面是什么?你需要clock(),或者规范一点就<chrono>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询