chap0818

8.18 給出年、月、日,計算日是該年的第幾天。

    

解:主函數接收從鍵盤輸入的日期,並調用sum_day和leap函數計算天數。

其N-S圖見圖8.10。sum_day計算輸入日期的天數。Leap函數返回是否閏年的信息。

    


    

    

程序以下:(xt8-18.c)

#include <stdio.h>

void main()

{ int sum_day( int month, int day);

     int year,month,days;

    printf( "Input date(year,month,day):");

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

    printf( "%d/%d/%d ",year,month,days);

    days=sum_day(month,days);                             /*調用函數一*/

     if(leap(year)&&month>=3)                             /*調用函數二*/

        days=days+1;

    printf( "is the %dth day in this year.\n",days);

}

    

int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};     /*外部數組*/

int sum_day( int month, int day)                     /*函數一:計算日期*/

{ int i;                                                                 /*累加所在月以前的天數*/

     for(i=1;i<month;i++)

        day+=day_tab[i];

     return(day);

}

    

int leap( int year)                                             /*函數二:判斷是否爲閏年*/

{ int leap;

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

     return(leap);

}

    

運行結果:

Input date(year,month,day):2000,10,1

2000/10/1 is the 275th day in this year
本站公眾號
   歡迎關注本站公眾號,獲取更多信息