首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

“秒表”源代码,用C语言编写的,最好Turbo c

2012-03-04 
求助“秒表”源代码,用C语言编写的,最好Turbo c求助“秒表”源代码,用C语言编写的,最好Turboc[解决办法]开始我

求助“秒表”源代码,用C语言编写的,最好Turbo c
求助“秒表”源代码,用C语言编写的,最好Turbo   c

[解决办法]
开始我还以为是件很简单的事情,就随便写了几行代码,居然还满足不了楼主的要求,要在tc下运行,还要有控制功能(我又不想用使用中断),下面的代码居然花费了将近2个小时,现在显示的时间有时候显得慢了一点,估计是在windows下运行的缘故(没有真正对系统获得控制权),把代码贴出来,请高手们看看,看有没有更好的实现方法(不用中断,功能要满足楼主的要求),代码有点长,还没来的及精简,高手们见量!

#include <stdio.h>
#include <dos.h>
#include <conio.h>
int main()
{
unsigned char ch1,ch2,ch,ctrl=1,t_ctrl;
unsigned sec_t=0,min_t=0,hou_t=0;
struct time t1,t2;
clrscr();
gettime(&t1);
printf( "================= Calculagraph ===================\n ");
printf( "\n Begin(b) Zero(z) Stop(s) Exit(e)\n ");
ch1=inportb(0x60); //读取键盘硬件缓冲区数据
while(ctrl)
{

ch2=inportb(0x60);//读取键盘硬件缓冲区数据,两次结果不同说明有输入发生
if(ch1!=ch2)
{
gotoxy(20,7);
ch=getchar();
ch1=inportb(0x60);
}
switch(ch)
{
case 'b ': t_ctrl=1; //控制字符 b---表示开始
break;
case 'z ': sec_t=0; //控制字符 z---表示清零
min_t=0;
hou_t=0;
t_ctrl=0;
gotoxy(20,5);
printf( "%02d:%02d:%02d ",sec_t,min_t,hou_t);
break;
case 's ': t_ctrl=0; //控制字符 s---暂停
break;
case 'e ': return; //控制字符 e---表示推出程序
}
if(t_ctrl)
{
gettime(&t2); //读取系统时间
if(t2.ti_sec!=t1.ti_sec) //比较两次系统时间的秒钟
{
gotoxy(20,5);
printf( "%02d-%02d-%02d ",hou_t,min_t,sec_t);
sec_t++ ;
t1.ti_sec=t2.ti_sec;
if(sec_t==60)
{
min_t++;
sec_t=0;
if(min_t==60)
{
min_t=0;
hou_t++;
if(hou_t==24)
hou_t=0;
}
}
}
}
}
}
以上代码在循环里面嵌套了一个循环,同时还要接收用户命令,又不采用中断,我就直接读取的硬件缓冲区数据来判断是否有键盘输入,不知道大家还有没有别的思路,恳请指点!

热点排行