二日期类问题

例2.3

日期差值

(九度教程第6题)

时间限制:1秒

**内存限制:32兆 **

特殊判题:否

题目描述:

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天

输入:

有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出:

每组数据输出一行,即日期差值

样例输入:

20110412

20110422

样例输出:

11

来源:

2009年上海交通大学计算机研究生机试真题

#include

#define ISYEAP(x) x%100 != 0 && x%4 ==0 || x%400 == 0 ? 1:0

// 定义宏判断是否是闰年,方便计算每月天数

int dayOfMonth [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 Day;

int Month;

int Year;

void nextDay() {

Day ++;

if (Day > dayOfMonth[Month][ISYEAP(Year)]) { //若天数超过了当月最大日数

Day = 1;

Month ++; // 进入下一月

if(Month > 12) { //月数超过12

Month = 1;

Year ++; // 进入下一年

}

}

}

};

int buf[5001][13][32]; //保存预处理的天数

int Abs(int x) { // 求绝对值

return x < 0 ? -x: x;

}

int main () {

Date tmp;

int cnt = 0; //天数计数

tmp.Day = 1;

tmp.Month = 1;

tmp.Year = 0; //初始化日期类对象为0年1月1日

while (tmp.Year != 5001) { //日期类不超过5000年

buf[tmp.Year][tmp.Month][tmp.Day] = cnt; // 将该日与0年1月1日的天数差保存起来

tmp.nextDay(); //计算下一天日期

cnt ++;

}

int d1,m1,y1;

int d2,m2,y2;

while (scanf ("%4d%2d%2d",&y1,&m1,&d1) != EOF) {

scanf ("%4d%2d%2d",&y2,&m2,&d2); //读入要计算的两个日期

printf("%d\n",Abs(buf[y2][m2][d2]-buf[y1][m1][d1])+1);//用预处理的数据计算两日期差值,注意需对其求绝对值

}

return 0;

}

例2.4

Day of week

(九度教程第7题)

时间限制:1秒

**内存限制:32兆 **

特殊判题:否

题目描述:

We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400. (闰四不闰百,闰四百)

For example, years 2004, 2180 and 2400 are leap. Years 2004, 2181 and 2300 are not leap.

Your task is to write a program which will compute the day of week corresponding to a given date in the nearest past or in the future using today’s agreement about dating.

**输入: **

There is one single line contains the day number d, month name M and year number y(1000≤y≤3000). The month name is the corresponding English name starting from the capital letter. 输出:

Output a single line with the English name of the day of week corresponding to the date, starting from the capital letter. All other letters must be in lower case.

样例输入:

9 October 2001

14 October 2001

**样例输出: **

Tuesday

Sunday

提示:

Month and Week name in Input/Output:January, February, March, April, May, June, July, August, September, October, November, DecemberSunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday

**来源: **

2008 年上海交通大学计算机研究生机试真题

#include

#include

#define ISYEAP(x) x % 100 != 0 && x % 4 == 0 || x % 400 == 0 ? 1 : 0

int dayOfMonth[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 Day;

int Month;

int Year;

void nextDay () {

Day ++;

if (Day > dayOfMonth[Month][ISYEAP(Year)]) {

Day = 1;

Month ++;

if (Month > 12) {

Month = 1;

Year ++;

}

}

}

};

int buf[3001][13][32];

char monthName[13][20]={

"",

"January",

"February",

"March",

"April",

"May",

"June",

"July",

"August",

"September",

"October",

"November",

"December"

};//月名 每个月名对应下标1到12

char weekName[7][20] = {

"Sunday",

"Monday",

"Tuesday",

"Wednesday",

"Thursday",

"Friday",

"Saturday"

};//周名 每个周名对应下标0到6

int main() {

Date tmp;

int cnt = 0;

tmp.Day = 1;

tmp.Month = 1;

tmp.Year = 0;

while (tmp.Year != 3001) {

buf[tmp.Year][tmp.Month][tmp.Day] = cnt;

tmp.nextDay();

cnt ++;

}//以上与上题一致,预处理出每一天与原点日期的天差数

int d, m, y;

char s[20];

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

for (m = 1; m <= 12; m++) {

if(strcmp(s,monthName[m])==0) {

break;//将输入字符串与月名比较得出月数

}

}

int days = buf[y][m][d]-buf[2012][7][16];//计算给定日期与今日日期的天数间隔(注意可能为负)

days += 1;//今天(2012.7。16)为星期一,对应数组下标为1,则计算1进经过days天后的下标

puts(weekName[(days%7+7)%7]);//将计算后得出的下标用7对其取模,并且保证其为非负数,则该下标极即为答案所对应的下标,输出即可

}

return 0;

}

例2.4

今年的第几天?

(九度教程第8题)

时间限制:1秒

**内存限制:32兆 **

特殊判题:否

题目描述:

输入年、月、日,计算该天是本年的第几天。

输入:

包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

输出:

输入可能有多组测试数据,对于每一组测试数据,

输出一个整数,代表Input中的年、月、日对应本年的第几天。

样例输入:

1990 9 202000 5 1

样例输出:

263122

来源:

2003年清华大学计算机研究生机试真题

#include

#define ISYEAP(x) x%100 != 0 && x%4 ==0 || x%400 == 0 ? 1:0

int dayOfMonth [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 Day;

int Month;

int Year;

void nextDay() {

Day ++;

if (Day > dayOfMonth[Month][ISYEAP(Year)]) {

Day = 1;

Month ++;

if(Month > 12) {

Month = 1;

Year ++;

}

}

}

};

int buf[5001][13][32];

int Abs(int x) {

return x < 0 ? -x: x;

}

int main () {

Date tmp;

int cnt = 0;

tmp.Day = 1;

tmp.Month = 1;

tmp.Year = 0;

while (tmp.Year != 5001) {

buf[tmp.Year][tmp.Month][tmp.Day] = cnt;

tmp.nextDay();

cnt ++;

}

int d1,m1,y1;

int d2,m2,y2;

while (scanf ("%4d%2d%2d",&y1,&m1,&d1) != EOF) {

//scanf ("%4d%2d%2d",&y2,&m2,&d2);

printf("%d\n",Abs(buf[y1][m1][d1]-buf[y1][1][1])+1);

}

return 0;

}

例2.4

打印日期

(九度教程第9题)

时间限制:1秒

**内存限制:32兆 **

特殊判题:否

题目描述:

给出年分m和一年中的第n天,算出第n天是几月几号。

输入:

输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。

输出:

可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

样例输入:

2000 3

2000 31

2000 40

2000 60

2000 61

2001 60

样例输出:

2000-01-03

2000-01-31

2000-02-09

2000-02-29

2000-03-01

2001-03-01

来源:

2003-2005年华中科技大学计算机研究生机试真题

#include

#include

#include

#include

#include

using namespace std;

#define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0

int dayOfMonth[13][2]=

{

{0,0},//0

{31,31},//1

{28,29},//2

{31,31},//3

{30,30},//4

{31,31},//5

{30,30},//6

{31,31},//7

{31,31},//8

{30,30},//9

{31,31},//10

{30,30},//11

{31,31}//12

};

int main()

{

int y,n;

while(scanf("%d %d",&y,&n)!=EOF)

{

int i;

int m=ISYEAP(y);

for(i=0;n>dayOfMonth[i][m];i++)

{

n-=dayOfMonth[i][m];

}

printf("%04d-%02d-%02d\n",y,i,n);

}

}

王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...相关推荐

  1. 考研机试准备--《王道论坛机试指南》学习笔记

    一.代码能力培养的层次结构 1.会编写(默写)经典程序的代码. 2.将自己的想法和抽象的问题转换为代码实现. 3.编写出的代码在大量的,多种多样的测试用例之前仍然具有健壮性. 二.常见概念 1.特殊判 ...

  2. 厦门大学计算机复试机试,2019年厦门大学智能系考研复试经验分享

    今年厦大的复试很早,3月11日就开始了,复试早的好处是,就算复试被刷还能赶上外校的调剂.厦门大学智能系的复试还算是比较激烈的,整体的复试比例控制在1:1.5左右,相当于要刷三分之一的同学.下面重点说下 ...

  3. 上海交大研究生计算机考研真题,2011年上海交通大学计算机研究生机试真题

    Oracle 约束(constraint)的几个参数的小研究 ORACLE中,约束分deferred 跟 immediate 2种: deferred:如果 Oracle 在事务提交(commit)时 ...

  4. 华科计算机专硕英语几,2020华中科技大学计算机专硕考研成功经验谈

    原标题:2020华中科技大学计算机专硕考研成功经验谈 距离拟录取名单公布已经过了1个多月,我的考研历程也终于画上了一个圆满的句号,过程很艰辛,但结局很圆满.最近两天终于闲下来了,这是我过去一年来最悠闲 ...

  5. 计算机考研专业课除了408,计算机改考408的院校越来越多,考研难度系数更高了吗?...

    在19年8月19号研招网公布的<2020年全国硕士研究生招生工作管理规定>中有多项细微的考研规则变化,其中有一项关于命题的变化:鼓励使用统考试卷,涉及到计算机考研,也就是鼓励使用408计算 ...

  6. 2021年考研,3个月南理工计算机学硕上岸经验帖

    说明 本人某211学校计算机专业本科生,因为保研学校之间的沟通问题而导致保研失败(具体过程),在10月8号开始考研复习.目标:南京理工大学计算机与工程学院计算机科学与技术专业. 初试 科目:政治.英语 ...

  7. 西工大学计算机专业考研容易吗,2022年西北工业大学计算机专业考研成功经验...

    原标题:2022年西北工业大学计算机专业考研成功经验 一.关于考研择校和定专业 写在前面的话:考研就像谈恋爱.选择考研的同学可以细细品一下这句话! 很多同学在选择院校时无从下手,其实这个说到底就是自己 ...

  8. 英语本科 国外跨计算机,跨专业考研需具备哪些条件,如英语,计算机的过级情况...

    跨专业考研需具备哪些条件,如英语,计算机的过级情况以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 跨专业考研需具备哪些条 ...

  9. 计算机绘图中特征建模的概念,机械CADCAM计机辅助设计制造习题集.doc

    机械CADCAM计机辅助设计制造习题集 机械CAD/CAM技术 习题集 青岛科技大学CAD中心复习大纲 概述掌握CAD.CAE.CAM.CAPP及CAD/CAM系统集成的含义了解硬件组成及分类,掌握联 ...

最新文章

  1. 函数05 - 零基础入门学习C语言36
  2. LC31 Next Permutation
  3. (一)python简单应用
  4. VC++ AfxBeginThread 与 CreateThread 的区别
  5. 统计学要学的计算机课程有哪些,统计学专业主要课程学什么_课程设置安排及分类...
  6. request的生命周期
  7. 9、linux内存管理子系统
  8. vba 当前文件名_值得学习和珍藏的VBA常用编程代码语句
  9. oracle其他盘添加表空间吗,oracle增加表空间的四种方法
  10. 答读者问(7):相关实习、在软件开发和测试等论文和关系问题
  11. 数据资产管理:大数据时代的新风口
  12. 【图论】Dijkstra算法解决有向图最短路问题
  13. 小程序--改变子级别页面导航栏信息 / navigationBarTitleText
  14. Redis与LRU实现
  15. java项目汇率管理模板_项目管理文件夹模板
  16. 地理空间数据可视分析综述笔记
  17. 步进电机功率计算公式
  18. 如何选购电风扇,一本电风扇选购攻略都在这里!
  19. arch linux简体中文,Locale (简体中文)
  20. 单片机中推挽输出是什么意思

热门文章

  1. python学习之去除字符串中的空格(6种方法)
  2. 机械制图和计算机编程,不懂机械制图可以学习CNC编程吗?
  3. vue全家桶——vuex
  4. visual studio提示使用_CRT_SECURE_NO_WARNINGS
  5. Launcher3 实现桌面客制化---1
  6. android APP读写execl文件,文件管理器查看excel文件
  7. S1000D 5.0 中文版
  8. 来自播放器的你——“中国插件联盟”木马分析
  9. Linux十大桌面环境
  10. php获取中文字符拼音首字母