【题解】究竟我的Flag还有多久的时间能拖?

说两句题外话,大多数人类都有一个迷惑行为。在新年的那几天回顾上一年发现自己啥都没干,悔恨的泪水就流了下来 为什么今年我还是没上王者 然后开始给自己制定一系列自以为能完成的计划。
当然,想象从来都是给现实摁在地上锤的。当实际操作的时候,你总会吾日三省吾身:
1、这件事情能不能等一下做?
2、这件事能不能明天做?
3、这件事能不能不做?
毕竟明天之后还有明天,明日可以复明日。
在这里插入图片描述
既然你觉得还有大把时间的话,不如我们来写一个简单的小程序。提醒一下你的完成Flag 的剩余时间吧!!!
(距离重新立下一个Flag 还有多久 )


题目描述
用户输入年月日,计算该日在本年中是第几天,并且算出今年还有多少时间?(注意闰年问题)
输入
年月日


解题思路:
1、判断是否为闰年;
2、数据的合法性;
3、求出已过天数;
4、求出剩余天数。

#include <stdio.h>

int main(void){
    
    
    //1、定义需要使用的变量
    int year, month, day;	//用来接收用户输入的年月日
    int month_sum[13] = {
    
    31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};	//平年数据
    int count = 0;	//天数
    int day_sum = 365;    //本年的总天数


    //2、接收用户的数据
    printf("请输入要查询的日期:\n");
    scanf("%d%d%d", &year, &month, &day);

    //3、判断数据合法性,若不合法则要求重新输入
    //年不能为负数、月份不能超过12或为0、天数不能超过当月天数
    while(year <= 0 || month <= 0 || month > 12 || day <= 0 || day > month_sum[month - 1]){
    
    
        printf("数据输入错误,请您重新输入:\n");
        printf("请输入要查询的日期:\n");
        scanf("%d%d%d", &year, &month, &day);
    }

    //4、 判断是否为闰年
    if(year % 4 == 0 && year / 100 != 0 || year % 400 == 0 || year % 100 % 4 == 0){
    
    
        for(int i = 0; i < month - 1; i++)
            count += month_sum[i];  //将前面整月的天数相加
            
        //按照平年数据相加天数
        count += day;

        //只有在二月或以后的才需要加1天
        if(month >= 2) count += 1;   //闰年二月份有29天

        day_sum += 1;   //闰年366天
    }
    //如果为平年,则无需变动。因为标准数据是按照平年标准。
    else{
    
    
        for(int i = 0; i < month - 1; i++)
            count += month_sum[i];
        count += day;
    }

    //5、输出数据
    printf("今天在一年中为第%d天,您的Flag 结束日期还有:%d天!", count, day_sum - count);

    return 0;
}

正确输出
在这里插入图片描述
当错误输入时,要求重新输入
在这里插入图片描述


这里还是要说两句,既然Flag 立下了,就要尽全力去完成他。毕竟时间不等人,哈哈哈~
本月更新进度 2/15

创作不易,你的点赞是我最大的动力!!!
我们下次再见 end~

猜你喜欢

转载自blog.csdn.net/weixin_43776724/article/details/106818834
今日推荐