#include <iostream>
using namespace std;
int main() {
int y,m,d;
while(scanf("%d%d%d",&y,&m,&d)!=EOF){
int sum=0;
if(y%4==0&&y%100!=0||(y%400==0))
{
for(int i=1;i<m;i++)//循环的边界处理,是否包含右边界
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
sum+=31;
}
else {
if(i==2) sum+=29;//if语句的边界,是否要加else,if的情况不需要处理两次我们只要特殊处理一次就要加else
else sum+=30;
}
}
sum+=d;
}
else {
for(int i=1;i<m;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
sum+=31;
}
else {
if(i==2) sum+=28;
else sum+=30;
}
}
sum+=d;
}
printf("%d\n",sum);
}
}
// 64 位输出请用 printf("%lld")
这题是模拟题,题上怎么说我们怎么写,把我们人脑判断天数的思路用代码表示出来。人脑:看到年份我们要判断是不是闰年,“四百年一闰,百年不闰,再四百年一闰”,看到月份,我们要把本月之前的总数加起来,加的过程中要注意大小月,看到日直接把天数加上;
编程语言,闰年判断y%4==0&&y%100!==0||y%400==0//不到百年用前面,否则用后面,月份在处理的时候要特判+边界处理,循环中我们要算上题目给出的月份吗?不用算上,我们循环到前一个月就行,这个月还没有过完。给出的月份中我们用if选择语句判断大小月,要用else吗?要否则会重复处理已经特判过的月份,day,sum+=day即可。



京公网安备 11010502036488号