HDU - 2005 第几天?
题目
给定一个日期,输出这个日期是该年的第几天。
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;
}

浙公网安备 33010602011771号