一起構成一個複雜的程序,例如分支結構中的複合語句、循環結構中的循環體等。
選擇結構
順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用選擇結構。選擇結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。選擇結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的選擇語句。選擇結構適合於帶有邏輯或關係比較等條件判斷的計算,設計這類程序時往往都要先繪製其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪製的程序執行流程圖。
循環結構可以減少源程序重複書寫的工作量,用來描述重複執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、dowhile循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強製改變程序的順序經常會給程序的運行帶來不可預料的錯誤。
特別要注意在循環體內應包含趨於結束的語句(即循環變量值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
三個循環的異同點:用while和do…while循環時,循環變量的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,是不能用break和continue語句進行控製的。
順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重複多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。
模塊化程序結構
C語言的模塊化程序結構用函數來實現,即將複雜的C程序分為若乾模塊,每個模塊都編寫成一個C函數,然後通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,因此常說:C程序=主函數+子函數。因此,對函數的定義、調用、值的返回等中要尤其注重理解和應用,並通過上機調試加以鞏固。
常用的C語言IDE(集成開發環境)有MicrosoftVisualC++,Dev-C++,::Blocks,BorlandC++,WatcomC++,BorlandC++Builder,GNUDJGPPC++,Lccwin32CCompiler3.1,HighC,TurboC,C-Free,win-tc,x(macosx)等。
新標
在ANSI標準化後,C語言的標準在一段相當的時間內都保持不變,儘管C繼續在改進。(實際上,NormativeAmendment1在1995年已經開發了一個新的C語言版本。但是這個版本很少為人所知。)標準在90年代才經曆了改進,這就是ISO9899:1999(1999年出版)。這個版本就是通常提及的C99。它被ANSI於2000年3月采用。
在C99中包括的特性
對編譯器限製增加了,比如源程序每行要求至少支持到4095字節,變量名函數名的要求支持到63字節(extern要求支持到31)
預處理增強了。例如:
宏支持取參數#defineMacro(...)__VA_ARGS__
看本書最新章節,請到oop.tw
使用宏的時候,參數如果不寫,宏裡用#,##這樣的東西會擴展成空串。(以前會出錯的)
支持\/\/行注釋(這個特性實際上在C89的很多編譯器上已經被支持了)
增加了新關鍵字restrict,inline,_Complex,_Imaginary,_Bool
支持longlong,longdouble_Complex,float_Complex這樣的類型
支持%:%:%:,等等奇怪的符號替代
。了製限受就句語otog,西東的樣這了用你果如,麵裡noinutcurts者或,裡局全在用能不就以所。型類新個一是不並意玩這,現實和率效到慮考過不。法寫的樣這]*[atni用就,呢候時的型類明聲。了量變用以可就度長的組數。組數的長定不了持支
)效有也外rof在i,準標條這守遵有沒CV(。效有麵裡rof在隻i,麵裡在放明聲的itni,說是就)i++;001
數函造構的++C像點有這}xx,xx,xx{)eman_epyt(用以可,候時的造構時臨要需西東的構結似類個一當
:寫樣這以可在現候時的構結化始初
;}2=a.],=a.]0[{=][eheh};b,]3[atni{tcurts
的值賦d.,c。對是4,3/\/\}5=b.,4,3=c。,1=a.{=eheh};d,c,b,atni{tcurts
符字的inu持支u\\,麵裡串符字
述描的數點浮的製進61持支
。型類gnolgnol的新應對)46I的用裡6CV(LL/\ll了持支多串化式格的fnacsftnirp以所
述描據數部內的數點浮