8 求第几天
作者: Turbo时间限制: 1S章节: 循环
问题描述
按年、月、日的顺序读入一个日期,输出该日期是这一年中的第几天。
输入说明
输入数据为三个正整数y 、m、d,分别表示年、月、日,整数之间以空格分隔,在行首和行尾没有多余的空格
输出说明
输出一个整数,表示输入的日期是这一年中的第几天,在行首和行尾没有多余的空格。
输入范例
2000 12 31
输出范例
366
代码如下:
#include<stdio.h>
int main(){
int y,m,d,result;
while(scanf("%d %d %d",&y,&m,&d)!=EOF){
if(m==1) result=d;
if(m==2) result=31+d;
if(m==3) result=31+28+d;
if(m==4) result=31+28+31+d;
if(m==5) result=31+28+31+30+d;
if(m==6) result=31+28+31+30+31+d;
if(m==7) result=31+28+31+30+31+30+d;
if(m==8) result=31+28+31+30+31+30+31+d;
if(m==9) result=31+28+31+30+31+30+31+31+d;
if(m==10) result=31+28+31+30+31+30+31+31+30+d;
if(m==11) result=31+28+31+30+31+30+31+31+30+31+d;
if(m==12) result=31+28+31+30+31+30+31+31+30+31+30+d;
if(y%400==0&&m>=3) result++;
if(y%4==0&&y%100!=0&&m>=3) result++;
printf("%d",result);
}
}
运行状态:AC
备注:最基础的题,一次通过。本题使用枚举法,不是最优解,有更好的方案后续更新。