ACM 一道简单题 (C/C++)

第几天时间限制(普通/Java):1000MS/10000MS运行内存限制:65536KByte总提交:1729测试通过:812描述给定一个日期,输出这个日期是该年的第几... 第几天
时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte
总提交: 1729 测试通过: 812
描述

给定一个日期,输出这个日期是该年的第几天。

输入

输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

输出

对于每组输入数据,输出一行,表示该日期是该年的第几天。

样例输入

2000-01-01

样例输出

1

#include<stdio.h>
int main(){
int days,year,moon,day,i;
int run[]={0,31,29,31,30,31,30,31,31,30,31,30},ping[]={0,31,28,31,30,31,30,31,31,30,31,30};
while(scanf("%d-%d-%d",&year,&moon,&day)!=EOF){
days=0;
for(i=2000;i<year;i++)
if(i%400==0||i%100!=0&&i%4==0)
days+=366;
else
days+=365;
if(year%400==0||year%100!=0&&year%4==0)
for(i=1;i<=moon;i++)
days+=run[i-1];
else
for(i=1;i<=moon;i++)
days+=ping[i-1];
printf("%d\n",days+day);
}
return 0;
}

为什么wrong answer
(题目来自台州ACM 1071
展开
 我来答
c1200123
2012-04-15 · 超过18用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:47.1万
展开全部
要求输出的是该年的第几天,而不是从2000年算起后的第几天。
嘿嘿~采纳吧~
追问
结果不都是一样的吗
追答
为什么会一样??for(i=2000;i<year;i++)
if(i%400==0||i%100!=0&&i%4==0)
days+=366;
else
days+=365;
这一语句把2000年到year的天数都加上了,而题目需要输出的是一年中的第几天,是小于366的啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式