首頁>技術>

第二章:分支與迴圈(1)什麼是語句

C語言是一門結構化程式設計語言:順序結構,選擇結構,迴圈結構

C語言中“;”隔開的就是一條語句。

(2)分支語句A:if語句

第一點:if語句的基本結構

第一:單分支

第二:雙分支

第三:多分支

第二點:關於if語句的其他補充

第一:懸空if

else在匹配if時,匹配的是離它最近的if,所以下面的程式碼中,在閱讀上感覺要輸出“haha”,但是實際什麼都不輸出,因為下面的else是和內層的if匹配,它連第一個判斷都沒有進去

所以程式碼風格一定要清晰,不能人為的產生歧義

第二:請再不要把賦值運算子和比較運算子搞混了

所以為了防止這樣的低階錯誤,可以反著寫

if語句練習

1:判斷一個數是否為奇數

B:switch語句

第一點:switch語句的基本結構

第二點:關於switch的一些說明

第一:switch後面是整形,case後面必須是整形或整形表示式

第二:case後面不是任何時候都加break語句。比如下列情形:要求輸入1,2,3,4,5,中任意一個數字,則輸出工作日,6和7則輸出休息日。

第三點:關於default的說明啊

第一:default和case的順序無關,但建議放在後面

第二:計算需求中沒有用default的地方,良好的程式碼風格也應該加上它

switch語句練習

如下圖這段程式碼,很好地體現了switch的執行過程

接下來,逐過程執行程式碼

(3)分支語句A:while

第一點:while迴圈基本結構

第二點:while迴圈邏輯圖

第三點:關於break和continue

break是用來跳出當前迴圈

continue意思是簡單點理解就是跳過迴圈變數的等於某個值得,直接進行判斷。

第四點:經典例子while

第一:利用while讀走緩衝區字元,使getcha接收到鍵盤上所輸入的字元

(注意,上述操作結束時要按"ctrl +z")

上面的例項究竟有什麼用呢:如下要輸入一個輸入密碼的程式,問題在於程式為什麼不再getchar處等我們輸入Y或N後再進行判斷,而是直接跳過了這一步驟

那麼解決方法很顯而易見,只要在getchar讀輸入緩衝區前,把裡面的換行符讀走即可

當然上述的解決方法還是有限制的,只適用於某些特殊情況。所以完美的解決方式就是用本例項所要說明的while迴圈

第二:只接受數字列印,非數字不列印

B:for迴圈

第一點:for迴圈的基本結構

第二點:for迴圈邏輯圖

表示式1只會被執行1次

第三點:break和continue在for迴圈中的使用

break和continue使用基本一致

第四點:關於for迴圈的注意事項

第一:不要在for迴圈體內改變迴圈變數

第二:建議for迴圈控制變數的取值採用“前閉後開”寫法

第三:for迴圈的初始化,調整,判斷都可以省略,其中判斷省略後條件恆為真(雖然各部分可以省略,但每一個部分都有存在的意義,所以隨意省略可能導致意想不到的錯誤)

比如,下面省略了for迴圈的初始化

第四:for迴圈允許多個迴圈變數

一道經典的筆試題

C:do while迴圈

第一點:do while迴圈的基本結構

第二點:do while迴圈的邏輯結構

第三點:do while中的break和continue

do while中continue仍然會導致死迴圈

(4)goto語句A:goto語句說明

C語言中提供了可以隨意濫用的goto語句額標記跳轉的符號,從理論上來說goto語句是沒有必要的,但是在某些特定場合下也會使用到goto語句,最常見的就是處理某些深度巢狀的語句,使用goto語句可以一次跳出多個迴圈,而在這樣的情況下使用break'是達不到,因為break只能跳出一層。

如下:可以使用go迴圈列印

由以上可以看出,使用goto語句可以使程式隨意跳轉,也就極易造成程式碼邏輯混亂

B:goto 語句適合的場景

特別適合這種深層次巢狀

(5):本節練習與作業

迴圈與分支經典練習題如下

(6):本節實戰專案:猜數字遊戲

特別注意

1:C語言隨機數的生成方式

2:時間戳相關概念

3:rand,srand函式

18
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • ansible之role角色建立apache搭建