7-19 计算天数(含重难点注释)

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:
在一行输出日期是该年中的第几天。

输入样例1:

2009/03/02

输出样例1:

61

输入样例2:

2000/03/02

输出样例2:

62

#include <stdio.h>

int main ()
{
	//这种题目的情况,加一个isPrime判定平年还是闰年,直观简洁
	int y,m,d,x;
	scanf("%d/%d/%d",&y,&m,&d);
	int isPrime=0;
	//&&表示“与,或”,||表示“且” 
	while(((y%4==0)&&(y%100!=0))||(y%400==0)){
		isPrime=1;
		break;
	}
	if(isPrime){
	if(m==1){
		x=d;
	}
	else if(m==2){
		x=31+d;
	}
	else if(m==3){
		x=60+d;
	}
	else if(m==4){
		x=91+d;
	}
	else if(m==5){
		x=121+d;
	}
	else if(m==6){
		x=152+d;
	}
	else if(m==7){
		x=182+d;
	}
	else if(m==8){
		x=213+d;
	}
	else if(m==9){
		x=244+d;
	}
	else if(m==10){
		x=274+d;
	}
	else if(m==11){
		x=305+d;
	}
	else{
		x=335+d;
	}
}

	else{
	if(m==1){
		x=d;
	}
	else if(m==2){
		x=31+d;
	}
	else if(m==3){
		x=59+d;
	}
	else if(m==4){
		x=90+d;
	}
	else if(m==5){
		x=120+d;
	}
	else if(m==6){
		x=151+d;
	}
	else if(m==7){
		x=181+d;
	}
	else if(m==8){
		x=212+d;
	}
	else if(m==9){
		x=243+d;
	}
	else if(m==10){
		x=273+d;
	}
	else if(m==11){
		x=304+d;
	}
	else{
		x=334+d;
	}
	}
printf("%d\n",x);

	return 0;
}

猜你喜欢

转载自blog.csdn.net/nnnnnick/article/details/89814336