在任何日期打印出星期几

时间:2014-03-21 00:03:58

标签: c date weekday

提示是: 实现一个函数,该函数读入包含日历日期的文本描述的字符串,并打印出相应的星期几(星期一到星期日)。此函数的两种有效输入格式为:

mm / dd / yyyy

示例:03/04/2014输出:星期二

月dd,yyyy

示例:2014年3月4日输出:星期二

其中dd是数字日,mm是数字月,yyyy是年,月是月的名称。使用两位数指定所有日期和月份(即3月,使用03而不是3)。在第二种有效格式中,Month和dd之间以及dd和yyyy之间有一个空格。 为了获得此任务的全部功劳,您的程序应以正确的格式打印出正确的一周中的任何输入。

我到目前为止的代码能够给我一年中输入的那一天的数字,但从那里我不知道该怎么办,所以它会给我一周中的那一天,因为每年从一个不同的工作日开始。

#include<stdio.h>
int main() {
    int month, day, year, dm, dn, leap;
    printf("enter the month:");
    scanf("%d",&month);
    printf("enter the day:");
    scanf("%d",&day);
    printf("enter the year:");
    scanf("%d",&year);

    if((year%100 == 0 && year%400 == 0) || (year%4==0)) {
        if(month==1)
            dm=0;
        if(month==2)
            dm=31;
        if(month==3)
            dm=60;
        if(month==4)
            dm=91;
        if(month==5)
            dm=121;
        if(month==6)
            dm=152;
        if(month==7)
            dm=182;
        if(month==8)
            dm=213;
        if(month==9)
            dm=244;
        if(month==10)
            dm=274;
        if(month==11)
            dm=305;
        if(month==12)
            dm=335;
    }
    else { 
        if(month==1)
            dm=0;
        if(month==2)
            dm=31;
        if(month==3)
            dm=59;
        if(month==4)
            dm=90;
        if(month==5)
            dm=120;
        if(month==6)
            dm=151;
        if(month==7)
            dm=181;
        if(month==8)
            dm=212;
        if(month==9)
            dm=243;
        if(month==10)
            dm=273;
        if(month==11)
            dm=303;
        if(month==12)
            dm=334;
    }

    dn = dm+day;
    printf("the day number is :%d",dn);

    return 0;
}

0 个答案:

没有答案