Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
#include<stdio.h>
void main()
{
int year;
int m,d;
char l,w;
while((scanf("%d%c%d%c%d",&year,&l,&m,&w,&d))!=EOF)
{
int month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
if ((year%4==0&&year%100!=0)||year%400==0)
month[1] = 29;
int days = 0;
for (int i=0;i<m-1;i++)
days += month[i];
days += d;
printf("%d\n",days);
}
}
我呆了这题错误好多啊。一开始我就陷入了那啥一个惯性思维圈,就是输入只能用一个字符串变量去装它,然后我就想了好久,哇,怎么提取中间的各个数字啊,要用什么各种各样的数组去装它啊。后来我发现别人。。竟然直接就让输出变成五个变量,就是一个年份,一个月份,一个日期还有两个斜杠。我是呆逼哦。还有我一开始的时候数组的定义都弄不出。还有我有一个很大的问题就是,永远都是定义完变量就万事大吉了,但是有些变量存在的范围很要注意的,就像我一开始就一直要把month那个数组定义到while外面。一到外面,只要遇到过输入的年份是闰年,后面的每一次输入的二月都是29天了。我吐了,我这个呆逼。