C C 學習 判斷某日是當年第幾天

2021-06-28 19:13:15 字數 2293 閱讀 3544

學期末兩周實訓,老師布置若干題目。其中,第一題為:判斷某日是當年第幾天

問題描述:用結構體表示日期,輸入乙個日期(年、月、日),計算從輸入這年的1月1日到輸入的日期的總天數days並輸出。

1. 設計結構體

結構體中包含三個成員,分別為整型的年、月、日。

struct date;
2.日期輸入設計

這裡按照常規日期格式:年用四位數字表示,月、日用兩位數字表示。故使用語句」%4d%2d%2d」來擷取相應數量的數字賦值給結構體成員。

scanf("%4d%2d%2d",&data.year, &data.month, &data.day);
3.天數計算

從輸入的日期可知(如20141222),12月只過了22日,不足乙個月。所以,我們可以先對1-11月的天數進行求和。 注:下述**中陣列m記錄平年每個月的天數,方便起見從1號下標開始使用。

int total_day = 0;//初始化變數

int m[13] = ;

//除當月之外的月份天數加和,直至一月

for(i = data.month-1;i >= 1;i--)

total_day += m[i];

1-11月的天數求和完畢後,就可將12月的天數加到總天數中,該步驟可與在1-11月求和前進行。

//當月天數加和 

total_day += data.day;

上述操作都是以平年的天數進行求和的。若輸入的年份為閏年且求解的日期在3月或以上,則需要補多一天(即2月29日)。注:閏年判斷見第四點。

if( (data.year % 4 == 0 && data.year % 100 != 0) || (data.year % 400 == 0) )

}

4.閏年判斷

閏年的條件有兩個,滿足任意乙個即為閏年。

-1.年份能被4整除,且不能被100整除

-2.年份能被400整除

if((data

.year<1or

data

.year>

9999) && (data

.month<1or

data

.month>

12)&& (data

.day<1or

data

.day>

12))

5.合法性檢查
//輸入合法性檢查 

if(data

.year<1&&

data

.year>

9999

&&data

.month<1&&

data

.month>

12&&

data

.day<1&&

data

.day>

12)else

附完整**:
/*****************************************

module name:判斷某日是當年第幾天

module date:20141222

module auth:clyoko

description:用結構體表示日期,輸入乙個日期(年、月、日),計算從輸入這年的1月1日到輸入的日期的總天數days並輸出。

other:

revision history:

date rel ver. notes

20141222 1.0 建立程式

****************************************==*/

#include

#include

#include

using

namespace

std;

struct datedata;

int main(int argc, char *argv)

; int total_day = 0;

int i=0;

while(1)

else

}cout

<<"該日期到這年1月1日的總天數為:"

<"pause"); }}

return

0;}

判斷某日是該年第幾天

include using namespace std struct infor int main int i 31 28 31 30 31 30 31 31 30 31 30 31 struct infor phead null,ptail null,p null freopen 1.txt r ...

計算某日是該年第幾天

include int leap int a 自定義函式leap用來指定年份是否是閏年 int number int year,int m,int d 自定義函式number計算輸入日期是改年第幾天 陣列a存放平年每月天數 int b 12 陣列b存放閏年每月天數 if leap year 1 判斷...

計算某日是該年的第幾天

include 1 普通年能被4整除且不能被100整除的為閏年。如2004年就是閏年,1900年不是閏年 2 世紀年能被400整除的是閏年。如2000年是閏年,1900年不是閏年 3 對於數值很大的年份,這年如果能整除3200,並且能整除172800則是閏年。1 3 5 7 8 10 12月份,每個...