关于给定一个日期求星期几的算法实现讨论

[复制链接]
938|3
 楼主| vivilzb1985 发表于 2016-9-10 22:55 | 显示全部楼层 |阅读模式
如题,这里讨论下这个算法的实现问题的,主要需要注意下边几点的:
1.输入的日期的有效性的判断的;
2.输入的年份的闰年的判定的;
3.大、小月份的判定的;
 楼主| vivilzb1985 发表于 2016-9-10 22:56 | 显示全部楼层
不多说了的,直接上程序算法实现的。。。

int getWDay(int year,int month,int day)
{
        struct tm tm1;
         time_t tm_t;
        tm1.tm_mday = day;                //day 为日
    tm1.tm_mon = month-1;             // month为月
    tm1.tm_year = year-1900;          // year 为年
    tm1.tm_hour = 0;
    tm1.tm_min = 0;
    tm1.tm_sec = 0;

     tm_t = mktime(&tm1);
     printf("%d", tm1.tm_wday);
/* */

        return 0;

}
 楼主| vivilzb1985 发表于 2016-9-10 22:57 | 显示全部楼层
少补了上边说的几个判断的

int checkDate(int year,int month,int day)
{
        if(year<1900)
        {
                return 0;
        }
        elseif(month<1||month>12)
                return 0;
        elseif(day<1||day>31)
                return 0;
        elseif((month==2||month==4||month==6||month==9||month==11)&&day==31)
                return 0;
        elseif((month==2)&&(day==30))
                return 0;
        elseif(month==2&&day==29)
        {
                if(((year%4==0)&&(year%100!=0))||year%400==0)
                        return 0;
        }
        return 1;
}
 楼主| vivilzb1985 发表于 2016-9-10 22:58 | 显示全部楼层
main 函数的实现的:
int main()
{   
        int year,month,day;

        if(scanf("%d %d %d",&year,&month,&day)!=3)
        {
                return 0;
        }
       
        if(checkDate(year,month,day)==0)
        {
                return 0;
        }


        getWDay( year, month,day);

        return 0;
}
这样一来,这个条理就比较好的。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:后来乍到,前辈们多多包涵了啊。。

88

主题

4276

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部