C语言 定义结构体变量并计算该日在本年中是第几天

定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题(即将闰年情况包含在内)。

cpp 复制代码
#include <stdio.h>

typedef struct {
    int year;
    int month;
    int day;
} Date;

int isLeapYear(int year) {
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
        return 1;
    return 0;
}

int daysOfMonth(int month, int year) {
    int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (month == 2 && isLeapYear(year))
        return 29;
    return days[month - 1];
}

int dayOfYear(Date date) {
    int days = 0;
    for (int i = 1; i < date.month; i++) {
        days += daysOfMonth(i, date.year);
    }
    days += date.day;
    return days;
}

int main() {
    Date date;
    printf("Enter year, month, day: ");
    scanf("%d %d %d", &date.year, &date.month, &date.day);

    int day = dayOfYear(date);
    printf("The day is the %dth day of the year.\n", day);

    return 0;
}

代码解释:

  1. 定义结构体:定义一个名为 `Date` 的结构体,其中包括年、月、日三个成员变量。

  2. 判断闰年:编写一个函数 `isLeapYear`,用于判断给定年份是否为闰年。闰年的判断依据是:年份能被4整除但不能被100整除,或者能被400整除。

  3. 计算天数:编写一个函数 `dayOfYear`,该函数接受一个 `Date` 类型的变量作为参数,返回该日期在该年中的第几天。函数首先确定每个月的天数(考虑到闰年二月的不同天数),然后累加至给定日期,计算出天数。

相关推荐
一个天蝎座 白勺 程序猿5 分钟前
Python(19)Python并发编程:深入解析多线程与多进程的差异及锁机制实战
开发语言·python
ShiinaMashirol7 分钟前
代码随想录刷题|Day20(组合总数,组合总数2、分割回文串)
java·算法
程序员爱钓鱼11 分钟前
用 Go 实现一个轻量级并发任务调度器(支持限速)
后端·算法·go
学习编程的gas18 分钟前
数据结构——八大排序算法
数据结构·算法·排序算法
暖阳华笺33 分钟前
Leetcode刷题 由浅入深之哈希表——242. 有效的字母异位词
数据结构·c++·算法·leetcode·哈希表
GSDjisidi38 分钟前
日本IT|车载C#开发工程师的前途及职业发展
开发语言·c#
卓豪终端管理40 分钟前
如何安全地管理固定功能设备?
java·大数据·开发语言·网络·人工智能·安全
啊我不会诶43 分钟前
【天梯赛练习】L2-035 完全二叉树的层序遍历
算法·深度优先
Smark.1 小时前
数据结构之BFS广度优先算法(腐烂的苹果)
数据结构·算法·宽度优先
小咖拉眯1 小时前
L2-033 简单计算器满分笔记
笔记·算法