C语言经典练习题

题目4

        输入某年某月某日,判断这一天是这一年的第几天?

        编程解析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
        润年:指代的是能被4整除而不能被100整除的年份以及能被400整除的年份
        常用的各个月份的天数:一月:31天  二月:28天(润年29天) 三月:31天 四月:30天
五月:31天 六月:30天 七月:31天 八月:31天 九月:30天 十月:31天 十一月:30天 十二月:31天

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int day, month, year, sum, leap;
    printf("请您按照此格式输入日期:年-月-日(2024年-3月-17日)\n");
    scanf("%d-%d-%d", &year, &month, &day);
    switch (month) //先计算某月以前月份的总天数
    {
    case 1:
        break;
    case 2:
        sum = 31;
        break;
    case 3:
        sum = 31 + 28;
        break;
    case 4:
        sum = 31 + 28 + 31;
        break;
    case 5:
        sum = 31 + 28 + 31 + 30;
        break;
    case 6:
        sum = 31 + 28 + 31 + 30 + 31;
        break;
    case 7:
        sum = 31 + 28 + 31 + 30 + 31 + 30;
        break;
    case 8:
        sum = 31 + 28 + 31 + 30 + 31 + 30 + 31;
        break;
    case 9:
        sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
        break;
    case 10:
        sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
        break;
    case 11:
        sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
        break;
    case 12:
        sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
        break;
    default:
        printf("data err!\n");
        break;
    }
    sum = sum + day; //总天数的计算
    //特殊情况的处理:第一步判断是不是润年;第二步需要判断输入的月份是不是大于三
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) //判断是不是润年
    {
        leap = 1;
    }
    else
    {
        leap = 0;
    }
    if (leap == 1 && month >= 3)//判断该月份是不是大于三天
    {
        sum++;
    }
    printf("它是%d年的%d天\n",year,sum);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖风吹过潍坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值