版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_34678439/article/details/53559260
有一本记录了从1年到9999年的日历,
假设1年1月1日为第一天,现在问第Y年的第M月的第D天是第几天。
有一本记录了从1年到9999年的日历,
假设1年1月1日为第一天,现在问第Y年的第M月的第D天是 第几天。
Output
假设1年1月1日为第一天,现在问第Y年的第M月的第D天是 第几天。
对于每组数据,输出这是第几天。
Sample Input
2 1 1 1 2 2 2Sample Output
1 398原题链接:https://ac.2333.moe/Problem/view.xhtml?id=1007
这个题没有什么难度,但是却要考虑细致,逻辑清晰
先上代码,看清注释!!
#include <stdio.h>
int year, month, day;
//判断闰年,是闰年返回1,不是则返回0
int getrunnian(int y)
{
if((y%4==0 && y%100!=0) || y%400==0)
return 1;
else
return 0;
}
int main()
{
int n, sum, i, j;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //把每个月份的天数存好,方便后面使用,因m下标从0开始,则第一个数存0
scanf("%d",&n);
for(i=0;i<n; i++)
{
scanf("%d%d%d",&year, &month, &day);
sum=0; //这条语句不可少,这题是多个实例,每个实例结束后sum制零,表示每个实例互不干扰。
for(j=1; j<year; j++)
{
if(getrunnian(j)==0) //不是闰年为365天,否则为366天
sum+=365;
else
sum+=366;
}
for(j=1; j<month; j++)
{
if(j==2)
{
if(getrunnian(year)==1) //是闰年二月份为29天,否则为28天
sum+=29;
else
sum+=m[2];
}
else
sum+=m[j];
}
sum+=day;
printf("%d\n", sum);
}
return 0;
}