这是在大一学C语言for循环的时候突发奇想做的一个日期计时器。主要知识就是嵌套for循环的应用。
实现效果:
输入起始时间:
开始计时后时间每秒刷新一次:
下面是正计时的源码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("color 2");//设置字体颜色
//小写字母开头的变量为用户输入的计时起始时间
int minute,second,hour,day,month,year,Second,Minute,Hour,Day,DAY,Month,Year;
printf("请输入开始时间(年数,月数,天数,小时数,分钟数和秒数):");
scanf("%d,%d,%d,%d,%d,%d",&year,&month,&day,&hour,&minute,&second);
for(Year=year; Year>=0; Year++)
{
for(Month=month; Month>=0&&Month<=12; Month++)
{
//对不同月份设置不同的上限天数DAY
if(Month==1||Month==3||Month==5||Month==7||Month==8||Month==10||Month==12) DAY=31;
else if(Month==4||Month==6||Month==9||Month==11) DAY=30;
else if(Month==2&&Year%4==0) DAY=29;
else if(Month==2&&Year%4!=0) DAY=28;
for(Day=day; Day>=0&&Day<=DAY; Day++)
{
for(Hour=hour; Hour>=0&&Hour<=23; Hour++)
{
for(Minute=minute; Minute>=0&&Minute<=59; Minute++)
{
for(Second=second; Second>=0&&Second<=59; Second++)
{
printf("正在计时:%d年%d月%d日%d时%d分%d秒",Year,Month,Day,Hour,Minute,Second);
Sleep(1000); //暂停1000毫秒,即1秒
system("cls"); //清屏
}
second=0; //走完0-59秒,归零
}
minute=0;
}
hour=0;
}
day=1;
}
month=1;
}
return 0;
}
日期反计时也顺手做了,思路是一样的,只需要在正计时的基础上修改某些参数。下面是反计时的源码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("color 1e");//设置字体和背景颜色
//小写字母开头的变量为用户输入的计时起始时间
int second,minute,hour,day,month,year,Second,Minute,Hour,Day,Month,Year,DAY;
printf("请输入开始时间(年数,月数,天数,小时数,分钟数和秒数):");
scanf("%d,%d,%d,%d,%d,%d",&year,&month,&day,&hour,&minute,&second);
for(Year=year; Year>=0; Year--)
{
for(Month=month; Month>=1&&Month<=12; Month--)
{
//注意这里的DAY对应的是前一个月的:当本月的天数减为0后,为前一个月的DAY赋值。
if(Month==2||Month==4||Month==6||Month==8||Month==9||Month==11||Month==1) DAY=31;
if(Month==5||Month==7||Month==10||Month==12) DAY=30;
if(Month==3&&Year%4==0) DAY=29;
if(Month==3&&Year%4!=0) DAY=28;
for(Day=day; Day>=1&&Day<=DAY; Day--)
{
for(Hour=hour; Hour>=0&&Hour<=24; Hour--)
{
for(Minute=minute; Minute>=0&&Minute<=60; Minute--)
{
for(Second=second; Second>=0&&Second<=60; Second--)
{
printf("正在倒计时:%d年%d月%d日%d时%d分%d秒",Year,Month,Day,Hour,Minute,Second);
Sleep(1000); //暂停1000毫秒,即1秒
system("cls"); //清屏
}
second=59; //秒数减至0后,重新设置为59,为下一分钟循环的时间。
}
minute=59;
}
hour=23;
}
day=DAY;
}
month=12;
}
printf("\n倒计时结束");
return 0;
}
拓展:
可以加入更精准的毫秒:
只需要在最里面的循环加入以下代码:
for(HM=hm; HM>=0&&HM<=10; HM--)
{
system("cls");
printf("%d年%d月%d日%d时%d分%d.%d秒",Year,Month,Day,Hour,Minute,Second,HM);
Sleep(100);
}
hm=9;