有一本記錄了從1年到9999年的日曆,
假設1年1月1日爲第一天,現在問第Y年的第M月的第D天是第幾天。
假設1年1月1日爲第一天,現在問第Y年的第M月的第D天是 第幾天。
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;
}