c语言边运行边倒计时,C语言实现今天倒计时

昨天弄了一个520表白倒计时。

520已经过了,现在来写弄一个今天倒计时,

之前用system("cls")这个清屏,但是每清一次就要闪烁一次,看着就不爽,然后各种百度,现在已经解决屏幕闪烁的问题!

先上一张程序效果图吧,有图有真相!

0818b9ca8b590ca3270a3433284dd417.png

改变字体颜色!

0818b9ca8b590ca3270a3433284dd417.png

这里关于  SetConsoleTextAttribute函数将不作介绍,百度很多,自己百度win32 api。

好了,直接上程序源码吧,很简单的!!!编译环境为Vc++6.0简化版,32M那个。

不能编译的可能原因为 缺少

graphics.h这个头文件,解决很简单,去下载一个来就行!

#include

#include

#include

#include

#include

#include

HANDLE hOut, hIn;

void HideCursor()

{

CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };//后边的0代表光标不可见

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

}

void ClearScreen() //清屏 ps:比cls好,不会闪烁

{

HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);

CONSOLE_SCREEN_BUFFER_INFO sbi;

GetConsoleScreenBufferInfo(hOutput,&sbi);

DWORD len=sbi.dwSize.X*sbi.dwCursorPosition.Y+sbi.dwCursorPosition.X+1;

COORD cd={0,0};

DWORD nw;

FillConsoleOutputCharacter(hOutput,_T(' '),len,cd,&nw);

SetConsoleCursorPosition(hOutput,cd);

}

void timee(){

int h,f,s,i,j,n,k;

time_t timea;

struct tm *p;

time(&timea);

p=localtime(&timea);

h=24-p->tm_hour-1;//距离今天结束最多还有多少个小时

f=60-p->tm_min-1;//

s=60-p->tm_sec;

n=h*3600+f*60+s;

for(;n>=0;n--){

time(&timea);

Sleep(1000);

ClearScreen();

printf("\n\t\t\t现在是:%s",ctime(&timea));

if(n/3600==0){

printf("\n\n\t\t\t离明天还有:\n\n");

printf("\t\t\t%02d小时:%02d分:%02d秒",n/3600,(n%3600)/60,n%60);

printf("\n\n\n\t\t\t今天你都做了些什么?不要虚度光阴!");

}

else{

printf("\n\n\t\t\t离明天还有:\n\n");

printf("\t\t\t%02d小时:%02d分:%02d秒",n/3600,(n%3600)/60,n%60);

printf("\n\n\n\t\t\t时间正在慢慢的流逝!请抓紧时间做有用的事情!!!");

}

printf("\n\n\n\t\t\t\t甩甩制作!");

}

}

int main()

{

int f,s,i,j,n,k;

HANDLE consolehwnd; //创建句柄,详细句柄知识,请百度一下或查MSDN

consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE); //实例化句柄

SetConsoleTextAttribute(consolehwnd, FOREGROUND_GREEN);

//system("color 0A");

SetConsoleTitle( "今天倒计时");

HideCursor();

timee();

return 0;

}

程序不是很完整,可能出现漏洞,比如小时之间更换的时候 分钟,秒钟出现-1,-2,我稍微做了一下改变,不知道这个漏洞解决没有。

待你写出更加完美的程序。

想要实现其它倒计时程序也很简单,,,自己琢磨吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值