作者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)
1F:推 rockmyangel:好像有点难 ˇ-ˇ 不过谢啦学长 12/14 21:06
2F:推 jerry771210:对其可以用setw? 12/19 11:39