程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言經典面試題——一年有多少秒——宏定義#define SECONDS_PER_YEAR

C語言經典面試題——一年有多少秒——宏定義#define SECONDS_PER_YEAR

編輯:關於C

讓你定義一個宏,說出一年有多少秒:


答案如下:

#define SECONDS_PER_YEAR 60*60*24*365(UL)

“這樣的好處是:寫出公式而不用動手計算,讓編譯器給你計算,省腦子。重點是你還寫出了結果的來源,條理清晰,便於閱讀。還有,那個UL顯示了你對數據大小的嚴謹,”


“切~用你說?誰不知道?”——看到這,很多人一定對這個帖子嗤之以鼻,相信這是很多C語言玩家爛熟於心的一個答案了吧?!


SECONDS_PER_YEAR就是秒每年吧——秒/年!


那麼,一年到底有多少秒?我再換個問法,每年都一樣麼?閏年你又怎麼解決?眾所周知,每四年有一個閏年,這還不是全部,逢百年的時候你必須用年份除以四百,除得開才是閏年。


地球圍繞太陽公轉一周(即360度)的時間應該為365日6時9分10秒,即為一個恆星年。

地球的某點獲得兩次兩次直射的間隔是365日5時48分46秒更加精確:365天5小時48分45.975456秒),即為一個回歸年。

一個回歸年折算成小數,大概是365.2422日,400年裡多出了96.88天,而按四年一個閏年算,400年裡少3個閏年,即總共97個閏年,閏年是調節回歸年的。前邊也提了閏年規則是四年一補,補多了要減去點,如果按恆星年補,四年一個閏年還不夠,哪會讓你四百年內還少三個閏年呢。



看到這裡,相信各位小伙伴已經有答案了:

#define 365*24*60*60+5*60*60+48*60+46(UL)
//很有條理很清晰吧?怎麼樣,我說,你還不如用計算器了~~一定要加上文字注釋~!!!

不過還有意外,他問的會不會是恆星年?恆星年就按如下定義

#define 365*24*60*60+6*60*60+9*60+10(UL)
//一定要加上文字注釋~~告訴他這是恆星年

我們也看到,沒有什麼東西是那麼精確的,如果按365天5小時48分45.975456秒算,那應該使用浮點數偷笑

31556925.9754456(這還不是絕對精度~~~)

如果按這個數,32位的浮點還是夠用的。


怎麼樣,躺著中槍了吧,這麼簡單的C語言你都不會,回去面壁吧。


不過還有方法,你跟他說你用日歷年計算:

#define SECONDS_PER_YEAR 60*60*24*365(UL)
繞回來了大笑



深藏功與名,叫我胡學究

帶上你的貞操和邏輯,歡迎較真抬槓,轉發請注明出處。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved