【題解】究竟我的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~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章