C语言如何推理出今天是星期几?

99ANYc3cd6
预计阅读时长 9 分钟
位置: 首页 C语言 正文

推理今天是星期几的C语言程序

以下是一个用C语言编写的程序,可以根据给定的日期(年、月、日)计算出该日期是星期几,程序使用了Zeller公式来实现这个功能。

推理出今天是星期几 c语言
(图片来源网络,侵删)
#include <stdio.h>
#include <stdbool.h>
// 判断是否为闰年
bool isLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 获取某个月的天数
int getDaysInMonth(int year, int month) {
    if (month == 2) {
        return isLeapYear(year) ? 29 : 28;
    } else if (month == 4 || month == 6 || month == 9 || month == 11) {
        return 30;
    } else {
        return 31;
    }
}
// 计算星期几 (0=星期日, 1=星期一, ..., 6=星期六)
int calculateDayOfWeek(int year, int month, int day) {
    // Zeller公式调整:1月和2月视为前一年的13月和14月
    if (month < 3) {
        month += 12;
        year--;
    }
    int century = year / 100;
    int yearOfCentury = year % 100;
    int h = (day + (13 * (month + 1)) / 5 + yearOfCentury + yearOfCentury / 4 + century / 4 + 5 * century) % 7;
    // 调整结果使0=星期日, 1=星期一, ..., 6=星期六
    return (h + 5) % 7;
}
// 将星期几转换为字符串
const char* getDayName(int dayOfWeek) {
    switch (dayOfWeek) {
        case 0: return "星期日";
        case 1: return "星期一";
        case 2: return "星期二";
        case 3: return "星期三";
        case 4: return "星期四";
        case 5: return "星期五";
        case 6: return "星期六";
        default: return "未知";
    }
}
int main() {
    int year, month, day;
    printf("请输入日期(年 月 日): ");
    scanf("%d %d %d", &year, &month, &day);
    // 验证输入的日期是否有效
    if (year < 1 || month < 1 || month > 12 || day < 1 || day > getDaysInMonth(year, month)) {
        printf("无效的日期!\n");
        return 1;
    }
    int dayOfWeek = calculateDayOfWeek(year, month, day);
    printf("%d年%d月%d日是%s\n", year, month, day, getDayName(dayOfWeek));
    return 0;
}

程序说明

  1. isLeapYear函数:判断给定年份是否为闰年
  2. getDaysInMonth函数:返回指定年份和月份的天数
  3. calculateDayOfWeek函数:使用Zeller公式计算星期几
    • 调整1月和2月为前一年的13月和14月
    • 应用Zeller公式计算
    • 调整结果使0对应星期日
  4. getDayName函数:将数字星期几转换为中文星期名称
  5. 主函数
    • 获取用户输入的日期
    • 验证日期有效性
    • 计算并输出星期几

使用示例

请输入日期(年 月 日): 2025 10 15
2025年10月15日是星期日
请输入日期(年 月 日): 2025 2 29
2025年2月29日是星期四

注意:这个程序假设输入的日期是有效的,如果输入无效日期(如2月30日),程序会提示错误。

推理出今天是星期几 c语言
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
dede调用本栏目标题
« 上一篇 03-07
织梦网站攻击手法有哪些防御措施?
下一篇 » 03-07

相关文章

取消
微信二维码
支付宝二维码

目录[+]