⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000004.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;<A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw.">ax.bbs@bbs.ee.nthu.edu.tw.</A>&nbsp;(athena),&nbsp;信区:&nbsp;test&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;星星流讲座&nbsp;0019&nbsp;<BR>发信站:&nbsp;☆清华电机☆&nbsp;(Thu&nbsp;May&nbsp;18&nbsp;02:16:19&nbsp;1995)&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>第&nbsp;4&nbsp;讲&nbsp;之&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基本的流程控制&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Topic:&nbsp;while&nbsp;and&nbsp;do-while&nbsp;<BR>&nbsp;<BR>前面讲了一个收银机的程式,我们使用的是&nbsp;if-else&nbsp;和&nbsp;goto&nbsp;的组合。&nbsp;<BR>事实上,使用&nbsp;goto&nbsp;是不好的做法,为什麽呢?因为一个程式里如果滥&nbsp;<BR>用&nbsp;goto&nbsp;的话,程式的结构性很容易被破坏。至於为什麽&nbsp;goto&nbsp;会破坏&nbsp;<BR>结构性的问题,我们以後再提,你只需要记住:不到最後关头,绝不轻&nbsp;<BR>用&nbsp;goto就可以了。&nbsp;<BR>&nbsp;<BR>我们现在来介绍消去&nbsp;goto&nbsp;最常用的方法:使用&nbsp;while&nbsp;或&nbsp;do-while&nbsp;回&nbsp;<BR>圈&nbsp;(loop)。看看下面的流程图和程式片段:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;□&nbsp;要求操作员输入收银金额&nbsp;←┐&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│是&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;检查金额是否小於应收货款&nbsp;—┘&nbsp;<BR>&nbsp;<BR>label1:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&quot;Total:&nbsp;%f\nCash&nbsp;=&nbsp;?&nbsp;&quot;,&nbsp;sum);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&quot;%f&quot;,&nbsp;&amp;cash);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(cash&nbsp;&lt;&nbsp;sum)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;label1;&nbsp;<BR>&nbsp;<BR>请你看看流程图,这两个步骤中间形成了一个循环&nbsp;(cycle),这个循环成&nbsp;<BR>立的条件是&nbsp;cash&nbsp;&lt;&nbsp;sum。这个时候我们可以用&nbsp;while&nbsp;来取代上面的&nbsp;if&nbsp;<BR>叙述:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&quot;Total:&nbsp;%f\nCash&nbsp;=&nbsp;?&nbsp;&quot;,&nbsp;sum);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&quot;%f&quot;,&nbsp;&amp;cash);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(cash&nbsp;&lt;&nbsp;sum)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&quot;Total:&nbsp;%f\nCash&nbsp;=&nbsp;?&nbsp;&quot;,&nbsp;sum);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&quot;%f&quot;,&nbsp;&amp;cash);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>while&nbsp;回圈的用法是:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(条件运算式)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当条件成立时所要执行的程式区块或叙述式&nbsp;<BR>&nbsp;<BR>它的意思是在条件成立时,重复不断地执行紧接在它後面的程式区块或叙&nbsp;<BR>述式,直到条件不成立为止。上面的例子中,由於我们并不能确保一开始&nbsp;<BR>cash&nbsp;&lt;&nbsp;sum&nbsp;会成立,所以必须先执行一次输入的动作,这是因为&nbsp;while&nbsp;<BR>执行回圈是先检查条件是否成立,若是才执行。&nbsp;<BR>&nbsp;<BR>像我们的例子中,回圈内的东西需要先被执行一次,再来检查条件是否成&nbsp;<BR>立,这个时候就可以使用&nbsp;do-while&nbsp;来简化程式了:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&quot;Total:&nbsp;%f\nCash&nbsp;=&nbsp;?&nbsp;&quot;,&nbsp;sum);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&quot;%f&quot;,&nbsp;&amp;cash);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;while&nbsp;(cash&nbsp;&lt;&nbsp;sum);&nbsp;<BR>&nbsp;<BR>do-while&nbsp;回圈和&nbsp;while&nbsp;最大的不同点,就是&nbsp;do-while&nbsp;会先把程式区块&nbsp;<BR>做一遍,然後再去检查条件是否成立。为了加强各位的印象,我们把另一&nbsp;<BR>个分支的流程图和程式列出如下:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;□&nbsp;输入一数字并加总&nbsp;←┬———┐&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;是&nbsp;&nbsp;&nbsp;│&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;数字是否小於&nbsp;0?┘&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│否&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓否&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;数字是否为&nbsp;0&nbsp;?&nbsp;————┘&nbsp;<BR>&nbsp;<BR>label1:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(input&nbsp;!=&nbsp;0)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&quot;%d&quot;,&nbsp;&amp;input);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(input&nbsp;&gt;&nbsp;0)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;+=&nbsp;input;&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(input&nbsp;&gt;&nbsp;0)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;+=&nbsp;input;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;label1;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>它可以改进成以下比较好的写法:&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(input&nbsp;!=&nbsp;0)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&quot;%d&quot;,&nbsp;&amp;input);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;while&nbsp;(input&nbsp;&lt;&nbsp;0);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;+=&nbsp;input;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>这段替代的程式,就请各位好好想想,好好看看了。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>本文原作者为徐振家,原作刊载於星星神教总坛&nbsp;☆清华电机☆&nbsp;test&nbsp;板。&nbsp;<BR>你可以以电子文件的形式将本文自由流传於台湾学术网路,但必须包含此版权声明。&nbsp;<BR>原作者依中华民国著作权法之规定,享有本文之著作权,请勿抄袭以免触法。&nbsp;<BR>未经授权任何人不得以任何形式对本文做任何修改及商业上之应用。&nbsp;<BR>其他网路的转载或其他用途的应用,请先知会作者,并取得其同意。&nbsp;<BR>对本文有任何疑问或意见请&nbsp;mail&nbsp;给&nbsp;<A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw,谢谢。">ax.bbs@bbs.ee.nthu.edu.tw,谢谢。</A>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -