1. 秒表计时程序要求(需要用c语言实现)
这里的分段计时,我使用空格键实现的,F2比较麻烦。程序开始,输入回车开始计时,中途输入空格可以开始新的计时,最后输入回车完成计时。
文件存在程序目录下的timeout.txt
真麻烦,下次这种求助才给10分,绝对不做。。。
//////////////////////////
我的代码就是在VS2010下写的。。。怎么会无法编译。。。你要建一个空工程,然后加入C++源文件。
/////////////////////////////
请新建一个空工程,不要新建Win32Console那个工程!
#include<stdio.h>
#include<conio.h>
#include<windows.h>
#include<stdlib.h>
structtm//定义时间结构体,包括时分秒和10毫秒
{
inthours,minutes,seconds;
inthscd;
}time,tmp,total;//time用以计时显示,tmp用以存储上一阶段时间,total记总时间
intcnt;
FILE*fout;
//每次调用update函数,相当于时间过了10ms
voipdate(structtm*t)
{
(*t).hscd++;//10ms单位时间加1
cnt++;
if((*t).hscd==100)//计时满1s,进位
{
(*t).hscd=0;
(*t).seconds++;
}
if((*t).seconds==60)//计时满一分,进位
{
(*t).seconds=0;
(*t).minutes++;
}
if((*t).minutes==60)//计时满一小时,进位
{
(*t).minutes=0;
(*t).hours++;
}
if((*t).hours==24)(*t).hours=0;
//delay();
Sleep(10);//Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms
}
voiddisplay(structtm*t)
{
//此处输出计时结果, 为回车不换行,既一直在同一行更新时间
printf("%d:",(*t).hours);
printf("%d:",(*t).minutes);
printf("%d:",(*t).seconds);
printf("%d ",(*t).hscd);
//printf("Now,press'e'keytostoptheclock...");
}
voidtime_init()//初始化时间
{
time.hours=time.minutes=time.seconds=time.hscd=0;
}
voidget_total()//计算总时间
{
total.hscd=cnt%100;
cnt/=100;
total.seconds=cnt%60;
cnt/=60;
total.minutes=cnt%60;
cnt/=60;
total.hours=cnt;
}
intmain()
{
charm;
time_init();
cnt=0;
fout=fopen("timeout.txt","w");
printf("Now,pressEnterkeytobegintheclock... ");
while(1)
{
m=getch();
if(m!=' ')//读入一个输入,如果是回车,那么跳出次循环
printf("InputError! ");
else
break;
}
printf("Whilecounting,! ");
while(1)
{
if(kbhit())//此处检查是否有键盘输入
{
m=getch();
if(m==' ')//如果等于回车,那么计时结束,跳出循环
break;
elseif(m=='')//如果等于空格,显示此次计时,初始化计时器
{
tmp=time;//记录上一段计时器结果
fprintf(fout,"%d:%d:%d:%d ",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);//写入文件
time_init();
printf(" ");
}
else
{
printf("InputError! ");
}
}
update(&time);//更新计时器
display(&time);//显示计时器时间
}
tmp=time;//输出最后一次即使结果,写入文件
fprintf(fout,"%d:%d:%d:%d ",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total();//计算总的时间,显示,并写入文件
printf(" totaltime:%d:%d:%d:%d ",total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,"totaltime:%d:%d:%d:%d ",total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
getch();
}
2. C语言当中“请按回车键继续”怎么编程
那个不是编程出来的,而是编译器调试时本身的功能,如果想模拟那个效果的话,可以在程序结尾写
getch();
如果没有这个函数,可以写
getchar();
如果还是没用,写
getchar();getchar();
3. 我想用C语言做一个计时器,也就是秒表,按下一个键开始计时,可不可以显示读秒过程都行,可以的话最好,
如果对时间的精度要求是s的话,采用time()即可,该函数的返回值是自1970年1月1日0点0分之后的秒数。
采用getchar函数获取输入字符,然后获取一个time值,等到在输入一个字符后,在获取一次time值,两者相减就是经过的秒数。
4. c语言如何让程序开始计时 如果操作者不进行操作程序就自动停止
使用time()函数。它定义在头文件time.h中
具体使用方法如下:
time_t a,b; //time_t是表示时间的结构体,你可以在time.h中找到它的原型。
a=time(NULL); //表示获取当前的机器时间。
代码段
b=time(NULL); //表示获取当前的机器时间。
a是代码段执行前的时间,b是代码段执行后的时间(单位是秒),那么b-a当然是代码段的执行时间了。输出时,以长整型输出时间。
希望这个解答可以帮到你
5. c语言如何计时
C语言中提供了许多库函数来实现计时功能
下面介绍一些常用的计时函数
1. time()
头文件:time.h
函数原型:time_t time(time_t * timer)
功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的时此刻所经过的秒数
用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。
用difftime函数可以计算两个time_t类型的时间的差值,可以用于计时。用difftime(t2,t1)要比t2-t1更准确,因为C标准中并没有规定time_t的单位一定是秒,而difftime会根据机器进行转换,更可靠。
说明:C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。
2. clock()
头文件:time.h
函数原型:clock_t clock(void);
功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。
说明:可以精确到毫秒,适合一般场合的使用。
3. timeGetTime()
头文件:Mmsystem.h引用库: Winmm.lib
函数原型:DWORD timeGetTime(VOID);
功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。
说明:该函数的时间精度是五毫秒或更大一些,这取决于机器的性能。可用timeBeginPeriod和timeEndPeriod函数提高timeGetTime函数的精度。如果使用了,连续调用timeGetTime函数,一系列返回值的差异由timeBeginPeriod和timeEndPeriod决定。
4. GetTickCount()
头文件:windows.h
函数原型:DWORD WINAPI GetTickCount(void);
功能:返回自设备启动后的毫秒数(不含系统暂停时间)。
说明:精确到毫秒。对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求。
5. QueryPerformanceCounter()、QueryPerformanceFrequency()
头文件:windows.h
函数原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
功能:前者获得的是CPU从开机以来执行的时钟周期数。后者用于获得你的机器一秒钟执行多少次,就是你的时钟周期。
补充:LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定:
在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。
说明:这种方法的定时误差不超过1微秒,精度与CPU等机器配置有关,一般认为精度为透微秒级。在Windows平台下进行高精度计时的时候可以考虑这种方法。
6. gettimeofday()
Linux C函数。
头文件:sys/time.h
函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。
timeval的定义为:
structtimeval{
longtv_sec;//秒数
longtv_usec;//微秒数
}
可见该函数可用于在linux中获得微秒精度的时间。
说明:使用这种方式计时,精度可达微秒。经验证,在arm+linux的环境下此函数仍可使用。
6. 设计一个单片机C语言程序,有两个按键,一个按键摁下,开始计时,另一个按键摁下,停止计时
说下思路啊:首先你要确定你两个键所对应的的io口(注意这两个io口要上拉)接下来你要确定这两个io口没有按键按下去的时候口的状态啊!这样才能扫描出你的那个按键按下去!
接下来就是c语言的处理了
if(key1)
{
flag=1;
}
if(key2)
{
flag=0;
}
你在你的计时里面处理啊!当flag=0时不计时反之计时。。。
7. c语言倒计时程序设计:要求从键盘输入倒计的时间分数和秒数,按“回车键”开始倒计,直到计时时间结束。
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
intmain()
{
intsec;
intmin;
printf("请输入时间:分钟和秒数 ");
scanf("%d%d",&min,&sec);
printf("按回车键开机计时 ");
getchar();
for(min;min>0;min--)
{
for(sec;sec>=0;sec--)
{
Sleep(1);
if(sec==0)
{
sec==60;
break;
}
}
}
printf("计时结束 ");
}
8. C语言,计时器
秒表计时器的代码
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
struct tm //定义时间结构体,包括时分秒和10毫秒
{
int hours,minutes,seconds;
int hscd;
}time,tmp,total; //time用以计时显示,tmp用以存储上一阶段时间,total记总时间
int cnt;
FILE* fout;
//每次调用update函数,相当于时间过了10ms
void update(struct tm *t)
{
(*t).hscd++; //10ms单位时间加1
cnt++;
if ((*t).hscd==100) //计时满1s,进位
{
(*t).hscd=0;
(*t).seconds++;
}
if ((*t).seconds==60) //计时满一分,进位
{
(*t).seconds=0;
(*t).minutes++;
}
if ((*t).minutes==60) //计时满一小时,进位
{
(*t).minutes=0;
(*t).hours++;
}
if((*t).hours==24) (*t).hours=0;
//delay();
Sleep(10); //Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms
}
void display(struct tm *t)
{
//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间
printf("%d:",(*t).hours);
printf("%d:",(*t).minutes);
printf("%d:",(*t).seconds);
printf("%d\r",(*t).hscd);
//printf("Now, press ‘e’ key to stop the clock…");
}
void time_init() //初始化时间
{
time.hours=time.minutes=time.seconds=time.hscd=0;
}
void get_total() //计算总时间
{
total.hscd = cnt % 100;
cnt /= 100;
total.seconds = cnt % 60;
cnt /= 60;
total.minutes = cnt % 60;
cnt /= 60;
total.hours = cnt;
}
int main()
{
char m;
time_init();
cnt = 0;
fout = fopen("timeout.txt","w");
printf("按回车键开始计时!\n");
while(1)
{
m = getch();
if(m != ‘\r’) //读入一个输入,如果是回车,那么跳出次循环
printf("输入错误,仅能输入回车键!\n");
else
break;
}
printf("已经开始计时,但是你可以按回车键以分段计时!\n");
while(1)
{
if(kbhit()) //此处检查是否有键盘输入
{
m=getch();
if(m == ‘\r’) //如果等于回车,那么计时结束,跳出循环
break;
else if(m == ‘ ‘) //如果等于空格,显示此次计时,初始化计时器
{
tmp = time; //记录上一段计时器结果
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); //写入文件
time_init();
printf("\n");
}
else
{
printf("输入错误,仅支持输入回车键或者空格键!\n");
}
}
update(&time); //更新计时器
display(&time); //显示计时器时间
}
tmp = time; //输出最后一次即使结果,写入文件
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total(); //计算总的时间,显示,并写入文件
printf("\n总时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,"统计时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf("已经保存到当前目录下的timeout.txt文件中按任意键结束!");
getch();
}
9. c语言中怎么设置计时器
C语言计时可以用很多方法。
1.
如果是想使用秒级别的技术,可用使用C语言库<time.h>自带的clock()进行计时。如:
#include
<iostream>
#include
<time.h>
using
namespace
std;
int
main()
{
clock_t
start
=
clock();
//do
some
process
here
clock_t
end
=
(clock()
-
start)/CLOCKS_PER_SEC;
cout<<"time
comsumption
is
"<<end<<endl;
}
以上方法只能用于秒级别的计时。
2.如果想使用毫秒级别的计时可以使用2种方法。一种是使用linux的系统库<sys/time.h>,一种是使用CUDA的cutil的库。
A.
如果使用linux的系统库,则可以使用如下方法:
#include
<sys/time.h>
int
main()
{
timeval
starttime,endtime;
gettimeofday(&starttime,0);
//do
some
process
here
gettimeofday(&endtime,0);
double
timeuse
=
1000000*(endtime.tv_sec
-
starttime.tv_sec)
+
endtime.tv_usec
-
startime.tv_usec;
timeuse
/=1000;//除以1000则进行毫秒计时,如果除以1000000则进行秒级别计时,如果除以1则进行微妙级别计时
}
timeval的结构如下:
strut
timeval
{
long
tv_sec;
/*
秒数
*/
long
tv_usec;
/*
微秒数
*/
};
上述方法可以进行微妙级别的计时,当然也可以进行毫秒和秒的计时。
B.
如果可以使用CUDA的话,则可以使用CUDA的sdk里面的cutil库里面的函数。
#include
<cutil.h>
int
main()
{
unsigned
int
timer
=
0;
cutCreatTimer(&timer);//创建计时器
cutStartTimer(&timer);//开始计时
//
do
some
process
here
cutStopTimer(&timer);//停止计时
cout<<"time
is
"<<cutGetTimerValue(&timer)<<endl;//打印时间
}