C语言实训万年历源代码.docx
- 文档编号:24993060
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:16
- 大小:16.97KB
C语言实训万年历源代码.docx
《C语言实训万年历源代码.docx》由会员分享,可在线阅读,更多相关《C语言实训万年历源代码.docx(16页珍藏版)》请在冰豆网上搜索。
C语言实训万年历源代码
#include
#include
#include
#include
#include
#defineYEAR365
intnumday[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
intleap(intyear);
intcalday(inty,intm);
intcounterdays(intyear,intmonth,intday);
intweek(intyear,intmonth,intday);
inteachyeartotal(intyear,intmonth,intday);
intmaxDay(inty,intmonth);
voidprint(inty,intm,intw);
voidfestival(intyear,intmonth,intday);
intIsLeap(inty);
intguanli(inti);
voidrili(intyear,intmonth);
intrili1();
voidrili2();
voidrili3();
voidrili4();
voidrili5();
voidfan();
voidshow(intyear,intmonth,intdate,intsec,intmini,inthour);
intmain()
{
inti;
printf("***************************************\n");
printf("1.查询日历,输入年份:
\n");
printf("2.查询该月日历及对应星期,输入年份和月份:
\n");
printf("3.查询星期几及节日,输入年月日:
\n");
printf("4.距您输入日期还有多少天,输入日期:
\n");
printf("5.通过键盘上下控制不同年月日:
\n");
scanf("%d",&i);
guanli(i);
return0;
}
intguanli(inti)
{
switch(i)
{
case1:
rili1();returnmain();
case2:
rili2();returnmain();
case3:
rili3();returnmain();
case4:
rili4();returnmain();
case5:
rili5();returnmain();
}
return0;
}
intrili1()
{
intyear;
intn,i;
printf("输入年份:
");
scanf("%d",&year);
printf("thecalendaroftheyear%d\n",year);
printf("\n");
printf("=============================\n");
for(i=1;i<13;i++)
{
printf("%d月份\n",i);
rili(year,i);
}
n=leap(year);
return0;
}
voidrili2()
{
intyear,month,w;
printf("输入年月:
");
scanf("%d%d",&year,&month);
w=calday(year,month);
print(year,month,w);
}
voidrili3()
{
intyear,month,day,number;
printf("输入年月日:
");
scanf("%d%d%d",&year,&month,&day);
festival(year,month,day);
number=week(year,month,day);
printf("星期%d",number);
}
voidrili4()
{
intyear,month,day;
printf("输入年月日:
");
scanf("%d%d%d",&year,&month,&day);
eachyeartotal(year,month,day);
counterdays(year,month,day);
}
voidrili5()
{
intyear,month,date,sec,mini,hour;
fan();
show(year,month,date,sec,mini,hour);
}
intleap(intyear)
{
intn=(year%4==0&&year%100!
=0||year%100!
=0);
returnn;
}
voidrili(intyear,intmonth)
{
inti,day,first_day,flag,year1,year2;
inttemp=6;
flag=leap(year);
year1=year/100;
year2=year%100;
if(year>2000)
{
year1=year1-20;
day=year1/4;
day+=(YEAR+24)*year1+YEAR*year2+(year2-1)/4;
if(year>2000)
day++;
switch(month)
{
case1:
day;break;
case2:
day+=31;break;
case3:
day+=59+flag;break;
case4:
day+=90+flag;break;
case5:
day+=120+flag;break;
case6:
day+=151+flag;break;
case7:
day+=181+flag;break;
case8:
day+=212+flag;break;
case9:
day+=243+flag;break;
case10:
day+=273+flag;break;
case11:
day+=304+flag;break;
case12:
day+=334+flag;break;
}
day+=temp;
first_day=day%7;
}
else
{
year1=20-1-year;
year2=100-year2-1;
day+=(YEAR+24)*year1+YEAR*year2+year2/4;
switch(month)
{
case12:
day+=31;break;
case11:
day+=61;break;
case10:
day+=92;break;
case9:
day+=122;break;
case8:
day+=153;break;
case7:
day+=184;break;
case6:
day+=214;break;
case5:
day+=245;break;
case4:
day+=275;break;
case3:
day+=306;break;
case2:
day+=334+flag;break;
case1:
day+=365+flag;break;
}
day-=temp;
day=day%7;
first_day=(7-day)%7;
}
switch(month)
{
case1:
case2:
month=28+flag;break;
case3:
case4:
case5:
case6:
case7:
case8:
case9:
case10:
case11:
month=30;break;
case12:
month=31;break;
}
for(i=1;i<4*first_day;i++)
printf("");
for(i=0;i { printf("%4d",i+1); if((first_day+i)%7==6) printf("\n"); } printf("\n"); printf("===============================\n"); } /////////////////////////////////////////////////////////// intcounterdays(intyear,intmonth,intday) { intyear1,days0,days1,month1,days,day1; time_ttimep; structtm*p; time(&timep); p=gmtime(&timep); year1=(1900+p->tm_year); month1=(1+p->tm_mon); day1=(p->tm_mday); days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day); days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1); days=days0-days1; printf("\n今天距%d年%d月%d日还有%d天\n\n",year,month,day,days); returndays; } inteachyeartotal(intyear,intmonth,intday) { inti,sum=0; for(i=1;i { sum+=maxDay(year,i); } sum+=day; returnsum; } intIsLeap(inty) { if(y%4==0&&y%100! =0||y%400==0)return1; elsereturn0; } intmaxDay(inty,intmonth) { inta[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if(IsLeap(y)) a[1]=29; returna[month-1]; } /////////////////////////////////////// voidfestival(intyear,intmonth,intday) { if(month==1&&day==1)printf(",这天是元旦"); if(month==2&&day==14)printf(",这天是情人节"); if(month==3) switch(day) { case8: printf(",这天是妇女节");break; case12: printf(",这天是植树节"); } if(month==1&&day==1)printf(",这天是愚人节"); if(month==5) switch(day) { case1: printf(",这天是劳动节");break; case4: printf(",这天是青年节"); } if(month==6&&day==1)printf(",这天是儿童节"); if(month==7&&day==1)printf(",这天是建党节"); if(month==8&&day==1)printf(",这天是建军节"); if(month==9&&day==10)printf(",这天是教师节"); if(month==10&&day==1)printf(",这天是国庆节"); printf("\n"); } intweek(intyear,intmonth,intday) { intnumber=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day); number=number%7; returnnumber; } ///////////////////////////////////////////// voidprint(inty,intm,intw) { inti,l; printf("Calendar%d-%02d\n",y,m); printf("---------------------\n"); printf("SuMoTuWeThFrSa\n"); printf("---------------------\n"); for(i=0;i printf(""); if(IsLeap(y)) l=1; else l=0; for(i=1;i<=numday[l][m-1];i++) { printf("%-3d",i); w++; if(w%7==0) printf("\n"); } if(w%7)printf("\n"); printf("---------------------\n"); } intcalday(inty,intm) { intd=0,w; while(y>1910) { if(IsLeap(y))d+=366; elsed+=365; y--; } while(m>1) {--m; d+=numday[0][m-1]; } w=(d+1)%7; returnw; } ////////////////////////////////////////// voidshow(intyear,intmonth,intdate,intsec,intmini,inthour) { constcharmonth_str[][4]={"","Jan","Feb","Mar","Apl","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; constintmonth_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; inti,j,wdays,mdays,days; for(i=1,days=0;i { if(leap(i)) { days+=366; } else { days+=365; } } for(i=1;i { if(i==2&&leap(year)) { days+=29; } else { days+=month_day[i]; } } printf("%s.%d.%d%d: %d: %d\n",month_str[month],date,year,hour,mini,sec); printf("一二三四五六日\n"); wdays=days%7; for(j=0;j { printf(""); } if(month==2&&leap(year)) { mdays=29; } else { mdays=month_day[month]; } for(i=1;i<=mdays;i++) { if(i>1&&days%7==0) { printf("\n"); } printf("%4d",i); days=days+1;} printf("\n---------------------------\n\n\n"); } voidfan() { time_trawtime; structtm*info; intyear,month,date,sec,mini,hour; charch; time(&rawtime); info=localtime(&rawtime); year=info->tm_year+1900; month=info->tm_mon+1; date=info->tm_mday; hour=info->tm_hour; mini=info->tm_min; sec=info->tm_sec; while (1) { show(year,month,date,sec,mini,hour); printf("↑......上一年\n\n"); printf("↓......下一年\n\n"); printf("←....前一个月\n\n"); printf("→....后一个月\n\n"); printf("Esc.......退出\n\n"); ch=getch(); switch(ch) { case27: //Ecsexit(0); case-32: //Navigator ch=getch(); if(ch==77) {//Right year+=(month==12)? 1: 0; month=month%12+1; } elseif(ch==75) { year-=(month==1)? 1: 0; month=(month-2+12)%12+1; } elseif(ch==72) year--; elseif(ch==80) year++; system("cls"); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 万年历 源代码