题目来源:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1001&cid=31288&problem=Problem%20%20H
解法或类型:分支结构
Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
题意描述
计算一个日期在是该年的第几天。
解题思路
先定义另个函数,一个判断是否是闰年,另一个定义两个数组分别把闰年的和非闰年的每个月的天数存入。通过循环加天数,输入的数控制循环次数。
时空分析:
程序代码:
#include<stdio.h>
int a(int y,int m,int d);
int Isleap(int y);
int main()
{
inty,m,d,day;
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
{
day=a(y,m,d);
printf("%d\n",day);
}
return 0;
}
int a(int y,int m,int d)
{
inti,day,l;
intn[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
day=0;
l=Isleap(y);
for(i=0;i<m;i++)
{
day=day+n[l][i];
}
returnday+d;
}
int Isleap(inty)
{
if((y%4==0&&y%100!=0)||y%400==0)
return 1;
else
return 0;
}
错误分析: 1、第二个函数两个数组内存入的数弄错了。