日期类问题
标签: 机试攻略 - 高分篇
学习人数: 27.2k


高清播放
赞赏支持

日期类的题目也是常考的题目,这类题目一般都为以下几种考法。

 

1、判断某年是否为闰年
2、某年某月某日是星期几 
变形问法:某日期到某日期之间有多少天
3、某天之后x天是几月几日
4、10:15分之后x分钟是几点几分 
变形问法:某点到某点之间有多少分或多少秒

 

注意输入时候一般用scanf解析输入值
如:2019-11-8 2019-11-08 2019/11/8 10:10

int year, month, day;  
scanf("%d-%d-%d", &year, &month, &day);  
scanf("%d/%d/%d", &year, &month, &day);  
int hour, minute;  
scanf("%d:%d", &hour, &minute);  

 

日期
题目描述:
定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,计算并输出该日在本年中第几天。
输入描述:
输输入三个整数(并且三个整数是合理的,既比如当输入月份的时候应该在1 至12 之间,不应该超过这个范围)否则输出Input error!
输出描述:
输出一个整数.既输入的日期是本月的第几天。
输入样例#:
1985 1 20
2006 3 12
输出样例#:
20
71
题目来源:
DreamJudge 1051

解题分析:这个题目的考点在于两个地方,一个是每个月的天数都不一样,另一个是2月如果是闰年则多一天,最后我们还要判断输入的日期是否存在,如果不存在则输出Input error!

 

参考代码

#include <stdio.h>  
  
struct node {  
    int year, month, day;  
}p;  
int f[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  
int main() {  
    while (scanf("%d%d%d", &p.year, &p.month, &p.day) != EOF) {  
        //判断是否闰年  
        if ((p.year%400== 0)||(p.year%4==0)&&(p.year%100!=0)) {  
            f[2] = 29;  
        }  
        else f[2] = 28;  
        int flag = 0;  
        //判断月份输入是否合法  
        if (p.month < 1 || p.month > 12) flag = 1;  
        //判断天的输入是否合法  
        if (p.day < 0 || p.day > f[p.month]) flag = 1;  
        if (flag) {  
            printf("Input error!\n");  
            continue;  ...
登录查看完整内容


课后作业

练习题目

DreamJudge 1011 日期
DreamJudge 1290 日期差值
DreamJudge 1410 打印日期
DreamJudge 1437 日期类
DreamJudge 1446 日期累加
DreamJudge 1053 偷菜时间表


登录后开始许愿

暂无评论,来抢沙发