22-语言入门-22-日期计算

题目地址:?http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=75

?

描述
如题,输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。

输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每行的输入数据都是一个按题目要求格式输入的日期。
输出
每组输入数据的输出占一行,输出判断出的天数n
样例输入
3
2000 4 5
2001 5 4
2010 10 24
样例输出
96
124

297

?

代码:

?

#include <stdio.h>

//计算一年中的哪一天
static int calDay(int year,int month,int day);
//返回月份的天数
static int getAllDay(int year,int month);

int main()
{
???? int readLen = 0;
???? scanf("%d",&readLen);
???? getchar();
????
???? while(readLen > 0)
???? {
????????? int year = 0;
????????? int month = 0;
????????? int day = 0;
????????? scanf("%d %d %d",&year,&month,&day);
????????? getchar();
?????????
????????? printf("%d\n",calDay(year,month,day));
????????? --readLen;
???? }
????
???? return 0;
}

//计算一年中的哪一天
static int calDay(int year,int month,int day)
{
???? int result = 0;
???? int index = 1;
???? for(;index < month;++index)
???? {
????????? result += getAllDay(year,index);
???? }
???? return result + day;
}

//返回月份的天数
static int getAllDay(int year,int month)
{
???? switch(month)
???? {
????????? case 0:
?????????????? return 0;
????????? case 1:
????????? case 3:
????????? case 5:
????????? case 7:
????????? case 8:
????????? case 10:
????????? case 12:
?????????????? return 31;
????????? case 4:
????????? case 6:
????????? case 9:
????????? case 11:
?????????????? return 30;
????????? case 2:
?????????????? {
??????????????????? if(year % 4 == 0)
??????????????????? {
???????????????????????? return 29;
??????????????????? }
??????????????????? else
??????????????????? {
???????????????????????? return 28;
??????????????????? }
?????????????? }
???? }
}

该题需要明白闰月的判断,需要知道除了2月份,其他月份的天数。

另外C和C++的switch中只能针对 int char 类型的case,而不能对字符串进行case,

而且break结束标记不像Java C#要求的那么严格,

如此较为便利,但是也可能带来错误隐患,使用时要严格检查

时间: 2024-10-24 13:39:04

22-语言入门-22-日期计算的相关文章

【南阳OJ分类之语言入门】80题题目+AC代码汇总

声明: 题目部分皆为南阳OJ题目. 代码部分包含AC代码(可能不止一个)和最优代码,大部分都是本人写的,并且大部分为c代码和少部分c++代码and极少java代码,但基本都是c语言知识点,没有太多差别,可能代码有的写的比较丑,毕竟知识有限. 语言入门部分题基本都较为简单,是学习编程入门的很好练习,也是ACM的第一步,入门的最佳方法,望认真对待. 本文由csdn-jtahstu原创,转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:1373758426和csdn博客地址. now begi

简单易懂的程序语言入门小册子(9):环境,引入环境

\newcommand{\mt}[1]{\text{#1}} \newcommand{\mE}{\mathcal{E}} \newcommand{\tup}[1]{\left<{#1}\right>} 环境类似于其他语言(C++.JAVA等)的"符号表". 所谓符号表,是一张将变量名与变量代表的内容联系起来的一张表. 不过这里我们抛弃符号表的观点,单纯地从算法角度上引入环境这一概念. 引入环境 通过修改解释器求值过程的算法,可以很自然的引入环境这个概念. 在前面基于文本替换

java用毫秒数做日期计算的一个踩坑记录

错误示例: Date today = new Date(); Date nextMonth = new Date(today.getTime() + 30* 1000*60*60*24); println(today); println(nextMonth); Result:  Sat Sep 30 11:18:24 CST 2017 Sun Sep 10 18:15:37 CST 2017 代码说明:上面代码的目的是计算一个月后的日期,从结果发现明显是错误的(回到上个月去了) 原因分析:30*

java根据日期计算24节气

1 package com.test; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 6 /** 7 * Created by json 8 */ 9 public class SolarTermsUtil { 10 /** 11 * 计算得到公历的年份 12 */ 13 private int gregorianYear; 14 15 /** 16 * 计算得到公历的月份 17 */ 18 private int grego

R语言学习笔记——日期时间处理

一.在利用R语言实际工作中,我们经常需要将字符串转换成时间,或者将时间转化成字符串,R语言和其他语言一样,你要告诉它如何转化?也就是告诉它format,它就可以正常的转化,但是在实际中,我碰到了一下几个很难注意的问题,先总结如下: 计算机如何理解日期:日期格式(也就是Date)表示为自1970年1月1日相对的数量,较1970-01-01更早的日期表示负值.(大部分语言都是这么处理的) 大部分语言有默认的日期格式,只要按照这个日期格式去转换字符串,计算机就能正确识别.如下: <span style

JAVA中日期转换和日期计算的方法

日期的格式有很多形式,在使用过程中经常需要转换,下面是各种类型转换的使用例子以及日期计算方法的例子. 一.不同格式日期相互转换方法 1 public class TestDateConvertUtil { 2 3 public static void main(String[] args) throws ParseException { 4 // 获取当前时间 5 Date date = new Date(); // 获取当前时间 6 long timestamp = System.curren

js时间戳转换日期格式和日期计算

一.时间戳转换日期 1 function formatDate(datetime) { 2 // 获取年月日时分秒值 slice(-2)过滤掉大于10日期前面的0 3 var year = datetime.getFullYear(), 4 month = ("0" + (datetime.getMonth() + 1)).slice(-2), 5 date = ("0" + datetime.getDate()).slice(-2), 6 hour = (&quo

简单易懂的程序语言入门小册子(6):基于文本替换的解释器,引入continuation

当我写到这里的时候,我自己都吃了一惊. 环境.存储这些比较让人耳熟的还没讲到,continuation先出来了. 维基百科里对continuation的翻译是"延续性". 这翻译看着总有些违和感而且那个条目也令人不忍直视. 总之continuation似乎没有好的中文翻译,仿佛中国的计算机科学里没有continuation这个概念似的. Continuation这个概念相当于过程式语言里的函数调用栈. 它是用于保存"现在没空处理,待会再处理的事"的数据结构. 这样说

iOS学习笔记37-时间和日期计算

一.时间和日期计算 我们在应用开发中,时常需要和时间打交道,比如获取当前时间,获取两个时间点相隔的时间等等,在iOS开发中与时间相关的类有如下几个: 1. NSDate:表示一个绝对的时间点 2. NSTimeZone:时区信息 3. NSLocale:本地化信息 4. NSDateComponents:一个封装了具体年月日.时秒分.周.季度等的类 5. NSCalendar:日历类,它提供了大部分的日期计算接口 6. NSDateFormatter:用来在日期和字符串之间转换 二.NSDate

c语言入门经典(第5版)

文章转载:http://mrcaoyc.blog.163.com/blog/static/23939201520159135915734 文件大小:126MB 文件格式:PDF    [点击下载] C语言入门经典(第5版)  内容简介: C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad和其他苹果设备编程中使用的Objective-C语言的基础:C语言是在很多环境中(包括GNU项目)被广泛使用的C++语言的基础.C语言也是Li