函数综合编程题。输入年月日,输出中文的星期几。

函数综合编程题。输入年月日,输出中文的星期几。

采用菜单选择功能实现,(仿照课本上例5.7)

输入1进入闰年信息查询;输入2进入元旦是星期几的查询;

输入3进入年月日是星期几的查询。输入4程序结束。

要求用多个自定义函数分别实现不同的功能:判断是否是闰年、计算元旦是星期几、

计算给定的年月日是给定的年的第几天。

然后调用这几个自定义函数,实现计算指定的年月日是星期几的功能。

其中,元旦是星期几的计算公式为:w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7

y表示年份,w取值0~6,分别表示星期天、星期一、…星期六。

测试用例:

2000 2 15 星期二
2000 3 15 星期三
2004 3 1  星期一
2011 2 15 星期二
2012 2 15 星期三
2013 3 15 星期五

#include<stdio.h>
void judge_leap_year(void);
void find_NewYearsDay(void);
void find_day(void);
void day_of_week(int k);
int main(void)
{
    int n;
    printf("输入1进入闰年信息查询\n");
    printf("输入2进入元旦是星期几的查询\n");
    printf("输入3进入年月日是星期几的查询\n");
    printf("输入4程序结束\n");
    while (scanf("%d", &n) == 1)
    {
        switch (n)
        {
        case 1:judge_leap_year(); break;
        case 2:find_NewYearsDay(); break;
        case 3:find_day(); break;
        case 4:printf("\n谢谢使用!");
                exit(0);
        }
    }
    return 0;
}
void judge_leap_year(void)
{
    int y;

    printf("请输入年份:\n");
    scanf("%d", &y);
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
        printf("%d年是闰年.\n", y);
    else
        printf("%d年不是闰年.\n", y);
}
void find_NewYearsDay(void)
{
    int y, t;

    printf("请输入所求元旦所在的年份:\n");
    scanf("%d", &y);
    t = (y + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400) % 7;
    day_of_week(t);
}
void find_day(void)
{
    int i, y, m, d, sum = 0;

    printf("请输入年月日:\n");
    scanf("%d/%d/%d", &y, &m, &d);
    switch (m - 1) {
    case 11:sum += 30;
    case 10:sum += 31;
    case 9:sum += 30;
    case 8:sum += 31;
    case 7:sum += 31;
    case 6:sum += 30;
    case 5:sum += 31;
    case 4:sum += 30;
    case 3:sum += 31;
    case 2:sum += ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) ? 29 : 28;
    case 1:sum += 31; break;
    }
    sum += d;
    i = sum % 7;
    i += (y + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400) % 7;
    if (i - 1 < 7)
        day_of_week(i - 1);
    else
        day_of_week(i - 8);
}
void day_of_week(int k)
{
    switch (k)
    {
    case 0:printf("星期天\n"); break;
    case 1:printf("星期一\n"); break;
    case 2:printf("星期二\n"); break;
    case 3:printf("星期三\n"); break;
    case 4:printf("星期四\n"); break;
    case 5:printf("星期五\n"); break;
    case 6:printf("星期六\n");
    }
}

此源码来自于608ヾ(✿゚▽゚)ノ

说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒