问题及代码:
Problem A: C语言习题 计算该日在本年中是第几天
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3065 Solved: 1670
[ Submit][ Status][ Web Board]
Description
定义一个结构体变量(包括年、月、日)。编写一个函数days,由主函数将年、月、日传递给函数days,计算出该日在本年中是第几天并将结果传回主函数输出。
Input
年月日
Output
当年第几天
Sample Input
2000 12 31
Sample Output
366
/*
烟台大学计算机学院
作者:景怡乐
完成时间:2016年12月16日
*/
#include <stdio.h>
struct y_m_d
{
int year;
int month;
int day;
}date;//定义结构体变量
int main()
{
struct y_m_d date;
int days(y_m_d);
int day_sum;
scanf("%d%d%d",&date.year,&date.month,&date.day);
day_sum=days(date);
printf("%d\n",day_sum);
return 0;
}
int days(struct y_m_d date)
{
int sum=date.day;
int a[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for(i=1; i<date.month; i++)
{
sum+=a[i];
}
if(date.month>2&&((date.year%4==0&&date.year%100!=0)||date.year%400==0)) //若闰年,且晚于2月,加一天
sum++;
return sum;
}
运行结果:
知识点总结:可以定义一个数组,先将二月按28天计入,最后再判断是否为闰月,若是,加一天,要记得同时判断已在二月之后。
闰年的判断方法
公历闰年判定遵循的规律为:
四年一闰,百年不闰,四百年再闰。
公历闰年的简单计算方法(符合以下条件之一的年份即为闰年)
1。能被4整除而不能被100整除。
2。能被400整除。
学习心得:再次遇到了关于闰年的问题,闰年的判断方法为(n%4==0&&n%100!=0)||(n%400==0)