例7-10原题:定义函数 day_of_year (year, month, day),计算并返回年月日对应的是该年的第几天。
例如:调用 day_of_year (2000, 3, 1) 返回61,调用 day_of_year (1981, 3,1) 返回60。因为2000是闰年,1981不是闰年。
判别闰年的条件:能被4整除但不能被100整除,或能被400整除。
emmmm…我直接给源码吧
这复习到了之前的函数的定义、调用还有关系表达式
#include<stdio.h>
int day_of_year(int year,int month,int day);//函数声明
int main()
{
int year,month,day;
scanf("%d%d%d",&year,&month,&day);//先输入年月日
int sum;
sum=day_of_year(year,month,day);//把函数的返回值赋给sum
printf("%d\n",sum);//将结果输出
return 0;
}
int day_of_year(int year,int month,int day)//函数的定义
{
int k,leap;//k是变量,用来移动,leap用来判断闰年
//数组的初始化,将每月的天数赋给数组
int tab[2][13]=
{
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};//先给出非闰年和闰年的天数
leap=(year%4==0&&year%100!=0||year%400==0);
//判断闰年,闰年时leap=1;否则leap=0
//补个知识点 关系表达式: 用关系运算符将两个表达式连接起来的式子。
//关系表达式的值反映了关系运算(比较)的结果,它是一个逻辑量,取(1)真 或 (0)假
for(k=1;k<month;k++)//当月并没过完,所以不用算所以k<month
day=day+tab[leap][k];//计算天数,用day加上前面月份的天数
return day; //将计算的天数值返回
}