GGyoungoG
Jskey1876
采纳率84.6%
2019-04-08 11:24 阅读 567

使用C语言进行一个月份的问题解决

80

使用C语言编写一个程序,在主函数中从用户处读取一年和两个月(当年)的数字。该计划将输出当年给定月份之间的天数,包括相关月份的天数。

该计划必须考虑(检查)可能的闰年。使用函数计算天数。使用判断年份是否是闰年的函数确定给定年份是否为闰年。

注:给定月份必须关联给定年份。例如,如果用户以一年为单位输入2019年,两个月输入8到11,程序将输出2019年8月至11月(包括这些月)之间的月份天数。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    DRACULAX05 DRACULAX05 2019-04-08 11:49
    #include <stdio.h>
    
    bool isRunYear(int year)
    {
        return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
    }
    
    int getMonthDay(int year, int month)
    {
        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
            return 31;
    
        if (month == 2)
        {
            return isRunYear(year) ? 29 : 28;
        }
        return 30;
    }
    
    int main(void)
    {
        bool isFirst = true;
        int year = 0, month1 = 0, month2 = 0, nTotal = 0;
    
        while (year <= 0 || month1 <= 0 || month2 <= 0 || 
            month1 > 12 || month2 > 12 || month1 > month2)
        {
            if (!isFirst) {
                printf("输入错误,请重新输入\n");
            }
    
            printf("请输入年份:\n");
            scanf("%d", &year);
            printf("请输入起始月份:\n");
            scanf("%d", &month1);
            printf("请输入结束月份:\n");
            scanf("%d", &month2);
    
            isFirst = false;
        }
    
        for (int i = month1; i <= month2; i++)
        {
            nTotal += getMonthDay(year, i);
        }
    
        printf("间隔天数:%d\n", nTotal);
        return 0;
    }
    
    点赞 1 评论 复制链接分享

相关推荐