<a target="_blank" href="http://blog.csdn.net/sxhelijian/article/details/40155025"></a>
從鍵盤輸入x的值(要求為實型),根據下面的公式計算并輸出y的值。

(1)請用if~else~語句的嵌套,實作這個多分支的程式;
參考解答:
這個解法不能算錯,但是不好,它會讓計算機多“做”一些事情。例如,當輸入x的值為1時,解法1隻需要進行一次判斷,直接求值即可,而當輸入x的值為8時,解法1也隻需要進行3次判斷。但對于解法2,無論輸入是多少,4次判斷都少不了。
這是涉及“效率”的問題,可能在此處無關大礙,但專業人員對程式評價是,正确是底線,接下來就要關注效率。
充分用好else分支,顯然程式更易懂一些,要習慣于用這種寫法。
再一個需要強調并于條件的寫法。以(x>=2 && x<6)為例,有人會寫成(2=<x<6),這時,編譯器會提示錯誤,由此改正尚不至于造成嚴重後果。而将同樣的條件,有人寫成(6>x>=2)時,不會有編譯錯誤,但更大的風險卻隐藏其中。例如x=4時,
(x>=2 && x<6)的值為真(1):(x>=2)和(x<6)同時為真,故為真;
(6>x>=2)的值為假(0):為假為原因是,6>4為真(1),故表達式相當于(1>=2);
事實上,由于(6>x)的取值隻能是0或1,無論x取值多少,(6>x>=2)永遠為假。
将表示判斷的表達式寫好,事關正确性與效率。
//解法3
這個寫法中,終于在第15行用了一個else。看似用上了雙分支是好事,這個程式卻是完全錯誤的。輸入0或4運作一下,就會發現錯誤了。而分析程式,确實隻要(x>=6 && x<10)為假,即使x<6已經在前面給y賦過值,else分支仍然要執行,y将被重新指派,由此産生錯誤!
(2)請用switch語句構造多分支結構,完成求解。
解法1:各分段的标準都為2的倍數,是以,構造表達式 t= x/2,根據t的取值決定switch分支;
解法2:構造表達式 t=(x<2) + (x<6) + (x<10)。由于關系表達式(x<a)的值為0或1(真為1,假為0),是以t能表示x究竟滿足了幾個條件。t值為3時,相加的三個關系表達式全為真,對應x<2;而t值為0時,相加的三個關系表達式全為假,對應x≥10,其他類似。根據t的取值,可以決定switch分支。