C语言万年历

编程入门 行业动态 更新时间:2024-10-06 14:37:31

C语言<a href=https://www.elefans.com/category/jswz/34/1752943.html style=万年历"/>

C语言万年历



完整代码如下:


#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
//非标准库控制台I/O
//平年月份表
const int mons[13]={
0,31,28,31,30,31,30,31,31,30,31,30,31}
;
//闰年月份表
const int mons2[13]={
0,31,29,31,30,31,30,31,31,30,31,30,31}
;
//中文星期列表
char *wd[]=
{"周日","周一","周二","周三","周四","周五","周六","unknown"
}
;
//系统当前日期时间
int *nowdatetime()
{char str1[200];char years[10];int *ym=(int*)malloc(2*sizeof(int));time_t dtime;time(&dtime);struct tm *tt;tt=localtime(&dtime);strftime(str1,200,"\n公元%Y年%m月%d日%H时%M分%S秒\n第%W周 第%j天\n",tt);printf(str1);printf("%s",wd[tt->tm_wday]);strftime(years,10,"%Y",tt);*(ym+1)=tt->tm_mon+1;*(ym+0)=atoi(years);return ym;
}
//获得星期几索引
int wday(int year,int mon,int mday)
{struct tm Timestr;Timestr.tm_year=year-1900;Timestr.tm_mon=mon-1;Timestr.tm_mday=mday;Timestr.tm_hour=0;Timestr.tm_min=0;Timestr.tm_sec=1;Timestr.tm_isdst=-1;if(mktime(&Timestr)==-1)return 7;return Timestr.tm_wday;
}
//判断是否闰年
int isleapyear(int year)
{int bool=0;if((year%4==0 && year%100!=0) || year%400==0){bool=1;}return bool;
}
//输出月历明细  是2月判断平年还是闰年/判断1号是星期几
int showmon(int year ,int mon)
{int flag=0;//平闰年真假int index;//星期数组索引int mdays=mons[mon];//该月天数int m;//空格个数int k=0;//第一行个数if(mon==2){//判断是否是2月,2月则判断平/闰年flag=isleapyear(year);mdays=mons[mon]+flag;}index=wday(year,mon,1);k=7-index;//获得该月1号是星期几索引printf("\n_________________________________________\n");printf("公元%d年%d月份\n",year,mon);printf("_________________________________________\n");printf(" 周日  周一  周二  周三  周四  周五  周六 \n");printf("_________________________________________\n");int i;for(i=0;i<6*index+3;i++){printf(" ");}printf("1");for(i=2;i<=k;i++){printf("%6d",i);}for(i=k+1;i<=mdays;i++){if((i-k-1)%7==0)printf("\n%4d",i);elseprintf("%6d",i);}printf("\n_________________________________________\n");return 0;
}
int showmenu()
{int n;int year=2022;int mon=6;int day;int wdindex;int *p=NULL;printf("\n***************************************\n");printf("*                 万年历              *\n");printf("*          ___________________        *\n");printf("*            1–>系统日期时间          *\n");printf("*            2–>年月日查星期          *\n");printf("*            3–>输出整年月历          *\n");printf("*            4–>输出某月月历          *\n");printf("*            5–>判断闰年平年          *\n");printf("*            6–>某月最大天数          *\n");printf("*            7–>跳到今月月历          *\n");printf("*            0–>退出整个程序          *\n");printf("*                                     *\n");printf("***************************************\n");printf("请选择功能:");scanf("%d",&n);switch(n){case 0:return 0;break;case 1:nowdatetime();break;case 2:printf("输入年份:");scanf("%d",&year);printf("输入月份:");scanf(" %d",&mon);printf("输入几日:");scanf(" %d",&day);wdindex=wday(year,mon,day);printf("\n公元%d年%d月%d日是%s\n",year,mon,day,wd[wdindex]);break;case 3:printf("输入年份:");scanf("%d",&year);for(int i=1;i<13;i++)showmon(year ,i);break;case 4:printf("输入年份:");scanf("%d",&year);printf("输入月份:");scanf(" %d",&mon);showmon(year ,mon);break;case 5:printf("输入年份:");scanf(" %d",&year);if(isleapyear(year)){printf("\n公元%d年是闰年\n",year);}else{printf("\n公元%d年平年\n",year);}break;case 6:printf("输入年份:");scanf(" %d",&year);printf("输入月份:");scanf(" %d",&mon);if(mon==2){printf("\n公元%d年%d月,本月一共%d天\n",year,mon,mons[mon]+isleapyear(year));}elseprintf("\n公元%d年%d月,本月一共%d天\n",year,mon,mons[mon]);break;case 7://int *p=NULL;p=nowdatetime();showmon(*p ,*(p+1));free(p);break;default:break;}getchar();return 0;
}
int main(int argc, char** argv)
{while(1){showmenu();getchar();clrscr();}return 0;
}

更多推荐

C语言万年历

本文发布于:2024-02-27 23:46:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766894.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:万年历   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!