大學(xué)生新聞網(wǎng),大學(xué)生新聞發(fā)布平臺(tái)
大學(xué)生新聞網(wǎng)
大學(xué)生新聞大學(xué)生活校園文學(xué)大學(xué)生村官
社會(huì)實(shí)踐活動(dòng)社會(huì)實(shí)踐經(jīng)歷社會(huì)實(shí)踐報(bào)告社會(huì)實(shí)踐總結(jié)社會(huì)實(shí)踐心得
全國排名校友會(huì)版軟科排名分類排名本科排名一本排名二本排名?婆琶學(xué)校地址
求職簡歷職場法則面試技巧職場故事求職招聘大學(xué)生就業(yè)
英語學(xué)習(xí)計(jì)算機(jī)學(xué)習(xí)電氣工程機(jī)械工程經(jīng)濟(jì)管理建筑設(shè)計(jì)財(cái)務(wù)會(huì)計(jì)
申請(qǐng)書證明書檢討書自薦信演講稿心得體會(huì)調(diào)查報(bào)告讀后感求職信推薦信其它范文

C語言日期函數(shù),日期處理函數(shù)

定義一個(gè)表示日期的結(jié)構(gòu)體類型,再分別定義函數(shù)完成下列功能:計(jì)算某一天是對(duì)應(yīng)年的第幾天,這一年一共多少天;計(jì)算兩個(gè)日期之間相隔的天數(shù)。兩個(gè)日期由鍵盤輸入。

算法思想
設(shè)定結(jié)構(gòu)體類型表示日期類型名為 Date,利用 typedef 將其定義為日期型類型名,有三個(gè)整型類型的成員分別表示年、月、日。

設(shè)定函數(shù)計(jì)算輸入的日期是這一年的第幾天。函數(shù)的形參為日期型變量,函數(shù)體中設(shè)定整型數(shù)組存放每個(gè)月的天數(shù),二月份的天數(shù)為 28 天;設(shè)定函數(shù)判斷年份是否為閏年以決定二月份的天數(shù)。根據(jù)輸入的日期月份,在數(shù)組中將相應(yīng)的月份天數(shù)求和,假日曰期即為天數(shù)。


設(shè)定函數(shù)完成兩個(gè)日期的比較,比較形參 d 和 s 兩個(gè)日期的大小。首先比較年,同年的比較月,同月的比較日。變量 start 保存輸入的小的日期年份,end 保存輸入日期大的年份,然后計(jì)算兩個(gè)日期之間的天數(shù)。


程序由 6 個(gè)函數(shù)構(gòu)成,yearday() 函數(shù)計(jì)算某年的天數(shù),monthday() 函數(shù)計(jì)算某年二月份的天數(shù),dayofyeaK() 函數(shù)計(jì)算某日期是某年的第幾天,cmpdate() 函數(shù)比較兩個(gè)日期的大小,interday() 函數(shù)計(jì)算兩個(gè)日期之間的天數(shù);dayofyear() 函數(shù)調(diào)用 monthday() 函數(shù),interday() 函數(shù)調(diào)用 cmpdate() 函數(shù)、yearday() 函數(shù)、dayofyear() 函數(shù);主函數(shù)調(diào)用 yearday() 函數(shù)、dayofyear() 函數(shù)、interday() 函數(shù)。

程序代碼

#include <stdio.h>
#include <math.h>
typedef struct
{
    int year,month,day;
}Date;
 
int yearday(int year)
{
    int yday;
    if(year%4==0&&year%100!=0||year%400==0)
        yday=366;
    else
        yday=365;
    return yday;
}
 
int monthday(int year)
{
    int mday;
    if(year%4==0&&year%100!=0||year%400==0)
        mday=29;
    else
        mday=28;
    return mday;
}
 
int dayofyear(Date d)
{
    int i,total=0;
    int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    months[2]=monthday(d.year);
    for(i=1;i<d.month;i++)
        total=total+months[i];
    total=total+d.day;
    return total;
}
 
int cmpdate(Date d,Date s)
{
    int result;
    if(d.year==s.year)
    {
        if(d.month==s.month)
        {
            if(d.day==s.day)
            result=0;
            else result=d.day-s.day;
        }
        else result=d.month-s.month;
    }
    else result=d.year-s.year;
    return result;
}
 
int interday(Date d,Date s)
{
    int result,te,ts,total;
    int year,start,end,day;
    int i;
    result=cmpdate(d,s);
    if(result>0)
    {
        start=s.year;
        end=d.year;
        te=dayofyear(d);
        ts=dayofyear(s);
    }
    else if(result<0)
    {
        start=d.year;
        end=s.year;
        ts=dayofyear(d);
        te=dayofyear(s);
    }
    else return 0;
    if(start==end)
        return abs(te-ts);
    else
    {
        total=0;
        for(i=start;i<=end;i++)
        {
            day=yearday(i);
            if(i==start)
                total=total+day-ts;
            else if(i==end)
                total=total+te;
            else
                total=total+day;
        }
    }
    return total;
}
 
int main()
{
    Date d1,d2;
    int y,n;
    printf("input date:");
    scanf("%d%d%d",&d1.year,&d1.month,&d1.day);
    scanf("%d%d%d",&d2.year,&d2.month,&d2.day);
    y=yearday(d1.year);
    n=dayofyear(d1);
    printf("%d days %d\n",d1.year,y);
    printf("%d-%d-%d is the %d day.\n",d1.year,d1.month,d1.day,n);
    n=interday(d1,d2);
    printf("%d-%d-%d and %d-%d-%d distance ",d1.year,d1.month,d1.day,d2.year,d2.month,d2.day);
    printf("%d days\n",n);
    return 0;
}
調(diào)試運(yùn)行結(jié)果
輸入 2009 年 2 月 1 日和 2015 年 2 月 1 日,程序運(yùn)行結(jié)果如下所示:
input date:2009 2 1 2015 2 1
2009 days 365
2009-2-1 is the 32 day.
2009-2-1 and 2015-2-1 distance 2191 days
總結(jié)
結(jié)構(gòu)體變量作為函數(shù)參數(shù)可以有以下兩種形式。

① 結(jié)構(gòu)體變量的成員作為函數(shù)的實(shí)參,則對(duì)應(yīng)定義函數(shù)的形參為普通變量或數(shù)組。如實(shí)例程序代碼中的“y=yearday(d1.year);”“months[2]=monthday(d.year);”兩條語句,調(diào)用函數(shù)的實(shí)參分別為結(jié)構(gòu)體變量 d1 和 d 的成員 year;對(duì)應(yīng)的被調(diào)用函數(shù) yearday()、monthday() 的形參都為 int year,是普通的整型變量。


② 函數(shù)的實(shí)參為結(jié)構(gòu)體變量,則對(duì)應(yīng)函數(shù)的形參應(yīng)該也是結(jié)構(gòu)體變量,其傳遞方式和普通變量一樣,采用的是值傳遞方式。如程序代碼中的 dayofyear()、cmpdate() 和 interday() 函數(shù)的形參均為結(jié)構(gòu)體 Date 的變量,在程序調(diào)用時(shí)實(shí)參也為結(jié)構(gòu)體 Date 的變量。
    作者:大學(xué)生新聞網(wǎng)    來源:大學(xué)生新聞網(wǎng)
    發(fā)布時(shí)間:2025-03-10    閱讀:
    掃一掃 分享悅讀
  • C語言日期函數(shù),日期處理函數(shù)
  • 定義一個(gè)表示日期的結(jié)構(gòu)體類型,再分別定義函數(shù)完成下列功能:計(jì)算某一天是對(duì)應(yīng)年的第幾天,這一年一共多少天;計(jì)算兩個(gè)日期之間相隔的
  • 03-10 關(guān)注:0
  • C語言求空間兩點(diǎn)之間的距離
  • 定義一個(gè)表示三維空間點(diǎn)坐標(biāo)的結(jié)構(gòu)類型,通過函數(shù)求空間上任意兩點(diǎn)之間的距離。
  • 03-10 關(guān)注:0
  • C語言三色旗問題
  • 有一根繩子,上面有紅、白、藍(lán)三種顏色的旗子。
  • 03-10 關(guān)注:0
  • C語言整數(shù)逆序輸出
  • 將一個(gè)從鍵盤輸入的整數(shù)存放到一個(gè)數(shù)組中,通過程序的運(yùn)行按照數(shù)組中的逆序輸出該整數(shù),利用遞歸的方法解決問題。
  • 03-10 關(guān)注:0
  • C語言約瑟夫環(huán)問題
  • 編號(hào)為 1,2,3,…,n 的 n 個(gè)人圍坐一圈,任選一個(gè)正整數(shù) m 作為報(bào)數(shù)上限值,從第一個(gè)人開始按順時(shí)針方向報(bào)數(shù),報(bào)數(shù)到 m 時(shí)停止,報(bào)
  • 03-10 關(guān)注:1
  • C語言輸出等腰三角形
  • 本實(shí)例要求從鍵盤輸入任意整數(shù) n,通過程序運(yùn)行輸出對(duì)應(yīng)高度為 n 的等腰三角形。
  • 03-10 關(guān)注:1
主站蜘蛛池模板: 免费人成激情视频| 国产精欧美一区二区三区| 97人人超人超人国产第一页| 草久在线观看视频| 日韩欧美精品综合一区二区三区| 国产精品另类激情久久久免费 | 亚洲色成人网站WWW永久| 一级做a爰全过程免费视频毛片 | 国产麻豆free中文| 亚洲欧美日韩中文字幕在线一| 99久久国产综合精品2020| 没有被爱过的女人在线| 91大神福利视频| 8x视频在线观看| 欧美理论片在线观看一区二区| 在线a人片天堂免费观看高清| 人人干人人干人人干| 91老师国产黑色丝袜在线| 欧美肥臀bbwbbwbbw| 国产精品无码久久久久久| 亚洲av高清一区二区三区| 国产人与动zozo| 日本a∨在线播放高清| 四虎国产精品成人免费久久| 一级一看免费完整版毛片| 狠狠色综合网久久久久久| 国产精品自在线拍国产手机版| 国产成 人 综合 亚洲专| 久久精品九九亚洲精品| 老司机精品视频在线| 宝贝过来趴好张开腿让我看看| 亚洲美女高清一区二区三区| 18禁裸男晨勃露j毛免费观看| 最近中文字幕无吗免费高清| 国产三级国产精品| 国产三级在线观看a| 中国精品白嫩bbwbbw| 爱情岛永久地址www成人| 国产精品自在在线午夜出白浆| 久草电影在线观看| 色三级大全高清视频在线观看 |