/* 电子时钟程序 */
/* 【自学去】网站收集 http://www.zixue7.com */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
typedef struct
{
int x;
int y;
}Point;
time_t now;
struct tm *pt,t1,t2;
int printpoint(Point p)
{
Point p1;
p1.x=p.x+2; p1.y=p.y+4;
gotoxy(p1.x,p1.y); printf("%c%c",2,2);
gotoxy(p1.x, p1.y+1); printf("%c%c",2,2);
p1.y+=4;
gotoxy(p1.x,p1.y); printf("%c%c",2,2);
gotoxy(p1.x,p1.y+1); printf("%c%c",2,2);
return 0;
}
int print0(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i==0||i==12)
printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else
printf("%c%4s%c",2," ",2);
}
return 0;
}
int print1(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
printf("%5s%c"," ",2);
}
return 0;
}
int print2(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i==0||i==6||i==12)
printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else if(i>0&&i<6)
printf("%5s%c"," ",2);
else
printf("%c",2);
}
return 0;
}
int print3(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i==0||i==6||i==12)
printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else
printf("%5s%c"," ",2);
}
return 0;
}
int print4(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i<6) printf("%c%4s%c",2," ",2);
else if(i==6)
printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else printf("%5s%c"," ",2);
}
return 0;
}
int print5(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i==0||i==6||i==12)
printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else if(i>0&&i<6)
printf("%c",2);
else
printf("%5s%c"," ",2);
}
return 0;
}
int print6(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i==0||i==6||i==12)
printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else if(i>0&&i<6)
printf("%c",2);
else
printf("%c%4s%c",2," ",2);
}
return 0;
}
int print7(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i==0) printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else printf("%5s%c"," ",2);
}
return 0;
}
int print8(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i==0||i==6||i==12)
printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else printf("%c%4s%c",2," ",2);
}
return 0;
}
int print9(Point p)
{
int i=0;
for(;i<13;i++)
{
gotoxy(p.x+1, p.y+i);
if(i==0||i==6||i==12)
printf("%c%c%c%c%c%c",2,2,2,2,2,2);
else if(i>0&&i<6)
printf("%c%4s%c",2," ",2);
else
printf("%5s%c"," ",2);
}
return 0;
}
int clear(Point p)
{
int i=0;
for(;i<13;i++)
gotoxy(p.x,p.y+i); printf("%16s"," ");
return 0;
}
int printtime(Point p, int n)
{
int a,b;
Point pp;
a=n/10, b=n%10;
pp.x=p.x+8, pp.y=p.y;
switch(a)
{
case 0: print0(p); break;
case 1: print1(p); break;
case 2: print2(p); break;
case 3: print3(p); break;
case 4: print4(p); break;
case 5: print5(p); break;
}
switch(b)
{
case 0: print0(pp); break;
case 1: print1(pp); break;
case 2: print2(pp); break;
case 3: print3(pp); break;
case 4: print4(pp); break;
case 5: print5(pp); break;
case 6: print6(pp); break;
case 7: print7(pp); break;
case 8: print8(pp); break;
case 9: print9(pp); break;
}
return 0;
}
int main()
{
Point phour, pmin, psec,point1,point2;
phour.x=9, pmin.x=32, psec.x=55;
phour.y=pmin.y=psec.y=7;
point1.x=25, point2.x=49;
point1.y=point2.y=7;
clrscr();
textbackground(YELLOW); /* 设置背景颜色*/
textcolor(RED); /* 设置数字显示颜色*/
now=time(0);
pt=localtime(&now);
t1=*pt;
printtime(phour, t1.tm_hour);
printpoint(point1);
printtime(pmin, t1.tm_min);
printpoint(point2);
printtime(psec, t1.tm_sec);
while(1)
{
now=time(0);
pt=localtime(&now);
t2=*pt;
if(t2.tm_sec!=t1.tm_sec)
{
t1=t2;
clrscr();
printtime(phour, t1.tm_hour);
printpoint(point1);
printtime(pmin, t1.tm_min);
printpoint(point2);
printtime(psec, t1.tm_sec);
}
if(bioskey(1)==0) continue;
else exit(0);
}
return 0;
}
c语言电子时钟程序 zip
需积分: 0 186 浏览量
更新于2024-05-23
收藏 13KB ZIP 举报
在C语言中实现一个电子时钟程序是一项基础且有趣的编程任务,它可以帮助初学者更好地理解C语言的基础知识,如输入/输出操作、时间处理以及循环结构。本项目中,我们将会探讨以下几个关键知识点:
1. **标准库函数的使用**:
C语言中的`<stdio.h>`库提供了输入/输出功能,例如`printf`用于打印输出,`scanf`用于用户输入。而`<time.h>`库包含了处理时间的相关函数,如`time()`、`localtime()`和`strftime()`。
2. **获取当前时间**:
`time(NULL)`函数用于获取当前系统时间,返回的是一个表示自1970年1月1日以来的秒数的`time_t`类型值。
3. **转换为可读格式**:
获取到的时间戳可以通过`localtime()`函数转化为本地时间的结构体`struct tm`,这个结构体包含了小时、分钟、秒等信息。
4. **格式化输出时间**:
使用`strftime()`函数可以将`struct tm`结构体中的时间信息格式化为指定的字符串,例如"HH:MM:SS"格式。
5. **循环结构**:
为了实现持续显示时间,我们需要使用循环结构,如`while`或`for`循环。程序会不断地更新时间并输出,直到用户手动停止。
6. **控制台刷新**:
在C语言中,为了让用户在不刷新整个屏幕的情况下看到时间的实时变化,可以使用`fflush(stdout)`或者在某些系统上使用`system("cls")`(清屏)和`system("pause")`(暂停)命令。
7. **错误处理**:
在编写程序时,考虑错误处理是必要的。例如,如果`time()`函数失败,或者`strftime()`无法格式化时间,程序应该有适当的错误处理机制。
8. **结构与指针**:
`struct tm`是一个结构体,可以使用指针操作来减少内存拷贝,提高效率。例如,`&my_time`就是指向`my_time`结构体的指针。
9. **编译与运行**:
了解如何使用编译器(如GCC)将源代码编译为可执行文件,并通过命令行运行该程序。
10. **调试技巧**:
使用`printf`语句进行调试,观察程序运行过程中的变量状态,找出可能存在的问题。
通过完成这个C语言电子时钟程序,你可以深入学习到C语言的基本语法、时间处理以及程序设计的基本思路。这是一个很好的实践项目,可以帮助你在实际编程中巩固理论知识,提高解决问题的能力。同时,也可以尝试拓展此程序,比如添加日期显示、定时闹钟功能等,以提升编程技能。
华画花
- 粉丝: 488
- 资源: 24
最新资源
- 学习java的多态之接口代码.zip
- 用python编写的一个敏感信息扫描工具
- C++实现的一个管理系统源码.zip
- 机械设计弹簧圈自动分选装盒设备creo5.0非常好的设计图纸100%好用.zip
- c#管理系统小实例源码+数据库库文件(SqlServer)
- 机械设计大产能易撕贴胶纸机sw18非常好的设计图纸100%好用.zip
- 机械设计氮气弹簧装配线sw18可编辑非常好的设计图纸100%好用.zip
- Nacos架构和原理介绍,出自阿里团队
- 机械设计电芯厚度测试仪sw18非常好的设计图纸100%好用.zip
- Spring Boot综合项目瑞吉外卖
- 视频目标检测zzzzzzz
- 基于java+ssm+mysql+vue的公交车信息管理系统开题报告.docx
- 基于java+ssm+mysql的OA办公系统开题报告.docx
- 文字生成图片-可灵1.6
- 基于java+ssm+mysql的毕业设计选题系统任务书.docx
- 机械设计斗山220LM数控车床sw16可编辑非常好的设计图纸100%好用.zip