欧美亚洲国产精品久久,亚洲国产成人久久综合,亚洲欧美国产另类,97人澡人人添人人爽欧美

大學生新聞網,大學生新聞發布平臺
大學生新聞網
大學生新聞大學生活校園文學大學生村官
社會實踐活動社會實踐經歷社會實踐報告社會實踐總結社會實踐心得
全國排名校友會版軟科排名分類排名本科排名一本排名二本排名專科排名學校地址
求職簡歷職場法則面試技巧職場故事求職招聘大學生就業
英語學習計算機學習電氣工程機械工程經濟管理建筑設計財務會計
申請書證明書檢討書自薦信演講稿心得體會調查報告讀后感求職信推薦信其它范文

C語言日期函數,日期處理函數

定義一個表示日期的結構體類型,再分別定義函數完成下列功能:計算某一天是對應年的第幾天,這一年一共多少天;計算兩個日期之間相隔的天數。兩個日期由鍵盤輸入。

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

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


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


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

程序代碼

#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;
}
調試運行結果
輸入 2009 年 2 月 1 日和 2015 年 2 月 1 日,程序運行結果如下所示:
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
總結
結構體變量作為函數參數可以有以下兩種形式。

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


② 函數的實參為結構體變量,則對應函數的形參應該也是結構體變量,其傳遞方式和普通變量一樣,采用的是值傳遞方式。如程序代碼中的 dayofyear()、cmpdate() 和 interday() 函數的形參均為結構體 Date 的變量,在程序調用時實參也為結構體 Date 的變量。
    作者:大學生新聞網    來源:大學生新聞網
    發布時間:2025-03-10    閱讀:
    掃一掃 分享悅讀
  • C語言漢諾塔問題,用C語言實現漢諾塔
  • 漢諾塔問題是指:一塊板上有三根針 A、B、C。A 針上套有 64 個大小不等的圓盤,按照大的在下、小的在上的順序排列,要把這 64 個圓盤從
  • 03-10 關注:0
  • C語言日期函數,日期處理函數
  • 定義一個表示日期的結構體類型,再分別定義函數完成下列功能:計算某一天是對應年的第幾天,這一年一共多少天;計算兩個日期之間相隔的
  • 03-10 關注:0
  • C語言整數逆序輸出
  • 將一個從鍵盤輸入的整數存放到一個數組中,通過程序的運行按照數組中的逆序輸出該整數,利用遞歸的方法解決問題。
  • 03-10 關注:0
  • C語言約瑟夫環問題
  • 編號為 1,2,3,…,n 的 n 個人圍坐一圈,任選一個正整數 m 作為報數上限值,從第一個人開始按順時針方向報數,報數到 m 時停止,報
  • 03-10 關注:1
  • C語言輸出等腰三角形
  • 本實例要求從鍵盤輸入任意整數 n,通過程序運行輸出對應高度為 n 的等腰三角形。
  • 03-10 關注:1
主站蜘蛛池模板: 达孜县| 曲沃县| 景德镇市| 神木县| 垣曲县| 永嘉县| 鄄城县| 衢州市| 贵定县| 镇雄县| 青岛市| 都兰县| 宜都市| 牡丹江市| 汉源县| 康平县| 霞浦县| 禹州市| 岳普湖县| 德惠市| 全椒县| 陆丰市| 东兰县| 嵩明县| 永福县| 榆社县| 秦皇岛市| 盐山县| 左权县| 昔阳县| 吴堡县| 安乡县| 镇平县| 江阴市| 五原县| 叶城县| 荥阳市| 文山县| 长海县| 应城市| 板桥市|