NTUE-CS102 板


LINE

快睡着了....找点熟悉的事情做看会不会精神好一点 是说毕竟是作业,不适合直接贴code,看看我的解释水平现在是到哪好了 这次作业目标是 input 时、分、秒 output 无限次往下输出时、分、秒,然後隔一定时间清掉一次萤幕 先去思考,这个程式会长怎样?会用到些什麽? 最少,我们会有时、分、秒的变数、然後有个输出跟清除画面的动作 然後,要能够让时、分、秒变动 这次作业主要问题就在於如何让它变动,跟正确的进位 变动很简单,就是让它不断的 "+1" ,所以原则上就使用回圈去不断执行这种相似的动作 又因为这三个的进位相近是一种连锁动作,自然就能应用巢状回圈 : 是说边写才想到好像可以只用一个回圈处理._.a 这里可以先简化题目,因为时分秒大体上都是相同的行为, 所以先把题目拆解到最基础的部分开始…将题目先变成只要影响秒,从0~59进行循环 以下有题目解题内容,想努力自己完成看到这就好 ---- 这种情况下就很乾脆…先举王老大建议的while,预设有个代表秒的sec 照着前面的直觉去写,就会像下面这样简单的一小段可以输出会一直改变的sec sec = 0; while (sec <= 60){ cout << sec++ <<endl; sec = sec++; } 好,编译、执行後会发现它"不会"一直循环下去 因为判断sec > 60以後就会脱离回圈,而60秒以後应该是回到0才对 因此,在60时要将它归零 : 某种角度来说,也可以称为"重新开始" sec = 0; while (sec <= 60){ cout << sec <<endl; sec = sec++; if (sec == 60) sec = 0; } 像这样,就能达到让秒不断输出的行为 再来,我们要让它刷新的速度接近於真正的秒,所以要让它变慢 还有清除页面的行为 而变慢的方法很简单,也就像是一般跑游戏会lag的原因一样 让它做事,做的事情越多,速度自然越慢 通常用个回圈去做些不会显示在萤幕上的行为,或是让萤幕看起来没在动就好 先举个昨天见到的例子 sec = 0; while (sec <= 60){ for (int i=0;i<=1500;i++){ cout << sec <<endl; system("cls"); } sec = sec++; if (sec == 60) sec = 0; } 这样就是一个"让萤幕看起来没在动"的做法,其实它不断的输出、清除画面 然而,这样的做法执行时都有一个问题"我的秒怎麽都不会动了?" 嗯…请稍待一会就会动了,事实上,不管是cout or system其实都很慢 另外这个cls本身其实也蛮慢的,所以重复个几千次就会过很久很久 让人有不会动的错觉 而另外一种做法,则是 sec = 0; while (sec <= 60){ cout << sec <<endl; for (int i=0;i<=1500;i++) ; system("cls"); sec = sec++; if (sec == 60) sec = 0; } 像是这样的空回圈,同样可以拖慢时间 不过这次这样几千就显得好像没在停,往上设几万也一样 那是因为i++这样+1的行为非常简单,只做个几万次不痛不痒的 所以啦,几万次不够,就做几千万次,还不够就做个几亿次吧 懒散就复制贴上,不然利用巢状回圈做次方次提升次数也不错 在里面随便找个数加点取余数的%计算更好,我在这里是比较没花脑袋复制贴上就是了 到这里,你的"秒"就完成了;其次,我们将问题变大到分 在外面多包一个回圈与变数min,用类似秒的方式去写 sec = 0; min = 0; while (min <= 60){ while (sec <= 60){ cout <<min <<" " << sec <<endl; for (int i=0;i<=1500;i++) ; system("cls"); sec = sec++; if (sec == 60) sec = 0; } min = min++; if (min == 60) min = 0 } 没什麽差,分还是不会动 所以要做些改变,比如说,把秒到归零後跳出来让min增加後重新开始下个回圈 这里要使用昨天讲switch时提到的break; 这个break,能够中断并跳出一个特定的区域,比如说回圈或switch 拿code说明比较快 sec = 0; min = 0; while (min <= 60){ while (sec <= 60){ cout <<min <<" " << sec <<endl; for (int i=0;i<=1500;i++) ; system("cls"); sec = sec++; if (sec == 60){ sec = 0; break; } } min = min++; if (min == 60) min = 0 } 这样子的code,就能让秒在60时,归零 然後跳出我们在设定"秒"的这个子回圈、往程式下面这行min = min++;执行 要注意的是,如果那个if内容改成 if (sec == 60){ break;   sec = 0; } 这样的话,就会先"跳出",後面的归零就不会处理了 嗯…时的地方就不写了,不然作业都抄完了、期末考也完了 同样的做法继续写就是了 文末空白防雷 for版本的话....等作业缴交後直接贴code或晚上再说好了 拿人家电脑会发懒(滚动) 而且好像快要考微积分了wryyyyyyyyyyy -- 本命 ○楽园の巫女  博丽 霊梦 职业:博丽神社の巫女さん  Hakurei Reimu   能力:主に空を飞ぶ程度の能力 @东方project系列 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.127.36.173 ※ 编辑: game0416 来自: 120.127.36.173 (11/26 11:35)
1F:→ game0416:是说没特别编,大概会少分号什麽的小东西(跑远 11/26 11:38
※ 编辑: game0416 来自: 120.127.36.173 (11/26 11:39)
2F:推 linjrming:用Sleep() 11/26 12:03
3F:推 dosomethnig:好球 11/26 12:25
4F:→ Arashinoon:话说我用for做 而且没有输入秒这个动作 我GG了? 11/26 16:44
5F:推 gcobc12632:老师没有说要输入秒0.0 不过你爽输入也可以 吧 11/26 17:33
6F:推 didi12252001:凤狼大神阿..... 11/26 20:24
7F:推 Arashinoon:是说都没人来看这篇的样子 11/29 19:01







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灯, 水草

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

TOP