HDU

来源:互联网 发布:美国经济数据发布时间 编辑:程序博客网 时间:2024/06/10 17:40

题目

给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。

Sample Input

1985/1/20
2006/3/12

Sample Output

20
71

想法

该题用java来解非常简单。

  • SimpleDateFormat对象的parse()方法可以从给定字符串的开始解析文本,范围一个日期(Date类型)

用c来解需要注意几个地方。

  • 闫年(共366,二月29)的判断方法:(非整百年与4取余)或(整百年与400取余),0则闫年,非0平年。

-const 常量不能够改变,否则会出现类似的编译错误
assignment of readonly location

java代码

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.*;public class Main {    public static void main(String []args) throws ParseException{        Scanner it =new Scanner(System.in);        while(it.hasNext()) {        String s = it.next();        SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");        Date d = df.parse(s);        SimpleDateFormat df1 = new SimpleDateFormat("D");        System.out.println(df1.format(d));    }}}

c代码

#include<stdio.h>int main(){    const int a[]={31,28,31,30,31,30,31,31,30,31,30,31};    int y,m,d;    while(scanf("%d/%d/%d",&y,&m,&d)!=EOF){        int sum=0;        for(int i=0;i<m-1;i++)            sum+=a[i];        if((y%4==0&&y%100!=0||(y%400==0))&&m>=3)            sum=sum+1;        printf("%d\n",sum+d);    }    return 0;}

个人博客:陪你一起终身学习!|岳金钊&个人博客