中易网

50 求用C语言编辑万年历……有偿

答案:2  悬赏:50  
解决时间 2021-01-26 15:31
50 求用C语言编辑万年历……有偿
最佳答案
//红包发起
#include 
#include 
#include 
int Leap(int year)
{
    if((year%4==0 && year%100!=0) || year%400==0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int GetDays(int year, int month)
{
    int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    if(Leap(year)==1)
    {
        days[1]=29;
    }
    return days[month-1];
}
int Week(int y, int m, int d, char* buf)
{
    if(m==1||m==2)
    {
        m+=12;
        y--;
    }
    int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
    switch(iWeek)
    {
        case 0: strcpy(buf,"星期一");return 1;
        case 1: strcpy(buf,"星期二");return 2;
        case 2: strcpy(buf,"星期三");return 3;
        case 3: strcpy(buf,"星期四");return 4;
        case 4: strcpy(buf,"星期五");return 5;
        case 5: strcpy(buf,"星期六");return 6;
        case 6: strcpy(buf,"星期日");return 0;
    }

int CheckYearError(int year)
{
    if(year<1)
    {
        return 0;
    }
    return 1;
}
int CheckMonthError(int month)
{
    if(month<1 || month>12)
    {
        return 0;
    }
    return 1;
}
int CheckDayError(int year, int month, int day)
{
    if(day<1)
    {
        return 0;
    }
    if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
    {
        if(day>31)
        {
            return 0;
        }
    }
    if(month==2)
    {
        if(Leap(year)==1 && day>29)
        {
            return 0;
        }
        else if(Leap(year)==0 && day>28)
        {
            return 0;
        }
    }
    else if(month==4 || month==6 || month==9 || month==11)
    {
        if(day>30)
        {
            return 0;
        }
    }
    return 1;
}
void fun1()
{
    int year;
    printf("

请输入年份:");
    fflush(stdin);
    scanf("%d",&year);
    if(CheckYearError(year)==0)
    {
        printf("
年份输入错误!");
        fflush(stdin);
        getchar();
        return;
    }
    if(Leap(year)==1)
    {
        printf("%d年是闰年!",year);
    }
    else
    {
        printf("%d年不是闰年!",year);
    }
    fflush(stdin);
    getchar();
}
void fun2()
{
    int year,month,day;
    int err=0;
    printf("

请输入年,月,日(中间用逗号间隔):");
    fflush(stdin);
    scanf("%d,%d,%d",&year,&month,&day);
    if(CheckYearError(year)==0 || CheckMonthError(month)==0 || CheckDayError(year,month,day)==0)
    {
        printf("

输入数据有误!");
        fflush(stdin);
        getchar();
        return;
    }
    char buf[10];
    Week(year,month,day,buf);
    printf("

%d-%02d-%02d是%s",year,month,day,buf);
    fflush(stdin);
    getchar();
}
void prt(int year, int month)
{
    char buf[10];
    int nFirstWeek=Week(year,month,1,buf);
    printf("
              %d年%d月",year,month);
    printf("
   日   一   二   三   四   五   六
"); 
    int i,j;
    int days=GetDays(year,month);
    for(i=0;i    {
        printf("%5s"," ");
    }
    for(i=1;i<=days;i++)
    {
        printf("%5d",i);
        nFirstWeek++;
        if(nFirstWeek%7==0)
        {
            printf("
");
        }
    }
}
void fun3()
{
    int year;
    printf("

请输入年份:");
    fflush(stdin);
    scanf("%d,%d",&year);
    if(CheckYearError(year)==0)
    {
        printf("

输入数据有误!");
        fflush(stdin);
        getchar();
        return;
    }
    int i;
    for(i=1;i<=12;i++)
    {
        prt(year,i);
        printf("
");
    }
    fflush(stdin);
    getchar();
}
void fun4()
{
    int year,month;
    printf("

请输入年,月(中间用逗号间隔):");
    fflush(stdin);
    scanf("%d,%d",&year,&month);
    if(CheckYearError(year)==0 || CheckMonthError(month)==0)
    {
        printf("

输入数据有误!");
        fflush(stdin);
        getchar();
        return;
    }
    prt(year,month);
    fflush(stdin);
    getchar();
}
int main()
{
    int sel;
    while(1)
    { 
        system("cls");
         printf("1---输入年份,判断是否为闰年
");
        printf("2---输入年月日,判断该日为星期几
");
        printf("3---输入年份,打印该年12个月日历
");
        printf("4---输入月份,打印该月日历
");
        printf("0---输入0, 退出程序

");
        printf("请输入(0--4):");
        fflush(stdin);
        scanf("%d",&sel);
        switch(sel)
        {
            case 0:
                exit(0);
            case 1:
                fun1();
                break;
            case 2:
                fun2();
                break;
            case 3:
                fun3();
                break;
            case 4:
                fun4();
                break;
            default:
                break;
        }
    }
    return 0;
}
全部回答
还需要吗。。
追问:需要的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
腾冲7月底至8月初天气如何,去腾冲旅游注意
求炫舞切图 急急急急急急急急急急急 我只有5
在文中找出一句比喻句。
从1024下来的视频,是压缩文件要密码,但是没
白草畔景区停车场(白草畔森林公园东南)地址在
为什么我那么讨厌笑哭的表情
铁树养几颗好,我只买了一颗听说不太好
256g内存卡那些手机适内用
格力风管机,温度设定会自动更改,制冷温差相
厦门市同安区公交车实时到站查询
煽动是褒义词还是贬义词
在北京打个孩子要多少钱?
小美想做一串项链,有8颗蓝珠,27颗红珠子,要使
烧整把香看凶吉图有根香突然从香炉里蹦了出来
谁知道上海沪工和东城电锤那个好
推荐资讯
2.在地球上什么地方气压最高,是多少,水的沸
打dota有什么意思
六孔板转染质粒加多少ug
bose音响蓝牙怎么连接?
金百利家具地址在什么地方,想过去办事
客厅灯和餐厅灯怎么区别,在选时都有什么注意
载重货,货车750轮胎买哪个牌子好?
心好累,活着就是为了各种考证吗?
我想拍月亮谁知道oppor15这个专业模式怎么调
怎么掌握各类公关文书的写作技巧
这个1888贵吗?请高人指教
Shameless 里面 第四季最后一幕里面 那个jack
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?