[C语言] 制作一个控制台的电子时钟

使用c语言制作一个控制台的电子时钟

学习了c语言基本语法后,在学习了time.h的库文件,让我产生了想制作一款电子时钟的念头,那好就开始动手操作吧。

使用到下面这些技术:

首先必须先导入库
/***************** 实时数字时钟(和计算机系统时间关联) **************
#include <time.h>  -- 必须的时间函数头文件
time_t -- 时间类型(time.h 定义)
struct tm -- 时间结构,time.h 定义如下:(依需求选用)
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
time(&rawtime); -- 获取时间,以秒计,从1970年1月一日起算,存于rawtime
				-- 获取到当前的秒数,参数为0则函数返回值即为结果
localtime(&rawtime); -- 转为当地时间,tm 时间结构
system("cls");--命令行清屏

获取坐标的代码如下

#include <windows.h>
void gotoxy(int x,int y)	//光标定位函数,需要包含windos.h头文件
{
    COORD coord;
    coord.X=x;
    coord.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}

源代码:


#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
void gotoxy(int x,int y)	//光标定位函数,需要包含windos.h头文件
{
    COORD coord;
    coord.X=x;
    coord.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
void dians(){
	int x=8;
	gotoxy(x*3,8);
	printf(" **");
	gotoxy(x*3,9);
	printf(" **");
	gotoxy(x*3,11);
	printf(" **");
	gotoxy(x*3,12);
	printf(" **");
	
	gotoxy(x*6,8);
	printf(" **");
	gotoxy(x*6,9);
	printf(" **");
	gotoxy(x*6,11);
	printf(" **");
	gotoxy(x*6,12);
	printf(" **");
}
void draw_numb(int x,int shu){ //判断0-9的数据,通过gotoxy显示出来 
	if(shu==0){
			gotoxy(x,6);
			printf("*****");
			gotoxy(x,7);
			printf("*   *");
			gotoxy(x,8);
			printf("*   *");
			gotoxy(x,9);
			printf("*   *");
			gotoxy(x,10);
			printf("*   *");
			gotoxy(x,11);
			printf("*   *");
			gotoxy(x,12);
			printf("*   *");
			gotoxy(x,13);
			printf("*   *");
			gotoxy(x,14);
			printf("*****");
	}
	if(shu==1){
			gotoxy(x,6);
			printf("  *  ");
			gotoxy(x,7);
			printf("  *  ");
			gotoxy(x,8);
			printf("  *  ");
			gotoxy(x,9);
			printf("  *  ");
			gotoxy(x,10);
			printf("  *  ");
			gotoxy(x,11);
			printf("  *  ");
			gotoxy(x,12);
			printf("  *  ");
			gotoxy(x,13);
			printf("  *  ");
			gotoxy(x,14);
			printf("  *  ");
	}
	if(shu==2){
			gotoxy(x,6);
			printf("*****");
			gotoxy(x,7);
			printf("    *");
			gotoxy(x,8);
			printf("    *");
			gotoxy(x,9);
			printf("    *");
			gotoxy(x,10);
			printf("*****");
			gotoxy(x,11);
			printf("*    ");
			gotoxy(x,12);
			printf("*    ");
			gotoxy(x,13);
			printf("*    ");
			gotoxy(x,14);
			printf("*****");
	}
	if(shu==3){
			gotoxy(x,6);
			printf("*****");
			gotoxy(x,7);
			printf("    *");
			gotoxy(x,8);
			printf("    *");
			gotoxy(x,9);
			printf("    *");
			gotoxy(x,10);
			printf("*****");
			gotoxy(x,11);
			printf("    *");
			gotoxy(x,12);
			printf("    *");
			gotoxy(x,13);
			printf("    *");
			gotoxy(x,14);
			printf("*****");
	}
	if(shu==4){
			gotoxy(x,6);
			printf("*   *");
			gotoxy(x,7);
			printf("*   *");
			gotoxy(x,8);
			printf("*   *");
			gotoxy(x,9);
			printf("*   *");
			gotoxy(x,10);
			printf("*****");
			gotoxy(x,11);
			printf("    *");
			gotoxy(x,12);
			printf("    *");
			gotoxy(x,13);
			printf("    *");
			gotoxy(x,14);
			printf("    *");
	}
	if(shu==5){
			gotoxy(x,6);
			printf("*****");
			gotoxy(x,7);
			printf("*    ");
			gotoxy(x,8);
			printf("*    ");
			gotoxy(x,9);
			printf("*    ");
			gotoxy(x,10);
			printf("*****");
			gotoxy(x,11);
			printf("    *");
			gotoxy(x,12);
			printf("    *");
			gotoxy(x,13);
			printf("    *");
			gotoxy(x,14);
			printf("*****");
	}
	if(shu==6){
			gotoxy(x,6);
			printf("*****");
			gotoxy(x,7);
			printf("*    ");
			gotoxy(x,8);
			printf("*    ");
			gotoxy(x,9);
			printf("*    ");
			gotoxy(x,10);
			printf("*****");
			gotoxy(x,11);
			printf("*   *");
			gotoxy(x,12);
			printf("*   *");
			gotoxy(x,13);
			printf("*   *");
			gotoxy(x,14);
			printf("*****");
	}
	if(shu==7){
			gotoxy(x,6);
			printf("*****");
			gotoxy(x,7);
			printf("    *");
			gotoxy(x,8);
			printf("    *");
			gotoxy(x,9);
			printf("    *");
			gotoxy(x,10);
			printf("    *");
			gotoxy(x,11);
			printf("    *");
			gotoxy(x,12);
			printf("    *");
			gotoxy(x,13);
			printf("    *");
			gotoxy(x,14);
			printf("    *");
	}
	if(shu==8){
			gotoxy(x,6);
			printf("*****");
			gotoxy(x,7);
			printf("*   *");
			gotoxy(x,8);
			printf("*   *");
			gotoxy(x,9);
			printf("*   *");
			gotoxy(x,10);
			printf("*****");
			gotoxy(x,11);
			printf("*   *");
			gotoxy(x,12);
			printf("*   *");
			gotoxy(x,13);
			printf("*   *");
			gotoxy(x,14);
			printf("*****");
	}
	if(shu==9){
			gotoxy(x,6);
			printf("*****");
			gotoxy(x,7);
			printf("*   *");
			gotoxy(x,8);
			printf("*   *");
			gotoxy(x,9);
			printf("*   *");
			gotoxy(x,10);
			printf("*****");
			gotoxy(x,11);
			printf("    *");
			gotoxy(x,12);
			printf("    *");
			gotoxy(x,13);
			printf("    *");
			gotoxy(x,14);
			printf("*****");
	}	
}
void draws(char wei,int shu){//这里定义了6个位置 分别是小时的个位十位,分钟的个位十位和秒钟的个位十位 
int x=8;
		if(wei=='1'){
			draw_numb(x*1,shu);	//这里调用了 draw_numb函数吧x*1是横坐标(也表示第几个位置数),shu是要显示的数据调过去 
		}						//x*1表示第一个位置 
		if(wei=='2'){
			draw_numb(x*2,shu);
		}
		if(wei=='3'){
			draw_numb(x*4,shu);
		}
		if(wei=='4'){
			draw_numb(x*5,shu);
		}
		if(wei=='5'){
			draw_numb(x*7,shu);
		}
		if(wei=='6'){
			draw_numb(x*8,shu);
		}		
}
int main()
{	system("color 1b"); 
    struct tm *curtime; 	//结构tm,结构指针curtime,time.h中定义
    time_t t;         		//时间类型变量t,time.h中定义
    clock_t start;			//结构clock_t,结构变量start,time.h中定义
    
    double th_hour,th_min,th_sec;
    do
    {	dians();
        t=time(0);							//获取到当前的秒数,参数为0则函数返回值即为结果
        curtime=localtime(&t);				//得到当前系统时间/
        if((double)curtime->tm_hour<=12)	//午前的处理/
		{	gotoxy(5,3);
			
            printf("AM ");
            //if((double)curtime->tm_hour<10) draws('1',0);   //十点之前在小时数前加零
            draws('1',((int)curtime->tm_hour)/10);
            draws('2',((int)((double)curtime->tm_hour))%10);
		}
        else								//午后的处理
		{	gotoxy(5,3);
			printf("PM ");
            //if((double)curtime->tm_hour-12<10) draws('1',0);//输入0 
            draws('1',(int)curtime->tm_hour/10);
            draws('2',((int)((double)curtime->tm_hour))%10);
		}
        if((double)curtime->tm_min<10) draws('3',0);
        draws('3',(int)curtime->tm_min/10);
        draws('4',(int)curtime->tm_min%10);
        if((double)curtime->tm_sec<10) draws('5',0);
        draws('5',(int)curtime->tm_sec/10);
        draws('6',(int)curtime->tm_sec%10);
        start=clock();
        while(clock()-start<500);  //等待延时1000ms
        system("cls");
    }while(!kbhit());				//按任一键退出   
    return 0;}

最后运行截图(完美运行)
在这里插入图片描课件述
**

是不是满满的成就感! 好了今天就分享到这了。

**

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值