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(x3,8);
printf(“ **”);
gotoxy(x3,9);
printf(“ “);
gotoxy(x*3,11);
printf(“ “);
gotoxy(x3,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(x1,shu); //这里调用了 draw_numb函数吧x1是横坐标(也表示第几个位置数),shu是要显示的数据调过去
} //x1表示第一个位置
if(wei==’2’){
draw_numb(x2,shu);
}
if(wei==’3’){
draw_numb(x4,shu);
}
if(wei==’4’){
draw_numb(x5,shu);
}
if(wei==’5’){
draw_numb(x7,shu);
}
if(wei==’6’){
draw_numb(x8,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;}`
最后运行截图(完美运行)
更多相关文章
- ASP中格式化时间短日期补0变两位长日期的方法
- Qt on Android:将Qt调试信息输出到logcat中
- Android(安卓)JNI 调用
- Android系统源码阅读(10):Android(安卓)应用程序的消息处理机制
- 学习笔记:Android(安卓)SQLite,并实现SQLite基本CRUD操作的Demo
- Android下 读写文件
- 数据存储与ContentProvider
- 实例演示字符串函数
- 写给Android开发者的Kotlin入门