NTUE-CS102 板


LINE

※ 引述《linjrming (风之信使)》之铭言: : 刚吃饱饭,随手写了一下,帮助消化 : 我不知道老师要的是什麽,我只是随便写个会动的时钟而已 差不多就是这样的题目<(_ _)> : 原始码,不含注解 : 拿这份去交作业的,彦廷麻烦当掉他,谢谢 : http://stu.ntue.edu.tw/~s9516018/1.cpp 刚好有个小bug,那是我中午写的时候没想到怎麽表示的bug (炸) 万分感谢QQ 这里先推荐一个测资 23 59 55 (时 分 秒) 原则上这个题目会遇到的大部分bug都可以在这个测资找出来....取55是有时间反应 太大的洞就还是以下略,另外问比较好 以下有说好的for回圈跟bug说明 一样要自己写的就不要看了,写完再来看看有没有这个bug 先来讲这个bug...拿23 59 59当输入 照一般时钟应该是 0:0:0 ,因为时钟不该有显示 "24:60:60" 其中任一种状况 而应该是直接归零 这个bug主要原因是 +1 、 归零 与 输出时间的前後顺序不当所致 以学长code判断 分、秒 为例 顺序是: (输出 → 判断是否>59,归零 → +1) loop 这时候,如果输出59……判断就会是False则不归零,再+1後变成60,在下一次loop中输出 所以出现这样子的小bug 解决方法很多,比如改变这三项行为的顺序,或是改变判断式内容都是作法 回到我们的for回圈,一样是一步一步来 先从设计"秒"的部分当开始,同样要让它能够自己去变化、归零 既然是for回圈,我们可以利用for回圈使用的三个运算式去进行之前在while的处理 sec = 0; for (sec;1;sec++){ cout <<sec <<endl; sec = 59 ? sec = 0 : ; } 这里先来说明for那个括弧内的 1 是个什麽鬼 简言之....是个True,表示那里无条件成立,原则上这麽做几乎等同於while的写法 : 提到这个,学长code内那个 while (1)是一样的东西 当然也可以写个sec<60一类的 反正以这一小段来说,一定要是个无穷回圈才能在里面做秒的归零与变动 用sec<60的写法,就到写到分的时候再来做说明吧 至於里面那个归零的部份是三元运算子, 老师原本想说明,想说会弄复杂就之後又不说明的东西 没事就参考课本关於运算子的部份...我只是在吃晚餐,不想写成if那样好长一串 顺便复习一下三元的使用(拖走) 不过写起来感觉这东西摆在while里面比较省行数 延续下去,一样要做清除画面、拖慢时间的处理 #include<windows.h> sec = 0; for (sec;1;sec++){ cout <<sec <<endl; Sleep(1000); system("cls"); sec = 59 ? sec = 0 : ; } 嗯,既然学长教了,没有不利用的理由 这次使用Sleep()做为拖慢时间的手段,Sleep是一个函数 这里就先认知,函数是 一段已经被写好的code,以一个单字代表 就好 然後,它的详细内容被写在windows.h里面,所以程式最前面要多一个引用宣告 简单来说,Sleep()的用法就是像code内一样在()内摆上要停多久就可以了 这个"多久"使用的是微秒,1秒 = 1000微杪,我们只要停1秒,所以里头摆1000 好...再来我们又回到写"分"的部份了,前面提过,用for回圈就要与while写点不同的 不然何必这样用个for呢? 不过在那之前,我们还是仿照while写一段 相对照可能比较好理解(?) #include<windows.h> sec = 0; min = 0; for (min;1;min++){ for (sec;1;sec++){ cout <<sec <<endl; Sleep(1000); system("cls"); sec = 59 ? sec = 0 : ; } min = 59 ? min =0 : ; } 其实整个运作逻辑等同while,所以就不多说明 要做说明的是下面这段 #include<windows.h> sec = 0; min = 0; for (min;1;min++){ for (sec;sec<60;sec++){ cout <<min <<':' <<sec <<endl; Sleep(1000); system("cls"); } sec = 0; min = 59 ? min = 0 : ; } 做点小小的变化,去应用for回圈三个式子 这里的逻辑我是这样解释的: 比照时钟的转法,秒 是个在 分 底下的小循环,那就让秒在分底下跑 当秒跑到60(也就是下一分的0秒)的时候 结束这一圈秒针运行,换到下一"分"再让秒针运行 中间判断式改为<60,就能达成在秒在60秒时结束 然後,离开这一圈时直接归零,以此确保下一圈开始时一定是0 最後一样是有关"分"的归零 毕竟在这段code的分之外没有"时",不能用现在秒的处理方法 -- 是说一个回圈的解法被写完了 所以又是个以下略的好日子(?) -- 本命 ○楽园の巫女  博丽 霊梦 职业:博丽神社の巫女さん  Hakurei Reimu   能力:主に空を飞ぶ程度の能力 @东方project系列 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.43.34.89 ※ 编辑: game0416 来自: 115.43.34.89 (11/27 00:06) ※ 编辑: game0416 来自: 115.43.34.89 (11/27 00:06) ※ 编辑: game0416 来自: 115.43.34.89 (11/27 00:06)
1F:推 linjrming:题外话,我的那个程式 把s++改成++s就OK了 11/27 01:00
2F:→ game0416:那个我就当作是把 +1 摆到判断前了...所以没讲明 QQ 11/27 01:12
3F:推 j2612280:ya!!我没有24:60:60的问题XD~ 11/27 20:44







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP