C语言输入年月日,返回年初至今的天数

函数说明

  • 用户输入年月日,月可以是月份名,月份号或月份缩写,返回年初到指定日期的天数
  • IsLeapYear(int year)用于判断该年是否是闰年,确定二月的天数

  • int DayOfThisYear2(Month * month,int day_id,char* month_name,int year_id)中Month是月份结构体, month是存储了月份信息

函数实现

#include 
#include 
#include typedef struct{char * month_name;char * month_sx;int month_num;char * month_id;
}Month;/*** 判断是否是闰年* @param year* @return 闰年-- 1,不是闰年-- -1*/
int IsLeapYear(int year)
{if(year%4==0 && year%100!=0){return 1;}if(year%400==0){return 1;}elsereturn -1;
}/*** 输入年月日,返回天数* @param month  包含一年十二月的信息* @param day_id  日期* @param month_name 月份* @param year_id  年份* @return 返回本年初至该年指定日期的天数*/
int DayOfThisYear(Month * month,int day_id,char* month_name,int year_id)
{int month_id=0;int day=0;for(int i=0;i<12;i++){   //将月份转为整型数据if((strcmp(month[i].month_name, month_name) == 0) || (strcmp(month[i].month_sx, month_name) == 0) || (strcmp(month[i].month_id, month_name) == 0)){month_id=atoi(month[i].month_id);break;}}if(month_id == 1 || year_id == 3 || year_id == 5 || year_id == 7 || year_id == 8 || year_id == 10 || year_id == 12){//大月if(day_id < 0 || day_id > 31){printf("请输入正确的日期!\n");return 0;}}if(month_id == 4 || year_id == 6 || year_id == 9 || year_id == 11){//小月if(day_id < 0 || day_id > 30){printf("请输入正确的日期!\n");return 0;}}if(month_id == 2){//二月分为闰年和非闰年的情况if(IsLeapYear(year_id)==1 && (day_id < 0 || day_id > 29)){printf("请输入正确的日期!\n");return 0;}if(IsLeapYear(year_id)==-1 && (day_id < 0 || day_id > 28)){printf("请输入正确的日期!\n");return 0;}}for(int i=1;i= 59){day++;}return day;
}int main() {Month month[12]={{"一月","Jan",31,"1"},{"二月","Feb",28,"2"},{"三月","Mar",31,"3"},{"四月","Apr",30,"4"},{"五月","May",31,"5"},{"六月","Jun",30,"6"},{"七月","Jul",31,"7"},{"八月","Aug",31,"8"},{"九月","Sep",30,"9"},{"十月","Oct",31,"10"},{"十一月","Nov",30,"11"},{"十二月","Dec",31,"12"}};int int_day;int int_year;char char_month[10];printf("请输入年份:");fflush(stdin);scanf("%d",&int_year);printf("请输入月份:");fflush(stdin);scanf("%s",&char_month);printf("请输入日期:");fflush(stdin);scanf("%d",&int_day);printf("本年至%d-%s-%d,已过:%d天",int_year,char_month,int_day,DayOfThisYear(month,int_day,char_month,int_year));return 0;
}

运行效果

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部