c語言總結

2021-09-07 05:55:43 字數 3845 閱讀 5367

乙個學期馬上就要結束了,c語言這門課也畫上了句號。

c程式處理的資料有常量和變數兩種基本形式。在程式執行的過程中,常量的值保持不變,變數的值是可以改變的。

c語言的基本資料型別有整型,實型,字元型和列舉型別等。變數必須先定義再使用,變數名標識記憶體中乙個具體的儲存單元,變數值是儲存單元中存放的資料。所有變數必須在第一條可執行語句之前定義。

賦值運算子「=」用於為變數賦值,將「=」右邊的表示式的值賦值給左邊的變數,賦值運算子的左值只能是變數,不能是常量或表示式。賦值表示式有值,為運算所得的資料。

連續賦值從右計算,逐步把結果賦值給左面。

sizeof()用於計算資料型別或表示式所佔記憶體的位元組數。

表示式的計算順序是由運算子的優先順序決定的,優先順序相同時,由運算子的結合性決定送算的先後順序。()的優先順序最高。

表示式末尾要加分號變為完整語句。

標識將必須以字母或下劃線開頭,且只能由英文本母數字和下劃線組成,不能用c關鍵字為識別符號命名。

算術運算子有加(+)減(-)乘(*)除(/)求餘(%)。算術運算子的優先順序高於賦值運算子,算術運算子是左結合,賦值運算子是右結合。需要注意,兩個整數相除後的商還是整數,若要得到浮點數的傷,必須使用浮點數除法,或者將其中乙個運算元強轉為浮點數。求餘運算元必須是整數。不存在乘冪運算,進行這種運算只能乙個乙個的乘。

增一和減一運算子。在變數前後加++或--。在變數前加是先使用變數的值,然後再增一減一,在變數後加是先增一減一,然後再使用變數的值。

使用「(型別名)表示式」可將表示式的值強制轉換為目標型別。

字元常量是用單引號括起來的乙個字元。

轉義字元。'\n'換行。'\r'回車(不換行)。'\0'空字元,通常用作字串結束標誌。

getchar()和putchar()是用於字元輸入輸出的函式。

printr(格式控制字串)

prtner(格式控制字串,輸出值參數列)

格式轉換說明由%開始,並以轉換字元結束,用於指定各輸出值引數的輸出格式。

scanf(格式控制字串,引數位址表)

如果函式的格式控制符串中存在除格式說明符以外的其他字元,那麼這些字元必須在輸入資料時由使用者從

鍵盤原樣輸入。

關係運算子的優先順序低於算術運算子。<,<=,>,>=的優先順序高於==,!=。注:=為賦值,==才是等於。

c語言中用非零表示真,用零值表示假。

if(表示式)語句1

else 語句2

if(表示式)語句1

else if(表示式2)語句2

……switch(表示式)

注意常量的型別與表示式的型別一致。

邏輯非為一元運算子。與和或為二元運算子。非高於與,與高於或。

for(表示式1;表示式2;表示式3;)

實現當型迴圈控制結構,在迴圈頂部進行迴圈調節測試,如果迴圈條件第一次測試就為假,則迴圈體一次也不執行,適合迴圈次數已知、計數控制的迴圈。

while

用於實現當型迴圈控制結構,適合於迴圈次數未知、條件控制的迴圈。

dowhile(表示式);

用於實直到型迴圈控制結構,在迴圈底部進行迴圈條件測試,迴圈至少執行一次。適合於迴圈次數未知、條件控制的迴圈。

乙個迴圈語句的迴圈體內又包含迴圈語句,稱為巢狀迴圈。各種迴圈語句都可以互相巢狀,使用巢狀迴圈時應使用復合語句保證邏輯上的正確性,內層和外層迴圈控制變數不能同名,防止造成混亂 ,還要採用右縮排格式書寫保證層次的清晰性 。

用break可退出迴圈

用continue結束本次迴圈,繼續執行下一次迴圈

goto用於流程控制,當程式需要退出多重迴圈時,用goto更直接方便。

exit(code);

作用是終止整個程式的執行,當code值為零時,表示程式正常退出,值為非零時,表示程式出現某種錯誤後退出。

逗號運算子和逗號表示式優先順序最低,具有左結合性,通常使用逗號表示式的目的並非要得到和使用整個逗號表示式的值,而僅僅是順序計算各個表示式的值。

累加和變數的初值通常設為零,當累加的前後項無關時,需單獨計算通項,有關時,可以根據後項與前項之間的關係,利用前項計算後項。累積乘變數的初值通常設為一。

迴圈開始前要將各個變數初始化。

while和for語句後的復合語句要記住帶上{}。

乙個陣列在記憶體中佔一片連續的儲存單元

陣列的下標都是從開始的

陣列一但定義, 就不能再改變大小 ,只能用整形常量定義陣列大小 ,不能用變數定義陣列的大小。最好用巨集變數定義。

定義乙個有5個int型元素的陣列

系統在記憶體分配連續的5個int空間給此陣列

直接對a的訪問,就是訪問此陣列的首位址

模擬:把實際操作模擬一遍 ,得到結果

編譯程式應檢查是否越界。如果下標越界,將訪問陣列以外的空間,那裡的資料是未知的,不受掌控,可能帶來嚴重後果。

從鍵盤輸入乙個字元陣列可以使用scanf語句或gets語句。

scanf(「%s」,字元陣列名);

系統會自動在輸入的字串常量後新增『\0』標誌,因此輸入時,僅輸入字串的內容即可。

scanf(「%s%s%s」,s1,s2,s3);

從鍵盤分別輸入let us go,則三個字串分別獲取了三個單詞。

scanf(「%s」,s1);

從鍵盤分別輸入let us go,則僅有第乙個單詞被獲取,即s1變數僅獲取第乙個單詞let。

gets(字元陣列名);

使用gets只能輸入乙個字串。讀入的是一整行,包括空格。

scanf(「%s」,s1);

gets(s2);

printf(「%s」,字元陣列名)

puts(字串名稱);

puts語句輸出乙個字串和乙個換行符。

對於已經宣告過的字串a,printf(「%s\n」,a)和 puts(a)是等價的。

查詢時順序法花費時間長 ,容易超時 ,最好用二分法 。

這一門課學到現在,已經可以用來解決很多問題了。資料的儲存,各種計算,從一堆資料裡挑選出符合條件的,統計一堆資料中符合條件的資料數量,將一堆資料通過各種方式進行重新排序……

我們做題時,不要被那些情景迷惑,要透過題目看到本質。一時沒有思路也不要慌,不要一直盯著螢幕呆呆地看,拿出紙和筆,將關鍵條件寫下來,最好能畫出乙個流程圖,寫一下大致的思路。

程式出現錯誤也是很正常的事。到了後來,基本上不會出現編譯錯誤了,但答案錯誤和超時變得非常常見。

答案錯誤一般是自己程式設計的時候沒有考慮全面,漏掉了一些特殊情況,可以通過給的分數來判斷自己錯誤的多少,來思考要改多少,重新測試時多試一些極端情況,好好想想自己可能有什麼特殊情況。

只看到結果不對,但就是不知道是**出問題了,可以將這個**拆開,一部分一部分的拿出去檢驗,看這一部分執行的結果是不是自己想要得到的,這樣找出錯誤的那一部分之後,再好好檢查這一小部分是**出錯了。

到了後期,超時也經常出現了。因為資料越來越多,很多題我們不能再用那種暴力的方法做,雖然很簡單,但是真的非常容易超時,我們要開始用各種演算法,盡力減少執行的次數,特別是在迴圈巢狀裡執行的次數,通過這種限制盡力減少執行時間。

學習一門課,都是由淺入深層層遞進的。一開始的定義、輸入輸出非常簡單,那些簡單的計算也不難,但如果因為這就放鬆警惕,覺得這門課也不過如此的話,就大錯特錯了。一開始的是基礎,讓你知道最基本的操作方法,然後才能開始講一些比較複雜的東西。不管學什麼都是,一定要打好基礎,並且不對難題失去信心。

這個學期做題真的經常出現讓人抓狂的情況。有時自己測試了許多組資料,結果沒有問題,但提交就是過不了。還有時分數就卡在9分上不動了,自己怎麼也找不出問題來,挑著各種小地方排著改,結果甚至可能越改越小。還有超時,每次都逼著人使勁想**可以優化,或者乾脆需要重新編寫程式。

編**的是一件需要極大的耐心、細心的事,我們要有緊密的邏輯思維,要勤奮努力,絕對不能偷懶。這可能會犧牲我們很多的娛樂時間,但如果能把打**當成一件有趣的事的話,相信一定會很棒的。現在的我還做不到這一點,但我正在努力讓自己愛上打**的過程,將這件事當成一種享受。

C語言總結

複習了下c語言,總結如下 1.瑞年的判斷 1 能被4整除,但不能被100整除 2 能被100整除,又能被400整除 2.符號常量名使用大寫,字元使用字母數字下劃線組成,第乙個字母必須為字母或下劃線 3.以0開頭的是八進位制數 0123 十進位制83 以0x開頭的是十六進製制數。0x123 print...

C語言總結

早期的c 語言主要是用於unix系統。目前最流行的 語言有以下幾種 microsoft c 或稱 ms c borland turbo c 或稱 turbo c at t c 這些 語言版本不僅實現了ansi c標準,而且在此基礎上各自作了一些擴充,使之更加方便 完美。c語言簡潔 緊湊,使用方便 靈...

C語言總結

十一天課的總結 只為總結,詳細請看前面的 一 順序結構 從上往下依次執行的 結構 計算機執行程式時,都是編譯成二進位制檔案,計算機中又分為 二進位制 例如 101001001就是乙個二進位制數字 八進位制 例如 023767是乙個八進位制數字,前面的0代表這是乙個八進位制數字 十進位制 10,33,...