
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