如何用C语言输入日期输出星期?

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

C语言输入日期输出星期

以下是一个完整的C语言程序,可以输入日期(年、月、日)并输出对应的星期几,这个程序使用了基姆拉尔森计算公式(Kim Larsen calculation formula)来计算星期。

#include <stdio.h>
// 函数声明
int dayOfWeek(int year, int month, int day);
int main() {
    int year, month, day;
    // 输入日期
    printf("请输入日期(年 月 日,用空格分隔): ");
    scanf("%d %d %d", &year, &month, &day);
    // 验证输入的日期是否有效
    if (month < 1 || month > 12 || day < 1 || day > 31) {
        printf("输入的日期无效!\n");
        return 1;
    }
    // 计算并输出星期
    int week = dayOfWeek(year, month, day);
    const char *weekdays[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    printf("%d年%d月%d日是%s\n", year, month, day, weekdays[week]);
    return 0;
}
// 计算星期几的函数
int dayOfWeek(int year, int month, int day) {
    // 基姆拉尔森计算公式
    if (month < 3) {
        month += 12;
        year--;
    }
    int c = year / 100;
    int y = year % 100;
    int m = month;
    int d = day;
    int week = (d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7;
    // 调整结果,使0代表星期日,1代表星期一,...,6代表星期六
    return (week + 6) % 7;
}

程序说明

  1. 输入处理

    • 程序提示用户输入年、月、日,用空格分隔
    • 进行简单的日期有效性检查
  2. 星期计算

    • 使用基姆拉尔森公式计算星期几
    • 公式考虑了闰年等因素
    • 结果调整使0代表星期日,1代表星期一,...,6代表星期六
  3. 输出

    使用中文星期名称数组输出结果

示例运行

请输入日期(年 月 日,用空格分隔): 2025 10 15
2025年10月15日是星期日
请输入日期(年 月 日,用空格分隔): 2025 10 16
2025年10月16日是星期一

注意事项

  1. 该程序没有处理所有可能的无效日期(如2月30日)
  2. 对于公历(格里高利历)之前的日期可能不准确
  3. 如果需要处理更复杂的日期验证,可以添加更多的检查逻辑

如果需要更精确的日期处理,可以考虑使用专门的日期库如time.h中的函数。

-- 展开阅读全文 --
头像
织梦文章页标签如何调用?
« 上一篇 昨天
本地dede如何安装模板?
下一篇 » 昨天

相关文章

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

目录[+]