c语言,请解答一下。

输入年、月、日,计算出该日是该年的第几天。例如输入2018、3、1,输出60。

参考这个 《输入某年某月某日,判断这一天是这一年的第几天》

img


#include <stdio.h>

int main() {
    int year, month, day;
    scanf("%d %d %d", &year, &month, &day);

    int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        days[1] = 29;
    }

    int result = day;
    for (int i = 0; i < month - 1; i++) {
        result += days[i];
    }

    printf("%d\n", result);
    return 0;
}

供参考:

#include<stdio.h>
int main()
{
    int year, month, day, sum, i;
    scanf("%d %d %d", &year, &month, &day);
    for (i = 1, sum = 0; i < month; i++)
    {
        if (i == 2)
        {
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                sum += 29;
            else
                sum += 28;
        }
        else if (i == 4 || i == 6 || i == 9 || i == 11)
            sum += 30;
        else
            sum += 31;
    }
    sum += day;
    printf("%d", sum);
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

这道题我个人采用的方法是利用数组和循环、选择结构。
只要理清思路,便可迎刃而解。
而这道题的难点在于对闰年的判断以及对错误年月日的判断。

置闰法则:四年一闰,百年不闰,四百年再闰。

  • 以下回答来自chatgpt:

    我可以通过Python编写代码解决该问题。具体的解决方案如下:

    1. 首先,我需要获取用户输入的日期信息。使用input()函数获取用户输入的日期信息,将其存储为一个字符串,如"2018年3月1日"。
    date_str = input("请输入日期(格式: 年年年年年年月月日日):")
    
    1. 然后,我需要将用户输入的日期信息转化为年、月、日三个整数。使用字符串切片的方式将年、月、日分离出来,如"2018年3月1日"可以转化为年=2018,月=3,日=1三个整数。
    year = int(date_str[:4])
    month = int(date_str[4:6])
    day = int(date_str[6:])
    
    1. 接着,我可以使用datetime模块中的date对象来计算该日期是一年中的第几天。我们可以先创建一个date对象,调用其timetuple()方法将其转化为元组形式,然后取出该元组中的第一个元素(也就是该日期是一年中的第几天),如下:
    import datetime
    
    date = datetime.date(year, month, day)
    day_of_year = date.timetuple().tm_yday
    print(day_of_year)
    
    1. 最后,我将day_of_year这个整数作为函数的返回值返回。

    完整代码如下:

    import datetime
    
    def get_day_of_year():
        date_str = input("请输入日期(格式: 年年年年年年月月日日):")
        year = int(date_str[:4])
        month = int(date_str[4:6])
        day = int(date_str[6:])
        date = datetime.date(year, month, day)
        day_of_year = date.timetuple().tm_yday
        return day_of_year
    
    day_of_year = get_day_of_year()
    print(day_of_year)
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^