如果一年是12個月,一個月都是30天,一天是24小時,1小時是60分,1分是60秒。讓使用者輸入一正整數代表總秒數,然後轉換成 年 月天時分 秒。
例如:使用者輸入90654。你的程式會輸出0 0 1 1 10 54\n。
代表90654秒=0年0月1天1時10分54秒
並且可以利用%
與/
#include <iostream>
using namespace std;
int main()
{
int s;
cin >> s;
cout << s / (60 * 60 * 24 * 30 * 12)<< " ";//年
s = s % (60 * 60 * 24 * 30 * 12);
cout << s / (60 * 60 * 24 * 30)<< " ";//月
s = s % (60 * 60 * 24 * 30);
cout << s / (60 * 60 * 24)<< " ";//日
s = s % (60 * 60 * 24);
cout << s /(60 * 60)<< " ";//時
s = s % (60 * 60);
cout << s / 60<< " ";//分
s = s % 60;
cout << s << " ";//秒
}
首先這題我們要先確立各個時間單位所代表的數值
input:秒
output:年 月 日 時 分 秒
在轉換的過程中,我們可以知道:
一年為(60 * 60 * 24 * 30 * 12)秒
一個月為(60 * 60 * 24 * 30)秒
一天為(60 * 60 * 24)秒
一小時為(60 * 60)秒
而一分鐘有60秒
那麼在輸出時,第一個數字,也就是"年"數便可以用除法/
來得到。而這裡補充說明,在程式裡的除法是以"被除數和除數的數字型態決定"商"的型態。若是皆為整數時,結果便會以商的整數值代替;而當兩者其中之一為浮點數型態時,那結果便會以浮點數的方式替代之。
再來我們要介紹到一個新的符號,"%
"(也就是數學上的mod,餘數的意思)。程式上以"被餘數 %
餘數"的方式表示。因為我們的input s會隨著一次一次的除法而越變越小,所以每當我們做完一次除法時就需要重新定義我們現在的s所代表的數值,才不會使得結果出現"溢位"的狀況(如:當已經在算天數時卻發現天數總和為35天,那就應該記作"1 5",一個月又五天,而非"0 35",35天)
在一次次疊代表示後,我們就可以得到所求的output了!
這裡因為參雜許多數字的餘數與除數觀念,在做的時候也要多接留意喔!那我們明天繼續八~