关于计算某一天是几月几日的问题

感觉我的思路没什么问题,但好像在函数for循环部分的i值有问题,请问那个for语句怎么改?(因为要求,函数是固定的)

#include<stdio.h>
void MonthDay(int year,int yearDay,int *pMonth,int *pDay);

int main()
{    
    int year,yearday,month,day;
    
    printf("请输入年份:");
    scanf("%d",&year);
    printf("请输入第几天:");
    scanf("%d",&yearday);
    
    MonthDay(year,yearday,&month,&day);
    printf("是今年的%d月%d日\n",month,day);
    
    return 0;
}

void MonthDay(int year,int yearDay,int *pMonth,int *pDay)
{
    int m[12]={31,28,31,30,31,30,31,31,30,31,30,31},i;
    if(year%4==0&&year%100!=0||year%400==0)
        m[1]=29;
    *pMonth=0;
    for(i=0;i<12;i++){
        *pDay=yearDay-m[i];
        *pMonth=i;
        if(*pDay<=0) {
            *pDay=*pDay+m[i];
            break;
        }
    }
}

#include<stdio.h>
int main()
{
int year, yearday, month, day;
int MonDay[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
printf("请输入年份:");
scanf("%d", &year);
printf("请输入第几天:");
scanf("%d", &yearday);
if((year%400==0) || (year%4==0 && year %100!=0)) MonDay[1] = 29;
for (int i = 0; yearday > 0; i++) {
day = yearday;
month = i + 1;
yearday -= MonDay[i];
}
printf("是今年的%d月%d日\n", month, day);
return main();
}