鱼C论坛

 找回密码
 立即注册
查看: 1376|回复: 2

[已解决]日期类问题,求给定日期是星期几

[复制链接]
发表于 2017-1-29 15:38:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
样例输入:
9 October 2001
样例输出:
Tuesday
#include <stdio.h>
#include <string.h>
#define ISYEAP(x) (x % 4 == 0 && x % 100 != 0) || (x % 400 == 0) ? 1 : 0

int Day_Of_Month[13][2] = {
                                0,0,
                                31,31,
                                28,29,
                                31,31,
                                30,30,
                                31,31,
                                30,30,
                                31,31,
                                31,31,
                                30,30,
                                31,31,
                                30,30,
                                31,31};//提前保存每月天数

struct Date
{//定义一个结构体存放日期和计算下一天的日期 
        int Year;
        int Month;
        int Day;
        void nextDay()
        {//计算下一天的日期 
                Day++;
                if (Day > Day_Of_Month[Month][ISYEAP(Year)])
                {//天数超过月份最大天数 
                        Day = 1;
                        Month++;
                        if (Month > 12)
                        {
                                Month = 1;
                                Year++;
                        } 
                }
        }
}; 

char week_corresponding[7][20] ={
                                                "Sunday",
                                                "Monday",
                                                "Tuesday",
                                                "Wednesday",
                                                "Thursday",
                                                "Friday",
                                                "Saturday"};//星期名 
                                                
char English_Month[13][20] = {
                                                "",
                                                "January",
                                                "February",
                                                "March",
                                                "April",
                                                "May",
                                                "June",
                                                "July",
                                                "Augest",
                                                "September",
                                                "October",
                                                "November",
                                                "December"}; //月名 

int buf[3001][13][32];// 定义一个三维数组提前存放每个日期相对初始日期走过的天数 

int main()
{
        Date tmp;
        int count = 0;//计数器统计与初始日期相隔天数 
        tmp.Day = 1;
        tmp.Month = 1;
        tmp.Year = 0;//初试日期是0年1月1日
        while(tmp.Year != 3001)
        {
                buf[tmp.Year][tmp.Month][tmp.Day] = count;
                tmp.nextDay();
                count++;
        }//预处理3000年内日期与初始日期相隔天数
        
        int y,d,m;
        char M[20];
        
        while(scanf("%d %s %d",&y,M,&d) != EOF)
        {
                for (m = 1;m < 13;m++)
                {
                        if (strcmp(English_Month[m],M) == 0)
                        {
                                break;
                        }
                }//m为月数 
                
                int result = ((buf[y][m][d] - buf[2017][1][29] ) % 7 + 7) % 7;
                //今天是20170129,星期日。下标为0,计算给定日期的星期下标 
                printf("%s\n",week_corresponding[result]);
        }
        return 0;
} 

这是我写的,不知道为什么运行结果就是不对
最佳答案
2017-1-30 14:01:12

样例输入:
9 October 2001

scanf("%d %s %d",&y,M,&d) != EOF

楼主样例是 日 月 年 , 代码里是 年月日。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-30 14:01:12 | 显示全部楼层    本楼为最佳答案   

样例输入:
9 October 2001

scanf("%d %s %d",&y,M,&d) != EOF

楼主样例是 日 月 年 , 代码里是 年月日。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-4 23:52:59 | 显示全部楼层
Pz-ssa 发表于 2017-1-30 14:01
样例输入:
9 October 2001

哦哦,谢谢~~我看了好久。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 22:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表