今天是你生命中的第几天?

  这个问题用Excel来计算很简单,只要我们在一个格子(A1)写入生日,在另一个格子(B1)写入“=today()”,在第三个格子写入算式("=B1-A1+1")即可。后来想到用C语言的时间函数来做,算法很简单,但是对时间函数不熟悉,结果花了几乎一晚上。要反思这种低效率的学习或工作方式。

  我想对于今天的低效率有这么几个原因:

  • 对C语言的时间函数不熟悉
  • 没有想好算法就编码

  使用Excel计算

  好了,贴一下代码:

#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天,你呢?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值