C語言學習——C程序結構

1.分支結構之簡單if語句
簡單if語句的基本結構如下:
其語義是:如果表達式的值爲真,則執行其後的語句,否則不執行該語句。 其過程可表示爲下圖
注意:if()後面沒有分號,直接寫{}

2.分支結構之簡單if-else語句
簡單的if-else語句的基本結構如下:
其語義是:如果表達式的值爲真,則執行代碼塊1,否則執行代碼塊2。其執行過程可表示爲下圖:
注意:if()後面沒有分號,直接寫{},else後面也沒有分號,直接寫{}

3.分支結構之多重if-else語句
針對這種多重的條件的話,在C語言中就要用到多重if-else語句,其結構如下:
注意:最後一個是else,而且銜接的是else if
其語義是:依次判斷表達式的值,當出現某個值爲真時,則執行對應代碼塊,否則執行代碼塊n。 if-else-if語句的執行過程如下圖所示:
注意:當某一條件爲真的時候,則不會向下執行該分支結構的其他語句。

4.分支結構之嵌套if-else語句
考試之前,家長說了,你如果考90分以上的話會買玩具,否則沒有獎勵,如果能在獲得玩具的情況下獲取班級前三名的話會有大餐喫。
那麼想滿足這位家長所有說的,就需要用到C語言中嵌套if-else語句。嵌套if-else語句的意思,就是在if-else語句中,再寫if-else語句。其一般形式爲:
其執行過程爲:

5.循環結構之while循環
我們將這種反覆不停的執行某個動作稱之謂循環 ,C語言中有三種循環結構,先看一下C語言while循環的結構
其中表達式表示循環條件,執行代碼塊爲循環體。while語句的語義是:計算表達式的值,當值爲真(非0)時, 執行循環體代碼塊。其執行過程可用下圖表示:
使用while語句應注意以下幾點:
1、while語句中的表達式一般是關係表達或邏輯表達式,當表達式的值爲假時不執行循環體,反之則循環體一直執行。
2、一定要記着在循環體中改變循環變量的值,否則會出現死循環(無休止的執行)。
3、循環體如果包括有一個以上的語句,則必須用{}括起來,組成複合語句。


6.循環結構之do-while循環

一般形式如下:
do-while循環語句的語義是:它先執行循環中的執行代碼塊,然後再判斷while中表達式是否爲真,如果爲真則繼續循環;如果爲假,則終止循環。因此,do-while循環至少要執行一次循環語句。其執行過程可用下圖表示:
注意:使用do-while結構語句時,while括號後必須有分號


7.循環結構之for循環(一)
在C語言中還有一種更加靈活的循環,它完全可以秒殺前面兩種循環結構,因爲它相對前兩種循環結構語法更直接、簡單。它的一般形式爲:
它的執行過程如下:
第一步:執行表達式1,對循環變量做初始化;
第二步:判斷表達式2,若其值爲真(非0),則執行for循環體中執行代碼塊,然後向下執行;若其值爲假(0),則結束循環;
第三步:執行表達式3;
第四步:執行for循環中執行代碼塊後執行第二步;
第五步:循環結束,程序繼續向下執行。
其執行過程可用下圖表示:
注意:for循環中的分號一定要寫


8.循環結構之for循環(二)
在for循環中,表達式1是一個或多個賦值語句,它用來控制變量的初始值表達式2是一個關係表達式,它決定什麼時候退出循環;表達式3是循環變量的步進值,定義控制循環變量每循環一次後按什麼方式變化。這三部分之間用分號(;)分開
使用for語句應該注意
1、for循環中的“表達式1、2、3”均可可以缺省,但分號(;)不能缺省
2、省略“表達式1(循環變量賦初值)”,表示不對循環變量賦初始值。如:
3、省略“表達式2(循環條件)”,不做其它處理,循環一直執行(死循環)。如:
4、省略“表達式3(循環變量增量)”,不做其他處理,循環一直執行(死循環)。如:
注:死循環可以使用後面即將講到的break解決
5、表達式1可以是設置循環變量的初值的賦值表達式,也可以是其他表達式。如:
6、表達式1和表達式3可以是一個簡單表達式也可以是多個表達式以逗號分割。如:
運行結果爲
7、表達式2一般是關係表達式或邏輯表達式,但也可是數值表達式或字符表達式,只要其值非零,就執行循環體。
8、各表達式中的變量一定要在for循環之前定義。如:


9.循環結構之三種循環比較
while、do-while和for三種循環在具體的使用場合上是有區別的,如下:
1、在知道循環次數的情況下更適合使用for循環
2、在不知道循環次數的情況下適合使用while或者do-while循環,如果有可能一次都不循環應考慮使用while循環,如果至少循環一次應考慮使用do-while循環
但是從本質上講,while,do-while和for循環之間是可以相互轉換的,如:小明被老師罰抄10次computer這個單詞,分別用三種語法寫:


10.循環結構之多重循環
在功能需求上,往往一個循環滿足不了,比如:循環用一個“*”輸出,得到一下圖形
上面這個例子顯然我們用一個循環不是太容易實現,這個時候我們就要用到多重循環,多重循環就是在循環結構的循環體中又出現循環結構
在實際開發中一般最多用到三層重循環。因爲循環層數越多,運行時間越長,程序越複雜,所以一般用2-3層多重循環就可以了。另外不同循環之間也是可以嵌套的。
多重循環在執行的過程中,外層循環爲父循環,內層循環爲子循環,父循環一次,子循環需要全部執行完,直到跳出循環。父循環再進入下一次,子循環繼續執行...
注:一個父循環可以有多個子循環
那麼上面這個用“*”輸出的矩形用多重循環實現如下:
注意:printf("%\n),在這裏是循環換行的意思。


11.結束語句之break語句
在我們生活中,可能會由於某種原因需要中斷當前的事情,並且不能繼續進行下去。如:小明今天籃球訓練,需要運球10次,當運到5次的時候,突然肚子疼無法堅持循環,這個時候就要停止訓練。
我們可以將運球看成是一個循環,那麼循環5次的時候,需要中斷不繼續訓練。在C語言中,可以使用break語句進行該操作,代碼實現如下:
運行結果:
使用break語句時注意以下幾點:
1、在沒有循環結構的情況下,break不能用在單獨的if-else語句中
2、在多層循環中,一個break語句只跳出當前循環


12.結束語句之continue語句
在我們生活中,可能會由於某中原因需要中斷當前的事情,過一會還能繼續進行。如:小明今天籃球訓練,需要運球10次,當運到5次的時候,突然來電話了,然後接完電話回來繼續訓練。
我們可以將運球看成是一個循環,那麼循環5次的時候,需要中斷後繼續訓練。在C語言中,可以使用continue語句進行該操作,代碼實現如下:
運行結果:
continue語句的作用是結束本次循環開始執行下一次循環
break語句與continue語句的區別是:break是跳出當前整個循環,continue結束本次循環開始下一次循環。 

注意:continue是重新返回再進行一次循環。


13.分支結構之switch語句
C語言還提供了一種用於多分支選擇的switch語句,它的用處也不少,例如:小明對自己每週的學習和生活制定了計劃方案,每天應該做什麼都詳細規劃。
switch語句結構如下
其執行順序如下圖:
例子代碼實現:
在使用switch語句時還應注意以下幾點:
1、在case後的各常量表達式的值不能相同,否則會出現錯誤。case後面必須是整型類常量
2、在case子句後如果沒有break;會一直往後執行一直到遇到break;纔會跳出switch語句。
運行結果: 學英語學C語言好好休息 
3、switch後面的表達式語句只能是整型或者字符類型
4、在case後,允許有多個語句,可以不用{}括起來。
5、各case和default子句的先後順序可以變動,而不會影響程序執行結果。
6、default子句可以省略不用。


14.臭名遠揚之goto語句
大家平時出門的時候都會有個目的地,我今天要去哪哪哪,然後就去了。
那麼C語言中也有這樣的語句,就是goto語句,goto語句是一種無條件分支語句,goto 語句的使用格式爲:
     goto 語句標號;
其中語句標號是一個標識符,該標識符一般用英文大寫並遵守標識符命名規則,這個標識符加上一個“:”一起出現在函數內某處,執行goto語句後,程序將跳轉到該標號處並執行其後的語句。
goto語句通常不用,主要因爲它將使程序層次不清,且不易讀,但在特定情況下,可以使用goto語句來提高程序的執行速度,所以還是少用爲妙。
例如:用goto語句和if語句構成循環求10以內的數之和。
運行結果爲: sum=55 





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章