C语言编程100例:4

题目:输入某年某月某日,判断这一天是这一年的第几天?

分析:四年一闰,百年不闰,四百年再闰,结合网上闰年的判断方法可以归纳一下:
1、年份能被4整除;2、年份若是100的整数倍的话,需被400整除,否则是平年。具备这两个条件的就是闰年

所以我们根据以上的判断可以写出相应的判断条件:

普通年(不能被100整除的年份)的闰年判断方法:

(year%100!=0)&&(year%4==0)

世纪年(能被100整除)的闰年的判断:

(year%100==0)&&(year%400==0)

两个判断条件或的情况下就是闰年:

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

#include<stdio.h>
int main(void){
	int year,month,day;
	int commonyear[12]={31,28,31,30,31,30,31,31,30,31,30,31};//设置一个数组用来记录平年的月份数量
	int leapyear[12]={31,29,31,30,31,30,31,31,30,31,30,31};//设置一个数组用来记录闰年的月份数量。
	int i,totalday=0;
	scanf("%d %d %d",&year,&month,&day);//输入年,月,日
	//判断年份.
	//两个或判断语句,第一个或判断语句有两个条件,1.不能整除100且能够整除4.第二个或条件语句判断:1.能够整除100且能整除400
	if(((year%100!=0)&&(year%4==0))||((year%100==0)&&(year%400==0))){
		//一个for循环统计距离上个月份的所有月份总和。
		for(i=0;i<month-1;i++){
			totalday+=leapyear[i];
		}
	}else{
		for(i=0;i<month-1;i++){
			totalday+=commonyear[i];
		}
	}
	//加上当月的天数
	totalday+=day;
	printf("%d",totalday);
	return 0;
}

以上就是代码部分,整体来说题目不能就是要理清楚判断条件的设置。

猜你喜欢

转载自blog.csdn.net/u014128662/article/details/69222682