求一个输入年月日,可以显示该月份日历的C语言程序! 求大神帮忙,谢谢!

如题所述

#include<stdio.h>

/*得到所输入年月的第一天是星期几0~6*/
int getdate(int y,int m);

/*判断所输入的是否是闰月,是则返回1,否则返回0*/
int leap(int y);

/*打印输入月份月历表*/
void print(int y,int m);

int main()
{
    int y,m;
    printf("输入年份和月份:");
    scanf("%d%d",&y,&m);
    print(y,m);
    return 0;
}

int getdate(int y,int m)
{
    int w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;
    int days=0;
    switch(m)
    {
        case 12: days+=30;
        case 11: days+=31;
        case 10: days+=30;
        case 9:  days+=31;
        case 8:  days+=31;
        case 7:  days+=30;
        case 6:  days+=31;
        case 5:  days+=30;
        case 4:  days+=31;
        case 3:  if(leap(y)) days+=29;
                 else days+=28;
        case 2:  days+=31;
        case 1:  days+=0;
        }
    w=(w+days)%7;
    return w;     /*返回输入月份1号的星期*/
}

void print(int y,int m)
{
    int w=getdate(y,m);
    printf("%d年%d月的月历表:\n\n",y,m);
    printf("\n==========================="
            "========================\n\n");
    int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    if(leap(y)) month[1]=29;

    printf("SUN\tMON\tTUE\tWED\tTHU\tFRI\tSAT\n");
    int i,j;
    for(i=0;i<w;i++) printf("\t");

    for(i=w,j=1;j<=month[m-1];i++,j++)
    {
        if(i%7==0) printf("\n");
        printf("%d\t",j);
        }
    printf("\n\n========================"
           "===========================\n\n");
    }

int leap(int y)
{
    if((y%4==0&&y%100!=0)||y%400==0) return 1;
    return 0;
    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-31
这个我会写,可以帮你。追问

可以么?

谢谢,我写的运行不了! 有好多错误!

追答

看我头像

第2个回答  2016-08-31
啥平台 啥环境 win-console 还是linux-bash追问

visual6.0

追答

vc6 呃呃 你大一吗 啥学校 还用这么老的IDE 这样吧 等下我打个包发百度云盘里 给你云盘链接的后半部分 你自己去下 前半部分都是一样的但会被度娘屏蔽 你自己填

相似回答