日期类的题目也是常考的题目,这类题目一般都为以下几种考法。
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 偷菜时间表
登录后开始许愿
暂无评论,来抢沙发