日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

輸入年份和月份,輸出該月日歷,復(fù)雜問題的分解

 BUPT-BYR 2010-12-08

 

5.            輸入年份和月份,輸出該月日歷,復(fù)雜問題的分解

 

/*輸入年份和月份,輸出該月月歷*/

#include <stdio.h>

/*聲明函數(shù)GetWeekDay求某年某月某日是星期幾*/

int GetWeekDay(int,int,int);

/*聲明函數(shù)GetMonthDays求某年某月共有幾天*/

int GetMonthDays(int,int);

/*聲明函數(shù)PrintMonthCalender打印某月日歷*/

int PrintMonthCalender(int,int);

/*聲明函數(shù)CheckLeap判斷某年是否是閏年*/

int CheckLeap(int);

main()

{

       /*定義變量,startDay為要求月的第一天的星期數(shù),

        *days為要求月的天數(shù)

        */

       int year,month,startDay,days;

       printf("input the year and month(YYYY-MM):");

       scanf("%d-%d",&year,&month);

       printf("\n\t\t\t%d-%d\n",year,month);

       /*引用函數(shù)GetWeekDay求要求月的首天是星期幾*/

       startDay=GetWeekDay(year,month,1);

       /*引用函數(shù)GetMonthDays求要求月有多少天*/

       days=GetMonthDays(year,month);

       PrintMonthCalender(startDay,days);

       return(0);

}

/*定義函數(shù)GetWeekDay求某年某月某日是星期幾*/

int GetWeekDay(int year,int month,int day)

{

       /*定義變量,days是從000111算起的天數(shù),

        *weekday是星期數(shù),i是控制月份的變量

        */

       int days,weekday,i;

       days=year*365+year/400+year/4-year/100;

       /*計算從000111到該月為止的天數(shù)*/

       for(i=12;i>=month;i--)

              days=days-GetMonthDays(year,i);

       /*計算從000111到該天為止的天數(shù)*/

       days=days+day;

       /*計算該天的星期數(shù)*/

       weekday=days%7;

       return weekday;

}

/*定義函數(shù)GetMonthDays求某年某月共有幾天*/

int GetMonthDays(int year,int month)

{

       /*對天數(shù)不同的月份分開討論*/

       if(month==4||month==6||month==9||month==11)

              return 30;

       else

       {

              /*單獨對二月的討論*/

              if(month==2)

              {

                     /*對閏年的判斷*/

                     if(CheckLeap(year))

                            return 29;

                     else

                            return 28;

              }

              else

                     return 31;

       }

}

/*定義函數(shù)PrintMonthCalender打印某月日歷*/

int PrintMonthCalender(int startDay,int days)

{

       int num,count;

       num=-startDay;

       printf("\nSun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\n");

       /*控制輸出的天數(shù)*/

       while(num<=days)

       {

              printf("\n");

              /*對一個星期七天的控制*/

              for(count=1;count<=7;count++)

              {

                     num=num+1;

                     /*控制輸出的天數(shù)*/

                     if(num>=1&&num<=days)

                            printf("%d\t",num);

                     else

                            printf("\t");

              }

       }

       printf("\n");

}

/*定義函數(shù)CheckLeap判斷某年是否是閏年*/

int CheckLeap(int year)

{

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

              return 1;

       else

              return 0;

}

運行效果如圖:

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多