当前位置:崇尚新闻网 > 独家 > 正文

万年历代码 C语言实现万年历(完整源码)

导语:万年历的C语言实现 各位~ 最近看到之前写的代码——万年历 拿出来修改一下,分享给大家 有兴趣可以试试 这是程序运行图,一个完整的日历,可以显示实时的日期、月份和年份,日期定位到今天用方括号,用箭头键查看任意年份和月份的日历。 使用的知识点有:1。数组;2.头文件中系统时间的操作;3.键盘信息与计算机的交互。强调一点:这么小的项目级程序,整个项目框架的构建很重要,就是整个逻辑思维很重要,切记!!

万年历的C语言实现

各位~

最近看到之前写的代码——万年历

拿出来修改一下,分享给大家

有兴趣可以试试

这是程序运行图,一个完整的日历,可以显示实时的日期、月份和年份,日期定位到今天用方括号,用箭头键查看任意年份和月份的日历。

使用的知识点有:1。数组;2.头文件中系统时间的操作;3.键盘信息与计算机的交互。强调一点:这么小的项目级程序,整个项目框架的构建很重要,就是整个逻辑思维很重要,切记!!!

为了方便大家学习,我给出了整个源代码。这一次不用问有没有源代码。都在下面,在代码的关键点给出了注释。希望你能用慢慢学到的东西培养自己做项目的意识。无论大小,我保证,只有你自己真的做到了,你才能感受到那种成就感。

"

源代码的完整版本:

#include &lt。stdio.h&gt。

#include &lt。conio.h&gt。

#include &lt。windows.h&gt。

#包含“time.h”

int键;

整数年、月;

Intmon [2] [13] = {{0,31,28,31,30,31,31,30,31,30,31,31,31},/*定义每月的天数*/

{ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };

time _ t lt

Int showtime() /*显示系统时间*/

{

lt =时间(NULL);

Printf("周/月/日时间年n ");

printf(" %s ",ctime(& lt;));/*以字符串形式输出系统时间*/

}

Int nowyear() /*系统年份*/

{

struct tm * local

lt =时间(NULL);

local = local time(& lt;);

返回本地->;TM _ year+1900;/*系统年份从1900年到0年计算*/

}

Int nowmonth() /*系统月*/

{

struct tm * local

lt =时间(NULL);

local = local time(& lt;);

返回本地->;TM _ mon+1;

}

Int nowday() /*系统是哪天*/

{

struct tm * local

lt =时间(NULL);

local = local time(& lt;);

返回本地->;tm _ mday

}

Int getkey1(int year,int key) /*检测键盘的上下箭头键*/

{

如果(72 ==键)/*向上箭头键代码是72*/

{

year++;

}

否则,如果(80 ==键)/*向下键代码是80*/

{

年份-;

}

返回年份;

}

Int getkey2(int month,int key) /*检测键盘的左右方向键*/

{

If (77 == key) /*右向键码是77*/

{

month++;

}

否则,如果(75 ==键)/*左方向键代码是75*/

{

月-;

}

返回月份;

}

Int isleap(int year) /*判断是不是闰年*/

{/*被4整除但不能被100整除的闰年*/

int leap/*除以400是闰年*/

leap =((year % 4 = = 0)amp;& amp(年% 100!= 0)| |(year % 400 = = 0));

返回跳跃;

}

Int是星期(int year,int month,int day)/*确定星期几*/

{

int i,j,week

int all day = 0;

for(I = 0;i &lt。年份;i++)

{

If (1 = = islap (I))/*闰年有366天*/

{

all day = all day+366;

}

其他

{

all day = all day+365;/*非闰年有365天*/

}

}

for(j = 1;j &lt。月份;j++)

{

all day = all day+mon[is leap(year)][j];

}

all day = all day+day;

week =(all day-1)% 7;/*计算一周中的某一天,周日到周六为0到6*/

返回周;

}

Int showdata() /*显示系统月份的日历*/

{

int i,z;

int j = 0;

printf(" n ");

Printf(" %d year %d month n ",nowyear(),now month());

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * n”);

《Fri周六周日》;

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * n”);

z = isweek(nowyear(),nowmonth(),1);

for(I = 0;i &lt。z;i++)

{

printf(" ");

}

for(I = 0;i &lt。mon[is leap(now year())][now month()];i++)

{

if((I = = now day()-1)amp;& amp(i & lt9)) /*今天标记系统时间[] */

{

printf(" [%d]",I+1);

}

else if (i == nowday() - 1)

{

printf(" [%2d]",I+1);

}

else if (i == nowday())

{

printf("%5d ",I+1);

}

其他

{

printf("%6d ",I+1);

}

if((0 = =(z+I+1)% 7)amp;& amp((i + 1)!= mon[is leap(now year())][now month()]))

{/*每7天更换一次线路*/

j++;

printf(" n ");

}

}

If (j == 3) /*将提示保持在同一行*/

{

printf(" nnnn ");

}

if (j == 4)

{

printf(" nnn ");

}

if (j == 5)

{

printf(" nn ");

}

Printf("按方向键进入查询状态");

}

Int checkdata() /*显示要查询的月份日历*/

{

int i,z;

int j = 0;

printf(" nnn ");

Printf(" %d年%d月n ",年,月);

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * n”);

《Fri周六周日》;

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * n”);

z = isweek(年、月、1);

for(I = 0;i &lt。z;i++)

{

printf(" ");

}

for(I = 0;i &lt。mon[is leap(year)][month];i++)

{

printf("%6d ",I+1);

if((0 = =(z+I+1)% 7)amp;& amp((i + 1)!= mon[isleap(year)][month])

{

j++;

printf(" n ");

}

}

If (j == 3) /*将提示保持在同一行*/

{

printf(" nnnn ");

}

if (j == 4)

{

printf(" nnn ");

}

if (j == 5)

{

printf(" nn ");

}

Printf("按上下箭头键查询年份,按左右箭头键查询月份n ");

Printf("按ESC键返回系统时间");

}

Int reno() /*刷新系统时间和日历*/研究组(594089997)

{

while(!Kbhit()) /*键盘没有输入时循环*/

{

show time();/*显示时间*/

show data();/*显示挂历*/

睡眠(1000);/* 1秒延迟*/

系统(“cls”);/*清除屏幕*/

}

}

Int str() /*检测键盘并显示要查询的月份日历*/

{

year = now year();/*将年和月初始化为系统时间*/

month = now month();

printf(" nn ");

key = 0;/*初始化密钥记录*/

而(27!=键)/*未按下ESC时循环*/

{

year = getkey1(year,key);/*将键值传递给年和月*/

month = getkey2(month,key);

if(月>;12)

{/* 12个月后加一年*/

month = month % 12

year = year+1;

}

if(月& lt1) /*一年前,不到一月*/

{

月=月+12;

year = year-1;

}

系统(“cls”);/*清除屏幕*/

check data();

getch();/*键盘输入*/

key = getch();

}

}

Int main(void) /*主函数*/

{

While (1) /*无限循环*/

{

Reno();

str();

系统(“cls”);

}

返回0;

}

"

免责申明:以上内容属作者个人观点,版权归原作者所有,不代表崇尚新闻网立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
当前文章地址:https://www.csxming.com/dujia/401752.html 感谢你把文章分享给有需要的朋友!
上一篇:中国民航大学教务处 中国民用航空局直属高等学府——中国民航大学 下一篇: 阿尔茨海默病 阿尔茨海默病是怎么发生的?