问题描述:
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年
闰年条件:
年份是4的倍数,而不是100倍数
或者年份是400的倍数
输入格式:
输入的第一行包括一个整数y表示年份,年份在1900到2015年
输入的第二行包含一个整数d,d在1至365之间
输出格式:
输出两行,每行一个整数,分别表示答案的月份和日期。
样例输入:
2015
80
样例输出:
3
21
样例输入:
2000
40
样例输出:
2
9
分析:
从第一个月逐月进行相减 判断月份 然后遍历天数 计算日期
#include<stdio.h>
int main(void){
int y,d,flag;
int i,mouth;
int mouthdays[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},//不是闰月天数 0元素不使用 使月数与下标对应
{0,31,29,31,30,31,30,31,31,30,31,30,31}}; //闰月天数
scanf("%d",&y);
scanf("%d",&d);
flag=fun(y);
mouth=1;
while(d>mouthdays[flag][mouth]){
d=d-mouthdays[flag][mouth];
mouth++;
}
for(i=1;i<=mouthdays[flag][mouth];i++){
d--;
if(d==0){
break;
}
}
printf("%d\n%d\n",mouth,i);
return 0;
}
/*
1表示闰年 0不是
*/
int fun(int year){
if(year%400==0||(year%4==0&&year%100!=0)){
return 1;
}
return 0;
}