考研複試上機 C語言 求日期之間的相差天數

2021-10-03 18:59:37 字數 963 閱讀 8626

有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天

有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd
每組資料輸出一行,即日期差值
示例1

20110412

20110422

11
可建立時間結構體方便操作

先計算相差的月份之間的天數,分情況計算

在分情況計算月份相差天數時,計算日相差的天數

再從年份入手,計算兩個時間的年份中閏年的個數

閏年個數*366,其餘年份*355即為年份相差個數

天數間隔需要加1才能相等於時間間隔  ,例如2012 3 25—2012 2 37 為三天,且題中表明連續的時間,間隔視為2天

輸入是一連串的數字,用控制輸入格式 scanf( "%4d%2d%2d",&year,&month,&day );

以下是**:

#include #include typedef struct t                //時間結構體

t;int fun(int n) // 判斷閏年 yes 1 no 0

int main();

scanf("%4d%2d%2d",&x1.y,&x1.m,&x1.d);

scanf("%4d%2d%2d",&x2.y,&x2.m,&x2.d);

if(x1.melse

for(i=x1.y;iif(fun(i))

cnt++;

n+=366*cnt+365*(abs(x2.y-x1.y)-cnt);

printf("%d\n",n+1); //時間間隔與時間天數相差1,且題中連續兩天時間間隔為2

return 0;

}

2021考研複試C上機1

1.二進位制數轉十進位制數程式 include 二進位制轉十進位制c程式 intmain intbin to deci int a return sum 2.十進位制轉二進位制程式 include intmain intdeci to bin int a for j i 1 j 0 j return...

清華考研複試上機 N的階乘

輸入乙個正整數n,輸出n的階乘。正整數n 0 n 1000 輸入可能包括多組資料,對於每一組輸入資料,輸出n的階乘示例1 4 515 24 1201307674368000思路 1000的階乘肯定是超過long long不知道多少位的。所以這道題只能用字串來處理。好在這道題要實現的乘法是乙個大整數乘...

考研複試上機C 前序,中序,後序序列的轉換

string a,b a用來儲存前序序列,b用來儲存中序序列 string a,b a用來儲存後序序列,b用來儲存中序序列 void post int b1,e1,int b2,int e2 b1,e1和b2,e2分別為前序序列和中序序列的開始下標和終止下標 void pre int b1,e1,i...