smgp 发表于 2017-1-29 15:38:53

日期类问题,求给定日期是星期几

样例输入:
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 = {
                                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)
                {//天数超过月份最大天数
                        Day = 1;
                        Month++;
                        if (Month > 12)
                        {
                                Month = 1;
                                Year++;
                        }
                }
        }
};

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

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

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

这是我写的,不知道为什么运行结果就是不对

Pz-ssa 发表于 2017-1-30 14:01:12


样例输入:
9 October 2001

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

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

smgp 发表于 2017-2-4 23:52:59

Pz-ssa 发表于 2017-1-30 14:01
样例输入:
9 October 2001



哦哦,谢谢~~我看了好久。{:5_109:}
页: [1]
查看完整版本: 日期类问题,求给定日期是星期几