400字范文,内容丰富有趣,生活中的好帮手!
400字范文 > xx年xx月xx日xx时xx分xx秒——if版本

xx年xx月xx日xx时xx分xx秒——if版本

时间:2023-01-02 02:50:57

相关推荐

xx年xx月xx日xx时xx分xx秒——if版本

if版本,貌似差不多,但是比switch要简洁点~~~都要那么多次的判断~~~

/*** 编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。* 注意考虑润年。* 如输入12月31日23时59分58秒,则输出12月31日59时59分59秒。* 如输入12月31日23时59分59秒,则输出1月1日0时0分0秒。**/#include "stdio.h"#include "assert.h"typedef unsigned int uint;#define FALSE 0#define TRUE 1typedef struct date{uint year;uint month;uint day;uint hour;uint minute;uint second;}DATE;//enum MAX_NUM{MAX_MON=12,MAX_DAY=31,MAX_HOUR=23,MAX_MIN=59,MAX_SEC=59};void setTime(uint *year,uint *month,uint *day,uint *hour,uint *minute,uint *second);int main(){DATE date1={,12,31,23,59,58};DATE date2={,12,31,23,59,59};DATE date3={,6,7,14,59,59};setTime(&date1.year,&date1.month,&date1.day,&date1.hour,&date1.minute,&date1.second);printf("%d年%d月%d日%d时%d分%d秒\n",date1.year,date1.month,date1.day,date2.hour,date2.minute,date1.second);setTime(&date2.year,&date2.month,&date2.day,&date2.hour,&date2.minute,&date2.second);printf("%d年%d月%d日%d时%d分%d秒\n",date2.year,date2.month,date2.day,date2.hour,date2.minute,date2.second);setTime(&date3.year,&date3.month,&date3.day,&date3.hour,&date3.minute,&date3.second);printf("%d年%d月%d日%d时%d分%d秒\n",date3.year,date3.month,date3.day,date3.hour,date3.minute,date3.second);}void setTime(uint *year,uint *month,uint *day,uint *hour,uint *minute,uint *second){uint dayofMonth[12]={31,28,30,31,30,31,30,31,30,31,30,31};//限定输入参数的范围assert(*year>0&&*month>=1&&*day>=1&&*hour>=0&&*minute>=0&&*second>=0==TRUE);assert(*month<=12&&*day<=dayofMonth[*month-1]&&*hour<=23&&*minute<=59&&*second<=59==TRUE);//润年if(*year%400==0||(*year%4==0&&*year%100!=0))dayofMonth[1]=29;//if版本if (*second==59) {*second=0;*minute+=1;}else*second+=1;if (*minute>59) {*minute=0;*hour+=1;}if (*hour>23) {*day=1;*hour+=1;}if (*day>dayofMonth[*month-1]) {*day=1;*month+=1;}if (*month>12) {*month=1;*year+=1;}}

逻辑上那几次判断是一定不可避免的~~~

但是应该可以用更巧妙的方式来实现,而不是现在(不管是switch还是if)这种雷同的代码~~~

To Be Continued~~~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。