首页 > 代码库 > 华为机试—算日期

华为机试—算日期

题目:算日期

输入一个日期,输出这是这一年的第几天。(题目中没有给出闰年的定义)

输入 20131231

输出 365


#include <stdio.h>   
  
//判断是否为闰年
int isleapyear(int year)  
{  
    if(year%4==0 && year%100!=0 || year%400==0)  
        return 1;  
    return 0;  
}  
  
int main()  
{  
	int year,month,day;
	char a[8];
	int leap[13]={0,31,60,91,121,152,182,213,244,274,305,335,366};
	int noleap[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};

	while(scanf("%s",a)!=EOF){
			year = (a[3]-'0')+(a[2]-'0')*10+(a[1]-'0')*100+(a[0]-'0')*1000;
			month = (a[5]-'0')+(a[4]-'0')*10;
			day = (a[7]-'0')+(a[6]-'0')*10;

			if(isleapyear(year)){
				printf("%d\n",leap[month-1]+day);
			}else{
				printf("%d\n",noleap[month-1]+day);
			}
	}
	return 0;
}  

测试结果,可能不周全,欢迎查漏补缺,

技术分享



华为机试—算日期