首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

杭电acm 1201,该怎么处理

2012-07-28 
杭电acm 1201这道题我就是分类讨论,看他生在哪一年,用leap表示闰年的话就是4种情况:leap,leap+1,leap+2,le

杭电acm 1201
这道题我就是分类讨论,看他生在哪一年,用leap表示闰年的话就是4种情况:leap,leap+1,leap+2,leap+3.
然后就这四种情况求出天数,可为什么不对呢?我实在是找不出原因来了。
请牛人帮忙看一下,感激不尽!

代码在下面:

#include<stdio.h>
int leap(int year)
{
  return (year%400==0 || ( year%4==0 && (year%100)!=0));  
}
int main()
{
  int t,year,month,day,sum=0,i;
  scanf("%d",&t);
  while(t--)
  {
  scanf("%d-%d-%d",&year,&month,&day);  
  if(month==2 && day==29 )
  sum=-1;
  else if(leap(year))
  {
  if(month==2 && day<=28 || month==1)
  sum=365*18+5;
  else
  sum=365*18+4;
  }
  else if(leap(year-1))
  sum=365*18+4;
  else if(leap(year-2))
  {
  if(month==2 || month==1)  
  sum=365*18+4;
  else
  sum=365*18+5;
  }
  else 
  sum=365*18+5;
  printf("%d\n",sum==-1?-1:sum);  
  }
  return 0;
}


[解决办法]
把题目贴上来吧。是否题意就没解析正确
[解决办法]
如果这个人没有18岁生日,就输出-1。
楼主你的代码完成这个了么?你输出-1的时候是什么情况的呢
[解决办法]
楼主代码完成了那个功能的哈~
楼主的错误在于算法问题,可否想过当输入整百数的时候,比如说类似1900这样特殊的年份,
按你代码的意思应该会经历5个闰年,但其实只经历了1904、1908、1912、1916这四个闰年

探讨
如果这个人没有18岁生日,就输出-1。
楼主你的代码完成这个了么?你输出-1的时候是什么情况的呢

热点排行