精華區beta NTUE-CS101 關於我們 聯絡資訊
首先 月曆要印日子 從 1 ~ 28 or 29 or 30 or 31 所以一定會有個迴圈在做這件事 先熱身 複習一下 for 迴圈 d=30; for(i=1;i<=d;i++) { cout<<i<<" "; } 上面的程式會印 1 2 3 ... 30 為什麼要把for的結束條件寫成 d 不直接寫數字呢? 因為這樣等下可以用 switch(月份) 去改 d 的值 part 2 月曆當然不能只有一行呀 先想一下 假設要印 星期日 一 二 ... 六 然後換行 日 一 ... 六 這樣要怎麼辦呢? 設一個計數器 j = 0 ~ 6 ; 每逢七就歸零 and 換行 d=30; j=0; for(i=1;i<=d;i++) { cout<<i<<" "; j++; if(j==7) { j=0; cout<<endl; } } OK 印出來的結果是 1 2 3 4 ... 7 8 9 ... 14 ... 29 30 然後發現 個位數沒辦法對齊 這時候只要加一行if判斷是不是個位數 是的話就多印個空白就OK囉 part 3 可是每個月的一號不一定是從星期日開始 所以現在增加一個功能 輸入這個月曆的第一天是星期幾 然後補幾個空白 d=30; cin>>n; for(j=0;j<n;j++) { cout<<" "; } for(i=1;i<=d;i++) { if(i<10) cout<<" "; cout<<i<<" "; j++; if(j==7) { j=0; cout<<endl; } } 測試輸入2 就會輸出很整齊的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 月曆的功能到這裡就都OK囉 part 4 接下來要把之前的星期幾搭配上來 到ican上面把自己之前傳上去的星期作業抓下來 還沒寫出來的人可以參考這個 http://yantchen.pixnet.net/blog/post/22553379 輸入改成 cin>>y>>m; 用之前的程式計算 y年m月1日星期幾 如果你星期幾寫法跟我一樣 是把最後的天數%7取switch的話 只要把 part 3 的 n=D%7; 就OK囉 d=28 or 29 or 30 or 31 這個是if或是switch的問題 留給你寫 嘿 寫完了耶 簡單吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.15.209 ※ 編輯: yantchen 來自: 203.68.15.209 (12/14 19:03)
rockmyangel:好像有點難 ˇ-ˇ 不過謝啦學長 12/14 21:06
jerry771210:對其可以用setw? 12/19 11:39