这个代码不全对哎,为什么呢?

问题描述
要求定义函数void month day(year,yearday,"month,"day),其中year是年,yearday是天数,month和day是指针,要求通过指针返回一年中的天数yearday在year年中是几月几日。输入年份和天数,输出对应的月和日。
输入描述
两个整数,第一个整数表示年,第二个整数表示该年的第几天。
输出描述
两个整数,分别表示月份和日期,中间用.隔开。
样例输入
2022 32
样例输出
2.1
我写的

img

img

望采纳

#include <stdio.h>
void month_day(int year,int yearday,int *month,int *day) {
    int i;
    int leap;
    int days[13] = {
        0,31,28,31,30,31,30,31,31,30,31,30,31
    }
    ;
    if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
    leap = 1; else
    leap = 0;
    days[2] += leap;
    for (i = 1;i <= 12;i ++) {
        if(yearday <= days[i])
        break;
        yearday -= days[i];
    }
    *month = i;
    *day = yearday;
}
int main(void) {
    int year,yearday,month,day;
    scanf("%d%d",&year,&yearday);
    month_day(year,yearday,&month,&day);
    printf("%d.%d",month,day);
    return 0;
}

void month_day(int year, int yearday, int *month, int *day)
{
    int months[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int i = 0, s = 0;
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
        months[1] = 29;
    while (yearday > s)
    {
        s += months[i];
        i++;
    }
    s -= months[i - 1];
    *day = yearday - s;
    *month = i;
}
int main()
{
    int year, yearday, month, day;
    cin >> year >> yearday;
    month_day(year, yearday, &month, &day);
    cout << month << "." << day;

    return 0;
}

修改如下,供参考:

#include<stdio.h>
int isLeap(int y)
{
    return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
}
int Getdaysofmonth(int y, int m)
{
    int days[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    if (m == 2 && isLeap(y))  return days[m - 1] + 1;
    return days[m - 1];
}
void month_day(int year, int yearday, int* month, int* day)
{
    int m, d = yearday;
    for (m = 1; d > Getdaysofmonth(year, m) && m < 13; d -= Getdaysofmonth(year, m), m++);
    *month = m;
    *day   = d;
}
int main()
{
    int y, days, m = 0, d = 0;
    do {
        //printf("请输入年份 天数:");
        scanf("%d%d", &y, &days);
    } while (days < 1 || days > 365);
    month_day(y, days, &m, &d);
    printf("%d.%d", m, d);
    return 0;
}