关键点
1、这里要先判断是否是闰年;
2、针对闰年与非闰年进行处理;
直接上 C 语言版本代码:
#include <stdio.h>
#include <string.h>
int year,month,day,leap=0,sum=0;
int main(){
int leaper(int year);
int summer(int month,int day,int leap);
printf("请输入年、月、日,用空格分隔:\n");
scanf("%d %d %d",&year,&month,&day);
int leap=leaper(year);
if(!leap){
if(month==2&&day>=29){
printf("输入错误!\n");
return 0;
}
}
printf("该日是%d年的第%d天\n", year,summer(month,day,leap));
return 0;
}
int leaper(int year){//判断闰年
if(year%4==0&&year%100!=0){//闰年
leap=1;
return leap;
}else if(year%400==0){//闰年
leap=1;
return leap;
}else{//非闰年
return leap;
}
}
int summer(int month,int day,int leap){
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};//月份数组
int sum=0,i;
if(day>b[month-1]){
printf("error!\n");
return 0;1
}
if(month==1){
sum=day;
return sum;
}else {
for(i=0;i<month-1;i++)
sum+=b[i];
if(leap&&month>2)
sum+=1;
return sum+day;
}
}
输出结果:
请输入年、月、日,用空格分隔:
2017 3 4
该日是2017年的第63天