C语言经典例4-某一天是这一年的第几天
生活随笔
收集整理的這篇文章主要介紹了
C语言经典例4-某一天是这一年的第几天
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 1 題目
- 2 分析
- 3 實現
- 4 運行結果
1 題目
輸入某年某月某日,判斷這一天是這一年的第幾天?
2 分析
本題涉及到日歷中平年和閏年的概念,平年和閏年的區別在于2月份的天數,平年2月份天數為28天,閏年2月份天數為29天,其他月份天數一樣。
- 判斷平年和閏年的方法:如果年份能被4整除,但不能被100整除,或則能被400整除,則是閏年。用于判斷的if表達式如下:
下面給出每月的天數
| 31天 | 平年28天/閏年29天 | 31天 | 30天 | 31天 | 30天 | 31天 | 31天 | 30天 | 31天 | 30天 | 31天 |
可以發現,在計算時只需給出平年的天數算法,在驗證給出的時間年份是否是閏年且月份數大于2,若是則在天數上加1,把每個月對應的天數都事先計算出來,用switch語句選擇月份即可,實現如下:
注意:在程序中通過月份計算天數時,是從0月開始算的,比如輸入的月日是1月20號,那么這一天必然是該年的第20天,所以在選擇月份的時候,case 1 處的sum為0。
3 實現
#include<stdio.h>int main (void) {int day, month, year, sum;printf("請輸入年月日,格式為年月日,中間空格隔開:");scanf("%d%d%d", &year, &month, &day);switch (month) {case 1: sum = 0; break;case 2: sum = 31; break;case 3: sum = 59; break;case 4: sum = 90; break;case 5: sum = 120; break;case 6: sum = 151; break;case 7: sum = 181; break;case 8: sum = 212; break;case 9: sum = 243; break;case 10: sum = 273; break;case 11: sum = 304; break;case 12: sum = 334; break;}sum = sum + day; // 再加上天數if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {// 判斷是不是閏年if (month > 2) { // 改年是閏年,還要輸入的月份大于2才加一sum = sum + 1; // 該年是閏年,天數要加一}}printf("這是這一年的第%d天", sum);return 0; }4 運行結果
請輸入年月日,格式為年月日,中間空格隔開:2019 4 17 這是這一年的第107天總結
以上是生活随笔為你收集整理的C语言经典例4-某一天是这一年的第几天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言经典例1-无重复数字的三位数
- 下一篇: 计算机网络第一章:计算机网络概述