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

📄 教学--第九章 条件分支语句.htm

📁 电子书籍(白话c++)非常好用的一本书
💻 HTM
📖 第 1 页 / 共 3 页
字号:
      <P>#pragma hdrstop 
      <P>//--------------------------------------------------------------------------- 

      <P>#pragma argsused 
      <P>int main(int argc, char* argv[]) 
      <P>{ 
      <P><B>&nbsp; char a;</B> 
      <P><B>&nbsp; cout &lt;&lt; "请输入一个字符:" ;</B> 
      <P><B>&nbsp; cin &gt;&gt; a;</B> 
      <P><B>&nbsp; if(a &gt;= 'a' &amp;&amp; a &lt;= 'z')</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; a &lt;&lt; "是一个小写字母。" 
      &lt;&lt; endl;</B> 
      <P>  
      <P><B>&nbsp; getchar();</B> 
      <P>&nbsp; return 0; 
      <P>} 
      <P>//---------------------------------------------------------------------------</SPAN> 

      <H3><A name=9.3>9.3</A>&nbsp; ? :&nbsp; 表达式</H3><SPAN lang=EN-US>
      <P>? :&nbsp; 表达式 我们称为 问号冒号表达式。 
      <P>  
      <P>用if...else... 和 if...语句,已经可以很好地实现所有条件分支的代码。不过C是一门追求简捷高效的语言,它提供的 ? : 表达式 
      来在某种情况下代替if...else...,起来让代码更简捷的作用。 
      <P>  
      <P>来看看if...else...语句在什么情况下可以简化。 
      <P>  
      <P>首先来看原型: 
      <P>if (条件)</P>
      <P>{</P>
      <P>&nbsp; 分支一</P>
      <P>}</P>
      <P>else</P>
      <P>{</P>
      <P>&nbsp; 分支二</P>
      <P>}</P>
      <P>我们知道,分支一或分支二一般都是一组(多行)语句,用来分别实现条件是否成立时的动作。由于是一组(多行)语句,所以我们有一对{}括在外面,用于形成复合语句。不过,有时候,分支中的语句比较简单,用一句话就可以实现。比如我们所举的例子: 

      <P>if (a &gt; b)</P>
      <P>{</P>
      <P>&nbsp; c = 1;</P>
      <P>}</P>
      <P>else</P>
      <P>{</P>
      <P>&nbsp; c = 0;</P>
      <P>}</P>
      <P>在这个例子中,分支一、二都分别只有一条语句。<B>对于只有一条语句的情况,我们可以省略{}</B>(除了在特殊的上下文中外,其它情况下都可以省略。以后我们学习的其它流程控制也一样),如: 

      <P>if (a &gt; b) 
      <P>&nbsp;&nbsp; c = 1; 
      <P>else 
      <P>&nbsp;&nbsp; c = 0; 
      <P>看,没有花括号的代码,感觉多紧凑。不过,对于上面的代码,我们还可以继续简化,那就是使用 ? : 语句。 
      <P>  
      <P>c = (a &gt; b)? 1 : 0; 
      <P>  
      <P>就一行话,多简捷!语句中的问号问的是什么?问的是 a 是否大于 b ? 如果是,则得到值1,否则,得到值0。 
      <P>  
      <P><B>? : 表达式格式语法:</B> 
      <P>  
      <P>(条件) ? 值1 : 值2 
      <P>  
      <P>举一例子: 
      <P>设有int变量 a,b,二者均已初始化。请得到二者中的较大值。 
      <P>  
      <P>方法是: 
      <P>  
      <P>int c = (a&nbsp; &gt; b) ?&nbsp; a : b; 
      <P>  
      <P>是的,就这么简单,执行上面代码,c 将得到a和b中的较大值。 
      <P>  
      <P>我们称 (a &gt; b) ? a : b 为一个表达式,而不称它为完整的一个语句(尽管它的确也可以作一个单独的语句存在)。一般地,? : 
      表达式拿来作为等号的右值,用于通过条件判断确定一个值后,该值被赋予等号的左值。因此,并不是所有的if..else...语句都可以用 : ? 
      来代替,只有那些两个分支都只是用来计算一个同一类型的值,然后赋予同一变量的条件分支语句,才适合。 
      <P>  
      <P><B>上机题目三:</B>两数取大 
      <P>  
      <P>新建一个控制台空白工程。然后在代码中输入以下黑体部分: 
      <P>  
      <P>//--------------------------------------------------------------------------- 

      <P><B>#include &lt;iostream.h&gt;</B> 
      <P>#pragma hdrstop 
      <P>//--------------------------------------------------------------------------- 

      <P>#pragma argsused 
      <P>int main(int argc, char* argv[]) 
      <P>{ 
      <P><B>&nbsp; int a,b,c;</B> 
      <P><B>&nbsp; cout &lt;&lt; "请输入两个整数(用空格分开):" ;</B> 
      <P><B>&nbsp; cin &gt;&gt; a &gt;&gt; b;</B> 
      <P>&nbsp;&nbsp;</P>
      <P><B>&nbsp; c = (a &gt; b)? a : b;</B></P>
      <P>&nbsp;&nbsp;</P>
      <P><B>&nbsp; cout &lt;&lt; c &lt;&lt; "大" &lt;&lt; endl;</B></P>
      <P>  
      <P><B>&nbsp; getchar();</B> 
      <P>&nbsp; return 0; 
      <P>} 
      <P>//---------------------------------------------------------------------------<BR>
      <P>下面是屏幕输出的结果。我输入的两个数是 102 和 134。 
      <P><IMG height=127 src="教学--第九章 条件分支语句.files/ls09t7.jpg" width=348 
      border=0> 
      <P>  
      <H3></SPAN><A name=9.4>9.4</A>&nbsp; 多级 if...else...语句</H3><SPAN 
      lang=EN-US>
      <P>  
      <P>不要害怕为什么一个条件分支就有这么多种语句。多级if..else..语句——只是我这么叫它,其实它完全是由if..else..语句组成,就好像楼梯,一个阶的楼梯是楼梯,100个阶的楼梯也是楼梯。<BR>
      <P><B>多级 if..else...语法格式:</B> 
      <P>  
      <P>if(条件1) 
      <P>{<BR>  &nbsp; 分支一  <BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else if(条件2) 
      <P>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分支二<BR>&nbsp;&nbsp; 
      }<BR>&nbsp;&nbsp; else if(条件3) 
      <P>{<BR>   分支三<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else 
      <P>{<BR>   分支四<BR>&nbsp;&nbsp; } 
      <P>  
      <P>格式中举出四个分支,实际可以只有三个,两个,也可以有更多个。请看下在这个例子。 
      <P> </P>
      <P>让我们想像这么一幕情景剧——</P>
      <P>时间:XXXX年2月14日;地点:某校园内小公园;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      人物:女生一,男生一。<BR>&nbsp;&nbsp;&nbsp; (男生送给女生一束环瑰)<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      女生(高兴地):多美啊——多少钱买的!<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      男生:猜。<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      女生(心里想:如果多于100元我就亲他一口):超过100元吗?<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      男生:NO。<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      女生:(心里想:如果多于50元我就许他亲我一口):那,不低于50元吧?<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      男生:NO。<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      女生:(心里想:如果多于10元就跟他说声谢谢吧):那是不低于10元了?<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      男生:NO。<BR>&nbsp;&nbsp;&nbsp;&nbsp; 女生:(不再有任何想法,一把丢掉鲜花):呸!</P>
      <P>看明白了吗?</P>
      <P>“看明白了……”一个小男生眼泪汪汪地站起来,回答:“我是看明白了,现在的女生没一个是好东西!”#·$&amp;*%!@ 
      啊?? 我是说,大家看出其中的多级条件分支了吗?</P>
      <P>写成程序,便是:</P>
      <P> </P>
      <P>int price = 玫瑰花价钱;<BR><BR>&nbsp;&nbsp; if (price &gt; 100)</P>
      <P>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      小女生要亲小男生一口;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else if(price &gt; 50)</P>
      <P>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      小女生准备让小男生亲一口;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else if (price &gt; 
10)</P>
      <P>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      小女生对小男生说声“谢谢”;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; else</P>
      <P>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      小女生扔掉花,说:“呸!”;<BR>&nbsp;&nbsp; }</P>
      <P> </P>
      <P>如果花价大于100元,那么女生亲男生一口;否则呢?否则就再判断花价是否大于50元,如果还是不大,那不再来判断花价是否大于10元,如果还是不大,最后无条件地执行“小女生扔掉花……”这一句。</P>
      <P> </P>
      <P>看一下多级if...else...语句的流程图:</P>
      <P> </P>
      <P><IMG height=484 src="教学--第九章 条件分支语句.files/ls09t8.gif" width=582 
      border=0></P>
      <P> </P>
      <P><B>上机题目四:</B>送花待遇,要求根据上面的情景剧,写一程序,用户输入花价后,程序根据不同的花价输出相应的待遇。 
      <P>  
      <P>新建一控制台工程。 
      <P>  
      <P>  
      <P>//--------------------------------------------------------------------------- 

      <P><B>#include &lt;iostream.h&gt;</B> 
      <P>#pragma hdrstop 
      <P>//--------------------------------------------------------------------------- 

      <P>#pragma argsused 
      <P>int main(int argc, char* argv[]) 
      <P>{ 
      <P> <B>int flowerPrice;</B> 
      <P>  
      <P><B>&nbsp; cout &lt;&lt; "公元2002年2月14日,一小男生向一小女生赠送一束玫瑰……" &lt;&lt; 
      endl;</B> 
      <P><B>&nbsp; cout &lt;&lt; "女生:请输入这束花的价钱。" &lt;&lt; endl;</B> 
      <P><B>&nbsp; cout &lt;&lt; "男生:";</B> 
      <P><B>&nbsp; cin&nbsp; &gt;&gt; flowerPrice;</B> 
      <P><B>&nbsp;&nbsp;</B> 
      <P><B>&nbsp; if(flowerPrice &gt; 100)</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "女生:哇!我太喜欢这花了,让我亲你一口以示谢意!" 
      &lt;&lt; endl;&nbsp;</B> 
      <P><B>&nbsp; else if (flowerPrice &gt; 50)</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "女生:哈!花美人更美,你不想亲我一口吗?" 
      &lt;&lt; endl;</B> 
      <P><B>&nbsp; else if (flowerPrice &gt; 10)</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "女生:谢谢!" &lt;&lt; endl;</B> 
      <P><B>&nbsp; else&nbsp;</B> 
      <P><B>&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "女生:什么破花,大头鬼才会喜欢。" &lt;&lt; 
      endl;</B> 
      <P>  
      <P><B>&nbsp; getchar();</B> 
      <P>  
      <P>&nbsp; return 0; 
      <P>} 
      <P>//---------------------------------------------------------------------------<BR>
      <P>以下是运行结果的一种,我实在买不起100元以上的花: 
      <P><IMG height=80 src="教学--第九章 条件分支语句.files/ls09t1.gif" width=504 
      border=0> 
      <P>  
      <H3><A name=9.5>9.5</A> switch 语句</H3>
      <P>  
      <P>多级 
      if...else...显然是为了那些可能需要进行多级判断才能做出选择的情况。如前面的花价。如果正好是大于100元,那么只需判断一次,女生就可以做出决定,但如果是7元钱,那就必须经过“是否大于100?是否大于50?是否大于10?”三次判断。 

      <P>C为了简化这种多级判断,又提供了switch语句。 
      <P>  
      <P>switch 语句的格式: 
      <P>  
      <P>switch ( 整型或字符型变量 ) 
      <P>{<BR>&nbsp;&nbsp;&nbsp;  case 变量可能值1 
      :&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp; 
      分支一;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  break; 
      <P>&nbsp;&nbsp; case 变量可能值2 :&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       &nbsp; 分支二;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  break; 
      <P>&nbsp;&nbsp; case 变量可能值3 :&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
       &nbsp; 分支三;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  break; 
      <P>&nbsp;&nbsp; ... 
      <P>&nbsp;&nbsp; default : 
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后分支; 
      <P>} 
      <P>  
      <P>在 switch 的语法里,我们要学到4个关键字:switch、case 、break、default。 
      <P>  
      <P>在 switch ( 变量 
      ) 这一行里,变量只能是整型或字符型。程序先读出这个变量的值,然后在各个"case"里查找哪个值和这个变量相等,如果相等,就算条件成立,程序执行相应的分支,直到碰上break或者switch语句结束。 

      <P>  
      <P>说起来有点抽象。我们结合一个实例看看。 
      <P>实例模拟一个网上调查。它要求网友输入数字以选择自已是如何到达当前网页。然后,程序根据网友这一输入,打出不同的结果。 
      <P>  
      <P><B>上机题目五:</B>模拟网络调查,要求输出不同的选项,供网友选择(通过简单地输入数字),程序根据网友的选择,输出相应不同的结果。 
      <P>  
      <P>请新建一控制台空白工程,然后在代码里输入以下黑体部分。 
      <P>  

⌨️ 快捷键说明

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