这个问题用Excel来计算很简单,只要我们在一个格子(A1)写入生日,在另一个格子(B1)写入“=today()”,在第三个格子写入算式("=B1-A1+1")即可。后来想到用C语言的时间函数来做,算法很简单,但是对时间函数不熟悉,结果花了几乎一晚上。要反思这种低效率的学习或工作方式。
我想对于今天的低效率有这么几个原因:
- 对C语言的时间函数不熟悉
- 没有想好算法就编码
好了,贴一下代码:
#include <stdio.h> #include <string.h> #include <time.h> #define DAY (3600*24) void get_days(void) { struct tm *old_tm,*now_tm; time_t old,now; int days; time(&now); //Get now old=now; //old and now have same hours, minutes and seconds. old_tm=gmtime(&old); printf("Input(Y-M-D):"); //alter old's year, month and day. scanf("%d-%d-%d",&(old_tm->tm_year),&(old_tm->tm_mon),&(old_tm->tm_mday)); old_tm->tm_year-=1900; old_tm->tm_mon-=1; old=mktime(old_tm); now_tm=gmtime(&now); days=(int)difftime(now,old)/DAY+1; printf("Today: %d-%d-%d\n",now_tm->tm_year+1900,now_tm->tm_mon+1,now_tm->tm_mday); printf("The %dth in your life.\n",days); } int main(int argc,char **argv) { get_days(); return 0; }
对了,今天是我生命中的第9072天,你呢?