C語言中的分支語句用法解讀
前言
C語言是一種結(jié)構(gòu)化的程序設(shè)計語言,其由三大基本結(jié)構(gòu)組成,分別為:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),它們組成的算法結(jié)構(gòu)可以解決任何復(fù)雜的問題。
對于順序結(jié)構(gòu)指的就是從main函數(shù)入口開始,從頭到尾依次執(zhí)行代碼。
對于選擇結(jié)構(gòu),顧名思義就是進行選擇,其有兩種語句:
1.if語句
1.1 if語句的語法形式
if(表達(dá)式)
語句

1.2 if語句用法
例:輸入一個整數(shù),判斷是否為奇數(shù)

由于表達(dá)式判斷的依據(jù)為真,若為非0值,則執(zhí)行語句,為0,則不執(zhí)行語句,所以奇數(shù)判斷依據(jù) a%2==1 可以略為 a%2.
由上我們可以不由的想,若需要判斷出偶數(shù)呢?
這就涉及到了if..else語句了
2.if..else語句
2.1 if...else語句的語法形式
- if(表達(dá)式)
- 語句1
- else
- 語句2
2.2應(yīng)用
1.對上文的代碼進行完善

2.輸??個年齡,>= 18歲就輸出:成年,否則就輸出:未成年

若我們要更加細(xì)致的區(qū)分不同年齡段的稱謂,我們就需要多條的if...else語句進行連用,即
3.嵌套if語句
if else語句可以進行連用構(gòu)成多重判斷。
3.1例
輸??個?的年齡 ,如果年齡<18歲,打印"少年" ,如果年齡在18歲?44歲打印"?年" ,如果年齡在45歲?59歲打印"中?年" ,如果年齡在60歲?89歲打印"?年" ,如果90歲及以上打印"?壽星"。

常見編譯錯誤1
問題:

修改后:

4.懸空else問題
對于這個問題,我們需要知道一個規(guī)則--else總是與最接近的if匹配
例:

對于上圖代碼,最后輸出的結(jié)果是什么呢?

結(jié)果其實是沒有輸出的,這就是典型的懸空else問題。加了大括號后會便于理解,由于else總是與最接近的if匹配,所以在 a=0 的情況下,是不符合if表達(dá)式中條件的,故不會有輸出。

由此可知,適當(dāng)?shù)募由洗罄ㄌ枙沟么a的可讀性高,邏輯更清晰。
當(dāng)然,大括號還會改變與else最接近的if語句,如:

這樣就會輸出 haha 。
5.關(guān)系操作符
> ,>= , < , <= , == , !=
以上都是關(guān)系操作符,其返回 0\1 ,0表示假,1表示真。
常見編譯錯誤2. 要注意區(qū)別 == 與 = ,== 是表示相等,若 A==B 表示A與B的值相等,但若是 A = B 則是表示將B賦值給A,兩者不能混淆。
溫馨小提示:若當(dāng)一個變量與一個常量比較相等時,建議將常量值放在 == 的左邊,這樣在寫錯了== 之后編譯器會進行報錯,便于檢查代碼。但若是將常量值位于 == 右邊則不會出現(xiàn)該報錯,但程序最后的結(jié)果時錯誤的。

常見編譯錯誤3.關(guān)系運算符不宜連用,會導(dǎo)致程序結(jié)果出錯

上圖就出現(xiàn)了錯誤,其執(zhí)行流程是這樣的:
先是a與47進行比較,得出0,后0與100進行比較,得出1,結(jié)果為真,返回 hehe。
那在C語言中如何表達(dá) 47<=a<=100?這就需要使用到邏輯操作符。
6. 邏輯操作符
- && :邏輯或 ---真真為真(真就是非0)
- || :邏輯與 ---假假為假(假就是0)
- ?。?/strong>邏輯非 ---改變單個表達(dá)式的真假
所以就可以表示為 47<=a&&a<=100 ; 若要表示 a<=47或 a>=100,則就是 a<=47||a>=100;
若要表示a不等于47,就是 a!=47。
例:輸入年數(shù),判斷是不是閏年

7.短路
在C語言邏輯運算中有一個特點,都是先對左側(cè)的表達(dá)式求值,再對右側(cè)的表達(dá)式求值,其順序是固定的,所以在左側(cè)的表達(dá)式已經(jīng)符合邏輯運算符的條件的時候,右側(cè)的表達(dá)式將不會被執(zhí)行,這就是短路。
例:
1.&&的短路

由于a++是先使用,再+1,所以當(dāng)a=0的時候進行計算,故左側(cè)表達(dá)式為假,所以右側(cè)的表達(dá)式不會進行計算,由此輸出 1 4 5 0。
2.||的短路

同理,由于a++和c++的計算結(jié)果為真(1),所以后面的b++不會被計算了,最后輸出 1 4 6 1。
8..條件操作符
是C語言中唯一的三目操作符,其形式為:

例:比較兩個數(shù)的大小

9.switch語句
9.1 switch語句是一種特殊的if...else 結(jié)構(gòu),適用于判斷條件有多少個結(jié)果的情況。提高了代碼的可讀性,更方便使用。
9.2 switch語句的語法構(gòu)
switch(整型/字符型表達(dá)式)
{
case(整型常量表達(dá)式1):(語句)
:
default:(語句)
:
}
根據(jù)表達(dá)式計算出的不同值,程序?qū)?zhí)行不同的case語句。若是找不到對應(yīng)的case語句,就會執(zhí)行default分支。
例:1.

2.輸??個1~7的數(shù)字,打印對應(yīng)的星期?
例如:
- 輸?:1 輸出:星期?
- 輸?:2 輸出:星期?
- 輸?:3 輸出:星期三
- 輸?:4 輸出:星期四
- 輸?:5 輸出:星期五
- 輸?:6 輸出:星期六
- 輸?:7 輸出:星期天

變題:
1. 輸?1~5,輸出的是“?作?”;
2. 輸?6~7,輸出“休息?”.

若用戶輸入的不是1-7的數(shù)字該如何編寫代碼?
這時就可以借助default了。

switch語句中的case子句和default子句是沒有順序要求的,只要滿足實際需求就行。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++數(shù)據(jù)結(jié)構(gòu)與算法之反轉(zhuǎn)鏈表的方法詳解
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)與算法之反轉(zhuǎn)鏈表的方法,結(jié)合實例形式分析了C++反轉(zhuǎn)鏈表的原理、實現(xiàn)方法及相關(guān)注意事項,需要的朋友可以參考下2017-08-08
C語言 深入探究動態(tài)規(guī)劃之區(qū)間DP
這幾天在做有關(guān)dp的題,看到一個石子合并的問題,本來以為是個貪心,后來仔細(xì)一想壓根不是貪心。貪心算法的思路是每次都取最大的,然而石子合并問題有個限制條件就是每次只能取相鄰的,這就決定了它不是個貪心2022-04-04
C++中函數(shù)使用的基本知識學(xué)習(xí)教程
這篇文章主要介紹了C++中函數(shù)使用的基本知識學(xué)習(xí)教程,涵蓋了函數(shù)的聲明和參數(shù)以及指針等各個方面的知識,非常全面,需要的朋友可以參考下2016-01-01

