作者yantchen (球童Yanting)
看板NTUE-CS101
標題[課業] 月曆作業提示
時間Sun Dec 14 19:01:42 2008
首先
月曆要印日子 從 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