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

📄 第11章 循环语句.htm

📁 用非常通俗的语言介绍了C++和C
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm --><HTML><HEAD><TITLE>教学--第十章 循环语句</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>P {
	MARGIN: 1px 2px; LINE-HEIGHT: 150%
}
.节标题 {
	FONT-WEIGHT: bold; FONT-SIZE: 12pt
}
TD {
	FONT-SIZE: 9pt
}
.tdtitle {
	FONT-SIZE: 20pt
}
.celltopline {
	BORDER-TOP: #000000 1px solid
}
.menucell {
	FONT-SIZE: 10pt
}
#glowtext {
	FONT-SIZE: 10pt; FILTER: glow(color=red,strength=1); WIDTH: 100%
}
A:link {
	FONT: 10pt 宋体; COLOR: blue; TEXT-DECORATION: none
}
A:visited {
	FONT: 10pt 宋体; COLOR: purple; TEXT-DECORATION: none
}
A:active {
	FONT: 10pt 宋体; COLOR: red; TEXT-DECORATION: underline
}
A:hover {
	COLOR: blue; TEXT-DECORATION: underline
}
</STYLE>

<META content="MSHTML 6.00.2900.2769" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=3><!-- 标题 --><!--标题结束 --><A name=页首></A>
<CENTER>
<TABLE height=154 cellSpacing=4 cellPadding=4 width=760 border=0>
  <TBODY>
  <TR>
    <TD 
    style="FONT-SIZE: 10pt; MARGIN-LEFT: 12px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%; MARGIN-RIGHT: 12px; FONT-FAMILY: 宋体" 
    width="100%" height=148>
      <H2>第十一章 流程控制拾遗与混合训练</H2>
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.1">11.1 
      break</A> 
      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.1.1">11.1.1 
      break的作用与用法</A> 
      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.1.2">11.1.2 
      break 的一个“高级用法”</A> 
      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.1.3">11.1.3 
      break 在for循环中的一点注意</A> 
      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.1.4">11.1.4 
      多层循环中的break</A> 
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.2">11.2 
      continue</A> 
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.3">11.3 
      goto</A> 
      <P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.4">11.4 
      流程控制强化训练</A> 
      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.4.1">11.4.1 
      求绝对值</A> 
      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.4.2">11.4.2 
      判断用户输入字符的类型</A> 
      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.4.3">11.4.3 等腰三角形图形的输出</A> 

      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.4.4">11.4.4 
      输出正弦曲线图</A> 
      <P>&nbsp;&nbsp; <A 
      href="http://www.d2school.com/bcyl/bhcpp/newls/ls11.htm#11.4.5">11.4.5 
      标准体重计算程序</A></P>
      <P> </P>
      <P>说“拾遗”,可能你会以为本章的内容不是重点?那可不是,流程控制的内容并不多,却支撑着所有程序的框架!所所有有关流程的内容都是基础加重点。只是本章中继续讲到一些关键字可以改变流程,但并不独自构成完整流程结构。</P>
      <P>另外,作为流程控制内容的结束章节,我们于最后安排了一些各流程混合使用的训练。</P>
      <P> </P>
      <H3><A name=11.1>11.1</A> break</H3>
      <H4><A name=11.1.1>11.1.1</A> break的作用与用法</H4>
      <P> </P>
      <P>循环就象绕圈子。比如,体育课,跑1200米,跑道一圈400米,所以我们要做的事就是一边跑一边在心里计数(当然要已数,否则老师万一少计一圈,我们可就玩完了),当计数到3圈时,“循环”结束。 

      <P>如果,我在跑步时不幸由于体力不支而晕倒……怎么办? 
      <P>  
      <P>有两种办法,一种是在判断是否继续循环的条件中加入新增条件的判断: 
      <P>假设原来的循环表达为: 
      <P>  
      <P>while(已跑完的圈数 &lt; 3) 
      <P>{ 
      <P>&nbsp; 跑一圈……; 
      <P>} 
      <P>  
      <P>那么,加上附加条件后,循环表达为: 
      <P>  
      <P>while(已跑完的圈数 &lt;3 &amp;&amp; 我还跑得好好的) //&amp;&amp; 就是"并且",没忘吧? 
      <P>{ 
      <P>&nbsp; 跑一圈…… 
      <P>} 
      <P>  
      <P>第二种方法是在循环中使用条件分支,在指定的条件成立时,中途跳出循环,用于实现跳出的关键字为:break。 
      <P>  
      <P>while(已跑的圈数 &lt; 3 ) 
      <P>{ 
      <P>&nbsp; 跑一圈……; 
      <P>&nbsp;&nbsp; 
      <P>&nbsp; if(我身体感觉不妙) 
      <P>&nbsp;&nbsp;&nbsp;&nbsp; <B>break;</B>&nbsp;&nbsp; 
      <P>} 
      <P>  
      <P>在循环中,每跑完一圈,都检查一下自已是否感觉不妙,如果是,则程序执行break,直接跳出while,而不管此时圈数是否到达3圈。 
      <P>  
      <P>还记得“小女孩买裙子”的故事吗?那时候,我们将“父母不给买小红裙 &amp;&amp; 
      我还没有哭累”作为循环继续的条件,如果使用break,则可以写成这样: 
      <P>while(父母不给买小红裙) 
      <P>{ 
      <P>&nbsp; 我哭; 
      <P>&nbsp;&nbsp; 
      <P>&nbsp; if(我哭累了) 
      <P>&nbsp;&nbsp;&nbsp; <B>break;</B> 
      <P>} 
      <P>  
      <P>在循环中,“我”每哭一次,都想想是否累了,如果是,则程序执行break,直接跳出while,而不管此时爸妈是否已经买了我的裙。 
      <P>  
      <P>通过这两个例子,你应该注意到了,如果要用break,则if的条件(也就是要执行break分支的条件),正好是把原来放在循环判断中的条件反正过来。比如,原来是判断“我还跑得好好的”,现在则是判断“我身体感觉不妙”;原来是判断“我还没有哭累”,现在是判断“我哭累了”。 

      <P>一句话,原来是判断“是否继续循环”,现在是判断“是否跳出循环”…… 
      <P>  
      <P>再来看那个“可以多次统计”的统计程序。看看是否也能把它改成使用break来结束循环。 
      <P>为了节省篇幅同时也是为了突出重点,我们将其中用于实现一次统计的代码,用一句<B>伪代码</B>来实现。(什么叫伪代码?我们用得很经常啊,就是那些用自然语言写的“代码”,这些代码当然无法在计算机上运行,它们只是要方便地表达实际代码要实现的功能)。 

      <P>  
      <P>int main(int argc, char* argv[]) 
      <P>{ 
      <P>&nbsp;&nbsp; 实现统计一个学员的成绩; //伪代码,详细代码请见上章相关部分 
      <P>  
      <P>  do 
      <P>&nbsp;&nbsp; { 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //提问是否继续统计:&nbsp;&nbsp; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt;"是否开始新的统计?(Y/N)?"; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin&nbsp; &gt;&gt; c; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;} 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;while( c == 'y' || c == 'Y'); 
      <P>} 
      <P>  
      <P>改成用 break; 
      <P>int main(int argc, char* argv[]) 
      <P>{ 
      <P>&nbsp;&nbsp; 实现统计一个学员的成绩; //伪代码,详细代码请见上章相关部分 
      <P>  
      <P>  do 
      <P>&nbsp;&nbsp; { 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //提问是否继续统计:&nbsp;&nbsp; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt;"是否开始新的统计?(Y/N)?"; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin&nbsp; &gt;&gt; c; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; //如果用户输出的不是字母Y,说明他不想继续统计了,我们需要中断循环。</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; if( c != 'y' &amp;&amp; c != 'Y')</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</B> 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;} 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;while (true); 
      <P>} 
      <P>  
      <P>请首先 
      while(true)部分,其条件直接写上真(true),表明这是一个无条件的循环(即,循环将无条地一直持续下去),这岂不犯了程序界的武林大岂:成了一个“死循环”?其实,相信你已明白,在循环体内,有一个break的分支在呢,当判断用户输入的字母既不是小写的y,也不是大写的Y,break就起它能起的作用了。 

      <P>  
      <P>三个例子,都是从循环判断的条件摘出一部分或全部(最后一个例子),然后循环体中,采用一个if判断,结束break来跳出循环。可能你会问:为什么要break呢?直接用原来的方法,在while处判断条件不是很好吗? 

      <P>  
      <P>break的长处在于,它可以在循环体内的任意位置进行判断。 
      <P>继续上一例。假设我们出于慎重,想在用户按入 N 时,再问他一句是否真的退出统计,则此时显示出了break的方便: 
      <P>int main(int argc, char* argv[]) 
      <P>{ 
      <P>&nbsp;&nbsp; 实现统计一个学员的成绩; //伪代码,详细代码请见上章相关部分 
      <P>  
      <P>  do 
      <P>&nbsp;&nbsp; { 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //提问是否继续统计:&nbsp;&nbsp; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt;"是否开始新的统计?(Y/N)?"; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin&nbsp; &gt;&gt; c; 
      <P>  
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果用户输出的不是字母Y,说明他不想继续统计了,我们需要中断循环。 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( c != 'y' &amp;&amp; c != 'Y') 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; </B>{ 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //出于慎重起见,我们要再问一句用户是否真的不统计了?</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; 
      "您真的不想继续计算了?(Y:真的结束 / N:继续统计)";</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cin &gt;&gt; 
      c;</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //这回,如果用户输入Y,表明他真的不统计了:</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( c == 'Y' 
      || c == 'y')</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      break;</B> 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; 
      <P>&nbsp;&nbsp;&nbsp;&nbsp; } 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;while (true); 

⌨️ 快捷键说明

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