栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言万年历

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言万年历



完整代码如下:

 
#include
#include
#include
#include
#include
//非标准库控制台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);
        else
        printf("%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日是%sn",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));
        }
        else
        printf("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;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960762.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号