专门做图片的网站cms,企业网站建设怎么选择空间,给企业做网站怎么收钱,伍佰亿网站系统目录
一 简介
二 代码实现
三 时空复杂度 一 简介
在C语言中#xff0c;计算某日是该年的第几天通常涉及以下步骤#xff1a;
判断输入的年份是否为闰年。根据判断结果#xff0c;确定当年二月的天数#xff08;28或29天#xff09;。然后#xff0c;根据月份从前…目录
一 简介
二 代码实现
三 时空复杂度 一 简介
在C语言中计算某日是该年的第几天通常涉及以下步骤
判断输入的年份是否为闰年。根据判断结果确定当年二月的天数28或29天。然后根据月份从前几个月开始累计天数。 二 代码实现 以下是一个简单的C语言函数示例它接收一个结构体包含年、月、日作为参数并返回该日期是该年的第几天 #include stdio.h// 判断是否为闰年的函数
int is_leap_year(int year) {if ((year % 4 0 year % 100 ! 0) || (year % 400 0))return 1; // 是闰年elsereturn 0; // 不是闰年
}// 计算给定日期是该年的第几天的函数
int day_of_the_year(struct Date date) {int days[2][12] { { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, // 平年每个月的天数{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } // 闰年每个月的天数};int sum 0;for (int i 0; i date.month - 1; i)sum days[is_leap_year(date.year)][i];// 加上当前月份的天数sum date.day;return sum;
}// 定义一个Date结构体
struct Date {int year;int month;int day;
};int main() {struct Date today { 2024, 3, 20 }; // 示例日期2024年3月20日printf(The day of the year is: %d\n, day_of_the_year(today));return 0;
}
这个代码片段首先定义了一个判断闰年的函数 is_leap_year然后定义了 day_of_the_year 函数来计算指定日期是一年中的第几天。结构体 Date 包含年、月和日信息。函数通过遍历到指定月份之前的天数并加上当前月份的天数来计算总天数。
注意上述代码没有进行错误检查例如确保日期的有效性如月份数值范围是1-12天数是合法的。在实际编程中应当添加适当的错误处理代码以确保程序健壮性。 三 时空复杂度 时间复杂度 函数 is_leap_year 的时间复杂度为 O(1)因为它仅包含一次条件判断和两次模运算。函数 day_of_the_year 中主要的时间消耗在于 for 循环循环次数等于输入日期的月份减一。因此其时间复杂度为 O(month)。在实际应用中月份最大值为 12所以可以视为常数时间复杂度 O(1)。
总结整个代码片段的时间复杂度为 O(1)。
空间复杂度 静态数组 days 的大小固定为 2x1224 个整数无论输入的日期如何变化所占用的空间都是固定的。结构体 Date 在栈上分配其大小也是固定的3个整数。
总结整个代码片段的空间复杂度为 O(1)。