?? 教學(xué)--第九章 條件分支語句.htm
字號:
<P>#pragma hdrstop
<P>//---------------------------------------------------------------------------
<P>#pragma argsused
<P>int main(int argc, char* argv[])
<P>{
<P><B> char a;</B>
<P><B> cout << "請輸入一個字符:" ;</B>
<P><B> cin >> a;</B>
<P><B> if(a >= 'a' && a <= 'z')</B>
<P><B> cout << a << "是一個小寫字母。"
<< endl;</B>
<P>
<P><B> getchar();</B>
<P> return 0;
<P>}
<P>//---------------------------------------------------------------------------</SPAN>
<H3><A name=9.3>9.3</A> ? : 表達(dá)式</H3><SPAN lang=EN-US>
<P>? : 表達(dá)式 我們稱為 問號冒號表達(dá)式。
<P>
<P>用if...else... 和 if...語句,已經(jīng)可以很好地實(shí)現(xiàn)所有條件分支的代碼。不過C是一門追求簡捷高效的語言,它提供的 ? : 表達(dá)式
來在某種情況下代替if...else...,起來讓代碼更簡捷的作用。
<P>
<P>來看看if...else...語句在什么情況下可以簡化。
<P>
<P>首先來看原型:
<P>if (條件)</P>
<P>{</P>
<P> 分支一</P>
<P>}</P>
<P>else</P>
<P>{</P>
<P> 分支二</P>
<P>}</P>
<P>我們知道,分支一或分支二一般都是一組(多行)語句,用來分別實(shí)現(xiàn)條件是否成立時的動作。由于是一組(多行)語句,所以我們有一對{}括在外面,用于形成復(fù)合語句。不過,有時候,分支中的語句比較簡單,用一句話就可以實(shí)現(xiàn)。比如我們所舉的例子:
<P>if (a > b)</P>
<P>{</P>
<P> c = 1;</P>
<P>}</P>
<P>else</P>
<P>{</P>
<P> c = 0;</P>
<P>}</P>
<P>在這個例子中,分支一、二都分別只有一條語句。<B>對于只有一條語句的情況,我們可以省略{}</B>(除了在特殊的上下文中外,其它情況下都可以省略。以后我們學(xué)習(xí)的其它流程控制也一樣),如:
<P>if (a > b)
<P> c = 1;
<P>else
<P> c = 0;
<P>看,沒有花括號的代碼,感覺多緊湊。不過,對于上面的代碼,我們還可以繼續(xù)簡化,那就是使用 ? : 語句。
<P>
<P>c = (a > b)? 1 : 0;
<P>
<P>就一行話,多簡捷!語句中的問號問的是什么?問的是 a 是否大于 b ? 如果是,則得到值1,否則,得到值0。
<P>
<P><B>? : 表達(dá)式格式語法:</B>
<P>
<P>(條件) ? 值1 : 值2
<P>
<P>舉一例子:
<P>設(shè)有int變量 a,b,二者均已初始化。請得到二者中的較大值。
<P>
<P>方法是:
<P>
<P>int c = (a > b) ? a : b;
<P>
<P>是的,就這么簡單,執(zhí)行上面代碼,c 將得到a和b中的較大值。
<P>
<P>我們稱 (a > b) ? a : b 為一個表達(dá)式,而不稱它為完整的一個語句(盡管它的確也可以作一個單獨(dú)的語句存在)。一般地,? :
表達(dá)式拿來作為等號的右值,用于通過條件判斷確定一個值后,該值被賦予等號的左值。因此,并不是所有的if..else...語句都可以用 : ?
來代替,只有那些兩個分支都只是用來計(jì)算一個同一類型的值,然后賦予同一變量的條件分支語句,才適合。
<P>
<P><B>上機(jī)題目三:</B>兩數(shù)取大
<P>
<P>新建一個控制臺空白工程。然后在代碼中輸入以下黑體部分:
<P>
<P>//---------------------------------------------------------------------------
<P><B>#include <iostream.h></B>
<P>#pragma hdrstop
<P>//---------------------------------------------------------------------------
<P>#pragma argsused
<P>int main(int argc, char* argv[])
<P>{
<P><B> int a,b,c;</B>
<P><B> cout << "請輸入兩個整數(shù)(用空格分開):" ;</B>
<P><B> cin >> a >> b;</B>
<P> </P>
<P><B> c = (a > b)? a : b;</B></P>
<P> </P>
<P><B> cout << c << "大" << endl;</B></P>
<P>
<P><B> getchar();</B>
<P> return 0;
<P>}
<P>//---------------------------------------------------------------------------<BR>
<P>下面是屏幕輸出的結(jié)果。我輸入的兩個數(shù)是 102 和 134。
<P><IMG height=127 src="教學(xué)--第九章 條件分支語句.files/ls09t7.jpg" width=348
border=0>
<P>
<H3></SPAN><A name=9.4>9.4</A> 多級 if...else...語句</H3><SPAN
lang=EN-US>
<P>
<P>不要害怕為什么一個條件分支就有這么多種語句。多級if..else..語句——只是我這么叫它,其實(shí)它完全是由if..else..語句組成,就好像樓梯,一個階的樓梯是樓梯,100個階的樓梯也是樓梯。<BR>
<P><B>多級 if..else...語法格式:</B>
<P>
<P>if(條件1)
<P>{<BR> 分支一 <BR> }<BR> else if(條件2)
<P>{<BR> 分支二<BR>
}<BR> else if(條件3)
<P>{<BR> 分支三<BR> }<BR> else
<P>{<BR> 分支四<BR> }
<P>
<P>格式中舉出四個分支,實(shí)際可以只有三個,兩個,也可以有更多個。請看下在這個例子。
<P> </P>
<P>讓我們想像這么一幕情景劇——</P>
<P>時間:XXXX年2月14日;地點(diǎn):某校園內(nèi)小公園;<BR>
人物:女生一,男生一。<BR> (男生送給女生一束環(huán)瑰)<BR>
女生(高興地):多美啊——多少錢買的!<BR>
男生:猜。<BR>
女生(心里想:如果多于100元我就親他一口):超過100元嗎?<BR>
男生:NO。<BR>
女生:(心里想:如果多于50元我就許他親我一口):那,不低于50元吧?<BR>
男生:NO。<BR>
女生:(心里想:如果多于10元就跟他說聲謝謝吧):那是不低于10元了?<BR>
男生:NO。<BR> 女生:(不再有任何想法,一把丟掉鮮花):呸!</P>
<P>看明白了嗎?</P>
<P>“看明白了……”一個小男生眼淚汪汪地站起來,回答:“我是看明白了,現(xiàn)在的女生沒一個是好東西!”#·$&*%!@
啊?? 我是說,大家看出其中的多級條件分支了嗎?</P>
<P>寫成程序,便是:</P>
<P> </P>
<P>int price = 玫瑰花價錢;<BR><BR> if (price > 100)</P>
<P>{<BR>
小女生要親小男生一口;<BR> }<BR> else if(price > 50)</P>
<P>{<BR>
小女生準(zhǔn)備讓小男生親一口;<BR> }<BR> else if (price >
10)</P>
<P>{<BR>
小女生對小男生說聲“謝謝”;<BR> }<BR> else</P>
<P>{<BR>
小女生扔掉花,說:“呸!”;<BR> }</P>
<P> </P>
<P>如果花價大于100元,那么女生親男生一口;否則呢?否則就再判斷花價是否大于50元,如果還是不大,那不再來判斷花價是否大于10元,如果還是不大,最后無條件地執(zhí)行“小女生扔掉花……”這一句。</P>
<P> </P>
<P>看一下多級if...else...語句的流程圖:</P>
<P> </P>
<P><IMG height=484 src="教學(xué)--第九章 條件分支語句.files/ls09t8.gif" width=582
border=0></P>
<P> </P>
<P><B>上機(jī)題目四:</B>送花待遇,要求根據(jù)上面的情景劇,寫一程序,用戶輸入花價后,程序根據(jù)不同的花價輸出相應(yīng)的待遇。
<P>
<P>新建一控制臺工程。
<P>
<P>
<P>//---------------------------------------------------------------------------
<P><B>#include <iostream.h></B>
<P>#pragma hdrstop
<P>//---------------------------------------------------------------------------
<P>#pragma argsused
<P>int main(int argc, char* argv[])
<P>{
<P> <B>int flowerPrice;</B>
<P>
<P><B> cout << "公元2002年2月14日,一小男生向一小女生贈送一束玫瑰……" <<
endl;</B>
<P><B> cout << "女生:請輸入這束花的價錢。" << endl;</B>
<P><B> cout << "男生:";</B>
<P><B> cin >> flowerPrice;</B>
<P><B> </B>
<P><B> if(flowerPrice > 100)</B>
<P><B> cout << "女生:哇!我太喜歡這花了,讓我親你一口以示謝意!"
<< endl; </B>
<P><B> else if (flowerPrice > 50)</B>
<P><B> cout << "女生:哈!花美人更美,你不想親我一口嗎?"
<< endl;</B>
<P><B> else if (flowerPrice > 10)</B>
<P><B> cout << "女生:謝謝!" << endl;</B>
<P><B> else </B>
<P><B> cout << "女生:什么破花,大頭鬼才會喜歡。" <<
endl;</B>
<P>
<P><B> getchar();</B>
<P>
<P> return 0;
<P>}
<P>//---------------------------------------------------------------------------<BR>
<P>以下是運(yùn)行結(jié)果的一種,我實(shí)在買不起100元以上的花:
<P><IMG height=80 src="教學(xué)--第九章 條件分支語句.files/ls09t1.gif" width=504
border=0>
<P>
<H3><A name=9.5>9.5</A> switch 語句</H3>
<P>
<P>多級
if...else...顯然是為了那些可能需要進(jìn)行多級判斷才能做出選擇的情況。如前面的花價。如果正好是大于100元,那么只需判斷一次,女生就可以做出決定,但如果是7元錢,那就必須經(jīng)過“是否大于100?是否大于50?是否大于10?”三次判斷。
<P>C為了簡化這種多級判斷,又提供了switch語句。
<P>
<P>switch 語句的格式:
<P>
<P>switch ( 整型或字符型變量 )
<P>{<BR> case 變量可能值1
: <BR>
分支一;<BR> break;
<P> case 變量可能值2 : <BR>
分支二;<BR> break;
<P> case 變量可能值3 : <BR>
分支三;<BR> break;
<P> ...
<P> default :
<P> 最后分支;
<P>}
<P>
<P>在 switch 的語法里,我們要學(xué)到4個關(guān)鍵字:switch、case 、break、default。
<P>
<P>在 switch ( 變量
) 這一行里,變量只能是整型或字符型。程序先讀出這個變量的值,然后在各個"case"里查找哪個值和這個變量相等,如果相等,就算條件成立,程序執(zhí)行相應(yīng)的分支,直到碰上break或者switch語句結(jié)束。
<P>
<P>說起來有點(diǎn)抽象。我們結(jié)合一個實(shí)例看看。
<P>實(shí)例模擬一個網(wǎng)上調(diào)查。它要求網(wǎng)友輸入數(shù)字以選擇自已是如何到達(dá)當(dāng)前網(wǎng)頁。然后,程序根據(jù)網(wǎng)友這一輸入,打出不同的結(jié)果。
<P>
<P><B>上機(jī)題目五:</B>模擬網(wǎng)絡(luò)調(diào)查,要求輸出不同的選項(xiàng),供網(wǎng)友選擇(通過簡單地輸入數(shù)字),程序根據(jù)網(wǎng)友的選擇,輸出相應(yīng)不同的結(jié)果。
<P>
<P>請新建一控制臺空白工程,然后在代碼里輸入以下黑體部分。
<P>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -