习题8.1(计算指定天数是某年的几月几日)
Time Limit: 1000 ms Memory Limit: 128 MB
问题描述
要求定义函数void month day(year,yearday,"month,"day),其中year是年,yearday是天数,month和day是指针,要求通过指针返回一年中的天数yearday在year年中是几月几日。输入年份和天数,输出对应的月和日。
输入描述
两个整数,第一个整数表示年,第二个整数表示该年的第几天。
输出描述
两个整数,分别表示月份和日期,中间用隔开。
样例输入
2022 32
样例输出
2
把扣除天数打印日期那里修改下即可,修改如下:
#include <bits/stdc++.h>
using namespace std;
int ap[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int ar[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int main(void){
int year,day,i,k,d;
scanf("%d %d",&year,&day);
printf("year=%d,day=%d\n",year,day);
for(i=0;i<12;i++){
if((year%4==0&&year%100!=0)&&year%400==0){ //闰年
if(day>=ar[i]){ //天数大于等于此月天数,则减去此月天数
day-=ar[i];
k=i;
printf("day=%d,k=%d\n",day,k);
}else{ //如果小于此月天数,则说明已经到此月终止
break;
}
}else{ //平年
if(day>=ap[i]){ //天数大于等于此月天数,则减去此月天数
day-=ap[i];
k=i;
printf("day=%d,k=%d\n",day,k);
}else{ //如果小于此月天数,则说明已经到此月终止
break;
}
}
}
if((year%4==0&&year%100!=0)&&year%400==0){ //闰年
if(day==0){ //天数为0,说明在此月最后一天
printf("%d.%d",k+1,ar[k]); // k+1为此月,ar[k]为此月最后一天的日期
}else{ //天数大于0,说明在下一个月
printf("%d.%d",k+2,day); //k+2为下一个月,day为此月的天数
}
}else{ //平年
if(day==0){ //天数为0,说明在此月最后一天
printf("%d.%d",k+1,ap[k]); // k+1为此月,ar[k]为此月最后一天的日期
}else{ //天数大于0,说明在下一个月
printf("%d.%d",k+2,day); //k+2为下一个月,day为此月的天数
}
}
return 0;
}