#include <stdio.h>
//输入一个日期,输出当前日期是这一年的第几天
//宏定义
#define MONTH_1 31
#define MONTH_2 28
#define MONTH_3 31
#define MONTH_4 30
#define MONTH_5 31
#define MONTH_6 30
#define MONTH_7 31
#define MONTH_8 31
#define MONTH_9 30
#define MONTH_10 31
#define MONTH_11 30
#define MONTH_12 31
int main()
{
int year, month, day;
printf("请输入要查询的日期(年/月/日):");
scanf("%d/%d/%d", &year, &month, &day);//从终端输入日期
int leap = 0;//闰年的增量 也是闰年的标志位 0 平年 1 闰年
//判断输入的日期是否有误
//判断年是闰年还是平年
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){
leap = 1;
}
//判断月份输入的是否有误
if(month < 1 || month > 12){
printf("您输入的月份有误,请重新输入\n");
//在main函数里面使用return,结束整个程序
return -1;
}
//判断日是否有误
//月份:1 3 5 7 8 10 12 最多31天
if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
if(day < 1 || day > 31){
printf("您输入的日期有误,请重新输入\n");
return -1;
}
}
//月份:4 6 9 11 最多30天
if(month==4 || month==6 || month==9 || month==11){
if(day < 1 || day > 30){
printf("您输入的日期有误,请重新输入\n");
return -1;
}
}
//月份:2 闰年最多29天 平年最多28天
if(month == 2){
if(leap == 1){ //闰年
if(day < 1 || day > 29){
printf("您输入的日期有误,请重新输入\n");
return -1;
}
}else if(leap == 0){ //平年
if(day < 1 || day > 28){
printf("您输入的日期有误,请重新输入\n");
return -1;
}
}
}
int days = 0;
switch(month){
case 12:
days += MONTH_11;
case 11:
days += MONTH_10;
case 10:
days += MONTH_9;
case 9:
days += MONTH_8;
case 8:
days += MONTH_7;
case 7:
days += MONTH_6;
case 6:
days += MONTH_5;
case 5:
days += MONTH_4;
case 4:
days += MONTH_3;
case 3:
days += MONTH_2 + leap;
case 2:
days += MONTH_1;
case 1:
days += day;
break;
}
printf("%d年%d月%d日%d年的第%d天\n", year, month, day, year, days);
return 0;
}
输入一个日期,输出这个日期是这一年的第几天(注意:要考虑平年和闰年的问题)。如:输入 2022/1/15 则输出 15;输入 2022/3/1 则输出 60
最新推荐文章于 2024-04-15 17:03:06 发布