经典C程序100例(4)

题目:输入某年某月某日,判断这一天是这一年的第几天?
分析:首先想到闰年是比平年多一天,还有一点是尽管是闰年,如果月份输入的是1或者2月,则多出的这一天是不用考虑的。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include	<stdio.h>
 
int	main(void)
{
	unsigned int	year=0;		//年 
	unsigned int	month=0;	//月 
	unsigned int	day=0;		//日 
	unsigned int 	number=0;	//是一年中的第几天 
	unsigned char 	days[12]={31,28,31,30,31,30,31,31,30,31,30,31};	//每个月有几天 
	int i;
 
	printf("输入年 月 日:");
	scanf("%d %d %d",&year,&month,&day);
 
	for(i=1;i<month;i++)			
	{
		number=number+days[i-1];	//累加月份之前月份的天数 
	}	
 
	if(((year%4==0&&year%400==0)||(year%4==0&&year%100!=0))&&(month>=3))	
	{	//判断闰年且月份大于等于三月 
		number=number+1;	//增加一天 
	}
 
	number=number+day;		//加上本月的天数 
	printf("\n%d年%d月%d日是一年中的第 %d 天",year,month,day,number);	//打印结果 
 
	return	0;	
}

标签: , ,

留下回复