写不出来,试了一下数据不全对,而且我觉得自己写的挺有道理。

习题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

img

img

把扣除天数打印日期那里修改下即可,修改如下:


#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;
}

img