鱼C论坛

 找回密码
 立即注册
查看: 1320|回复: 4

[已解决]C语言课题

[复制链接]
发表于 2023-11-7 18:56:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
emm作业是打印月历,本来已经写好了,但是写得很少很简单,别的同学的作业都是什么什么管理系统,比较复杂,代码整个几百行的那种
有大佬帮忙弄个复杂的打印月历吗,这个怎么弄得复杂一些却不显得冗杂
最佳答案
2023-11-7 18:56:22
关于编写复杂而不显冗杂的月历打印程序

当设计一个复杂的月历打印程序时,你可以考虑添加一些额外的功能和细节,使其不仅仅是简单的日历显示,同时又不会让代码显得冗长复杂。以下是一些建议:

1. 节假日标注: 在月历上标注重要节假日,例如国庆节、春节等。你可以通过判断日期并在特定日期下方输出相应的节日标志。

2. 月相显示: 添加月相显示功能,根据日期计算当前月份的月相,并在日历中显示。这项功能可以增加一些复杂性,但也能让程序更加生动有趣。

3. 周数显示: 除了天数以外,显示每一天所在的周数,这可以增加一些额外的信息量。

4. 闰年处理: 考虑到闰年的影响,确保你的程序可以正确地处理闰年的情况,这可能需要一些额外的逻辑和计算。

5. 美化输出格式: 使用颜色、特殊字符或者对齐方式来美化输出效果,使得打印出来的月历更具可读性和美感。

这些都是可以增加程序复杂度的方式,但同时也会让你的月历程序变得更加有趣和实用。如果你愿意,我可以帮你修改现有的月历程序,添加其中一些功能。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-7 18:56:22 | 显示全部楼层    本楼为最佳答案   
关于编写复杂而不显冗杂的月历打印程序

当设计一个复杂的月历打印程序时,你可以考虑添加一些额外的功能和细节,使其不仅仅是简单的日历显示,同时又不会让代码显得冗长复杂。以下是一些建议:

1. 节假日标注: 在月历上标注重要节假日,例如国庆节、春节等。你可以通过判断日期并在特定日期下方输出相应的节日标志。

2. 月相显示: 添加月相显示功能,根据日期计算当前月份的月相,并在日历中显示。这项功能可以增加一些复杂性,但也能让程序更加生动有趣。

3. 周数显示: 除了天数以外,显示每一天所在的周数,这可以增加一些额外的信息量。

4. 闰年处理: 考虑到闰年的影响,确保你的程序可以正确地处理闰年的情况,这可能需要一些额外的逻辑和计算。

5. 美化输出格式: 使用颜色、特殊字符或者对齐方式来美化输出效果,使得打印出来的月历更具可读性和美感。

这些都是可以增加程序复杂度的方式,但同时也会让你的月历程序变得更加有趣和实用。如果你愿意,我可以帮你修改现有的月历程序,添加其中一些功能。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-11-7 18:56:27 | 显示全部楼层
对于打印月历的问题,你可以考虑增加一些额外的功能来使代码变得更复杂但不冗杂。以下是一些可以考虑的功能:

1. 用户输入:允许用户输入年份和月份,然后根据输入的年份和月份打印相应的月历。
2. 当前日期高亮:在月历中突出显示当前日期,以便用户可以快速识别。
3. 周末标记:将周末的日期以不同的颜色或其他方式标记出来,以增加可读性。
4. 节假日标记:在月历中标记出国家或地区的节假日,以便用户可以清楚地知道哪些日期是假期。
5. 月历样式:可以根据用户的喜好选择不同的月历样式,例如表格形式、矩形形式等。
6. 命令行参数:允许用户通过命令行参数传递年份和月份,以便在命令行中直接打印月历。

通过添加这些额外的功能,你的代码将变得更加复杂,同时也会提升用户体验和可读性。你可以根据自己的需求选择其中的一些功能进行实现。希望对你有所帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-11-7 19:03:21 | 显示全部楼层
Mike_python小 发表于 2023-11-7 18:56
关于编写复杂而不显冗杂的月历打印程序

当设计一个复杂的月历打印程序时,你可以考虑添加一些额外的功能和 ...
#include <stdio.h>

//确定此月共多少天
int get_days(int year, int month) {
    int days;
    switch (month) {
    case 2:
        days = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 29 : 28;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        days = 30;
        break;
    default:
        days = 31;
        break;
    }
    return days;
}

//用 吉姆拉尔森法则 确定这月第一天是周几
int getDayOfWeek(int year, int month) {
    int  dayOfWeek;

    if (month < 3) {
        month += 12;
        year--;
    }
    dayOfWeek = (1 + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400 + 1) % 7;

    return dayOfWeek;
}

void print_calendar(int year, int month) {
    int days = get_days(year, month);
    int weekday = getDayOfWeek(year, month);  

    printf("  日  一  二  三  四  五  六\n");

    // 打印该月第一天之前的空格
    for (int i = 0; i < weekday; i++) {
        printf("    ");
    }

    // 打印日期
    for (int day = 1; day <= days; day++) {
        printf("%3d ", day);
        weekday++;
        if (weekday == 7) {
            printf("\n");
            weekday = 0;
        }
    }

    printf("\n");
}


int main() {
    int year, month;

    printf("请输入年份和月份(以空格分隔):");
    scanf_s("%d %d", &year, &month);

    print_calendar(year, month);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-7 19:07:51 | 显示全部楼层
Mike_python小 发表于 2023-11-7 18:56
关于编写复杂而不显冗杂的月历打印程序

当设计一个复杂的月历打印程序时,你可以考虑添加一些额外的功能和 ...

请大佬赐教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 23:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表