输入一个日期:startdate(年月日)和天数(days>=1),输出字该输入日期days天的日期enddate(即enddate=startdate+days)要求输入和输出的年份为四位整数,并确保得到有效的输入数据。同时需要考虑跨年和闰年等情况,闰年用自定义函数计算,日期自定义结构体描述。
#include "stdio.h" int Is_Special_Year(int year); int From_Year_Day_Num(int year,int month,int day); void main() { struct Input_Date { int year; int month; int day; int day_num; }; struct Input_Date test_input_date; printf("xxxx-xx-xx,n格式输入n"); scanf("%d-%d-%d,%d",&test_input_date.year,&test_input_date.month,&test_input_date.day,&test_input_date.day_num); Print_Dest_Date(test_input_date.year,test_input_date.month,test_input_date.day,test_input_date.day_num); //From_Year_Day_Date(2017,1); } // 判断是否为闰年 int Is_Special_Year(int year) { if(year%4==0&&year%100!=0||year%400==0) { printf("isn"); return 1; } else { printf("isn'tn"); return 0; } } // 判断一年当中的第几天 int From_Year_Day_Num(int year,int month,int day) { int day_num=0; int temp=Is_Special_Year(year); switch(month) { case 1: day_num=0;break; case 2: day_num=31;break; case 3: day_num=31+28+temp;break; case 4: day_num=31+28+31+temp;break; case 5: day_num=31+28+31+30+temp;break; case 6: day_num=31+28+31+30+31+temp;break; case 7: day_num=31+28+31+30+31+30+temp;break; case 8: day_num=31+28+31+30+31+30+31+temp;break; case 9: day_num=31+28+31+30+31+30+31+31+temp;break; case 10: day_num=31+28+31+30+31+30+31+31+30+temp;break; case 11: day_num=31+28+31+30+31+30+31+31+30+31+temp;break; case 12: day_num=31+28+31+30+31+30+31+31+30+31+30+temp;break; } day_num+=day; return day_num; } //根据输出的天数判断当前日期 int From_Year_Day_Date(int year,int day_num) { int i; int temp_month,temp_day; int sum =0; int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(Is_Special_Year(year)) { a[2] =29; } for(i=0;i<12;i++) { sum=sum+a[i]; if(day_num>sum && day_num<=sum+a[i+1]) { temp_month = i+1; temp_day = day_num-sum; } } //输出目的日期 printf("enddate日期为:%d-%d-%d",year,temp_month,temp_day); } // 输出enddate void Print_Dest_Date(int year,int month,int day,int day_num) { //起始日期-距离该年第多少天----临时变量 int temp_start_days = From_Year_Day_Num(year,month,day); printf("距离该年第多少天-:%dn",temp_start_days); //判断有没有跨年的变量 int is_temp_over_year; //临时年份- int temp_year; //距离输入的起始年开始的总天数 printf("距离输入的起始年开始的总天数-:%dn",day_num); is_temp_over_year = temp_start_days + day_num; printf("距离输入的起始年开始的总天数-:%dn",is_temp_over_year); //思路:首先判断该年是否是闰年--- // Yes:根据现有的总天数判断有没有跨年, // 若没有跨年,直接调用 From_Year_Day_Date // 若跨年,对其进行% temp_year = year; int flag = 1; while(flag) { //首先判断该年是否是闰年 if(Is_Special_Year(temp_year)) { if(is_temp_over_year<=366) { From_Year_Day_Date(temp_year,is_temp_over_year); flag=0; break; } else { is_temp_over_year =is_temp_over_year - 366; //年份加1 temp_year++; } } else { if(is_temp_over_year<=365) { From_Year_Day_Date(temp_year,is_temp_over_year); flag=0; break; } else { is_temp_over_year =is_temp_over_year - 365; //年份加1 temp_year++; } } } }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136相关知识
深圳莲花山杜鹃花展时间(开始+结束日期)
生产日期=分装日期?
花浇水日期记录表
2025年复活节日期
用车中的各种日期
2020年所有情人节日期
C语言 PTA 新年倒计时
西岭雪山杜鹃花观赏日期
python实现元旦倒计时、圣诞树、跨年烟花的绘画马上双旦了给大家带来一些python代码 1.元旦节日倒计时代码的实现
在ant设计中选择日期后,无法清除范围选取器
网址: 开始日期,加天数,求结束日期(跨年,闰年) https://m.huajiangbk.com/newsview859121.html
上一篇: 逆战次代天使新春贺喜活动地址 逆 |
下一篇: 人文学院开展妇女节送“花”活动, |