全國計算機等級考試二級C語言教程64總復(fù)習(xí).ppt
《全國計算機等級考試二級C語言教程64總復(fù)習(xí).ppt》由會員分享,可在線閱讀,更多相關(guān)《全國計算機等級考試二級C語言教程64總復(fù)習(xí).ppt(71頁珍藏版)》請在裝配圖網(wǎng)上搜索。
C語言總復(fù)習(xí) 64學(xué)時 以考試難度為限 一 C語言的數(shù)據(jù)表示 1 1常量和變量1 2表達式1 3數(shù)據(jù)類型簡單類型 結(jié)構(gòu)類型 指針類型1 4輸入 輸出 1 1常量和變量 1 常量常量是在程序執(zhí)行中 值不發(fā)生改變的數(shù)據(jù) 其值預(yù)先決定 之后不變 有不同的數(shù)據(jù)類型 1 常數(shù) 有的稱直接常量 頁面常量 例如的 整數(shù) 5 3 017 八進制 0 x1f 16進制 實數(shù) 浮點數(shù) 3 14 1 2E 3 1E10單個字符 A 占一個字節(jié) 轉(zhuǎn)義字符 非法 77 八進制ASCII碼63 78 非法 x3f 十六進制ASCII碼63 x3g 非法字符串 A 后面有 0 占兩個字節(jié) E3 2E3 0不合法 不是整型量 占一個字節(jié) 2 符號常量給常量起標識符名字 C語言的符號常量 用宏定義 definePI3 14159265好處 提高程序易讀性 方便修改常量的值 注意 1 一般用大寫字母 2 defineM3不是C語句 后面沒有 3 可以做M 1 不能做M 3 地址常量當數(shù)組在定義時 其變量名為其首地址 是地址常量 inta 10 可以做a 1 不能做a 1 1常量和變量 2 變量用各種操作來改變值數(shù)據(jù) 從 名 和 值 兩個角度認識變量 1 變量名每個變量 要在使用前定義變量的名字 遵循標識符命名規(guī)則 只能用字母 數(shù)字和下劃線組成 不能以數(shù)字開頭 不能用保留字 int printf main 變量定義就是申請數(shù)據(jù)的存儲空間 登記數(shù)據(jù)的各種存儲特性 例如 intm 2個字節(jié) 215 215 1 32768 32767 longn 4個字節(jié) 231 231 1charch 1個字節(jié)0 255floatx 4個字節(jié) 3 4 10 38 1038 doubley 8個字節(jié) 1 7 10 308 10308 可以用sizeof獲得字長sizeof char 1sizeof int 2sizeof double 8 2 變量的值變量值就是由變量名所指定空間上的存儲數(shù)據(jù)內(nèi)容 即變量的當前值 數(shù)據(jù)內(nèi)容用語言的操作語句來改變 賦值語句 鍵盤輸入語句 charchx intm 變量的定義 chx A m 12 3 賦值語句 scanf d 鍵盤輸入語句 在程序運行時 將數(shù)據(jù)存入制定內(nèi)存空間 變量初始化 定義變量時同時確定變量初值 例如 charchy a intweight 2 1 2C語言的表達式 1 算術(shù)表達式2 關(guān)系表達式3 邏輯表達式4 賦值表達式5 逗號表達式6 條件表達式7 其他表達式 C語言的表達式 使用規(guī)定的運算符 將常量 變量 函數(shù) 調(diào)用 連結(jié)的一個有意義的式子 1 算術(shù)表達式 用算術(shù)運算符來表示對數(shù)據(jù)的算術(shù)運算求值過程 算術(shù)運算符 2 3結(jié)果是0 2 3結(jié)果是2 注意不同類型運算問題 2 關(guān)系表達式 關(guān)系運算符 0 sin x 0 5 a b c d 注意語法合理與數(shù)學(xué)邏輯錯誤問題 分析 10 a 15a 9是假 10 a 15 10 a假0 0 15真 所以要寫成10 a a 15 3 邏輯表達式 用邏輯表達式來表示對數(shù)據(jù)的邏輯關(guān)系判斷 運算結(jié)果是邏輯值 真 1或者 假 0 C邏輯運算符包括 a c均按非0 即真 處理 邏輯運算規(guī)律 在 與 表達式中 若 的左端為假 則不再計算另一端 該表達式值肯定為0 假 在 或 表達式中 若 的左端為真 則不再計算另一端 表達式的值必定為1 真 inta 5 b 1k a0k b 假 后面不算了 k 0 b 1 判斷閏年的條件是 能被4整除但不能被100整除 或能被400整除 x 4 0 x 100 0 水仙花數(shù)是指一個三位正整數(shù) 其各位數(shù)字的立方和等于該數(shù)本身 k 100 m 10 n k k k m m m n n n 三角形的基本條件 a b c c b a c a b 4 賦值表達式 單目 單目 級別僅高于逗號表達式 右結(jié)合 inta 3 c 2 ba b c n m 2相當于n n m 2 k i 先k i 再i i 1k i 先i i 1 再k i c賦值給b b 2b賦值給a a 2 5 條件表達式e1 e2 e3若e1為真 表達式的值為e2 否則為e3 a b a b 5 1 4Ta 4 aa 3表達式的值為3 a 5 b 4 4 1 5Fb 6 b b 7表達式的值為6 a 4 b 5 條件表達式的值的類型為e2 e3二者中類型較高者 如果y 5 y 3 1 0 2其值為2 0 6 逗號表達式表達式的值等于最后一個表達式的值 運算等級最低 a 5 b 2 c 3a 7 b c a a 7 b c a a 12 a 5 7 強制類型轉(zhuǎn)換表達式 單目 intm sqrt float m 并沒有改變m的類型和數(shù)值 理解記憶運算符表 右結(jié)合單目運算符賦值運算符 1 3數(shù)據(jù)類型 數(shù)據(jù)類型 在高級語言的數(shù)據(jù)表示機制中 數(shù)據(jù)類型 datatyPe 是個核心概念 簡單類型 構(gòu)造類型 指針類型 整型 實型 字符型 數(shù)組 結(jié)構(gòu)體 共用體 數(shù)值型 枚舉型 空類型 1 3數(shù)據(jù)類型 1 整型 輸入 輸出格式 d 類型名字節(jié)數(shù)數(shù)值范圍int2 32768 32767short2 32768 32767long4 2147483648 2147483647還有無符號整型 輸入 輸出格式 u Unsigned int 20 65535Unsignedshort20 65535Unsignedlong40 4294967295 1 簡單類型 2 實型實型 float 數(shù)據(jù)的值集是實數(shù)集的一個有限子集 3 4e38 3 4e 39 3 4E 38 3 4E38 1 簡單類型 類型名字節(jié)數(shù)輸入 輸出格式有效數(shù)字位float4 f7doubule8 lf16longdoubule16 lf19 不要以為是長整型 E38非法 3 字符型 輸入 輸出格式 c ASCII碼 一個字符占1字節(jié) charca ca 注意轉(zhuǎn)義字符 的使用 4 字符串 輸入 輸出格式 s 所謂 字符串 是指若干有效字符的序列 語言字符串可以包括字母 數(shù)字 專用字符 轉(zhuǎn)義字符等 字符串常量 使用雙引號 China BASIC a b c Li Li 39 4 d n 解放軍 字符型的一維數(shù)組 相當于字符串變量 charst 8 str 10 strcpy st 12345 strcpy str st 不能st 12345 str st 2 結(jié)構(gòu)類型 結(jié)構(gòu) 一般可以稱為數(shù)據(jù)元素 在不同的結(jié)構(gòu)類型中 數(shù)據(jù)元素會有特定的名稱 結(jié)構(gòu)類型的數(shù)據(jù)由更加基本的成分組成 這些成分稱為 數(shù)據(jù)項 結(jié)構(gòu)的子成員 1 3數(shù)據(jù)類型 1 數(shù)組A 0 A 1 A 2 A 3 A 4 A 5 A 6 A 7 1020304050607080一個數(shù)組 array 是由相同類型的若干數(shù)組元素構(gòu)成的有限序列 C語言的數(shù)定義 intB 8 A 8 charC 10 2 結(jié)構(gòu)類型 例日期類型的定義 2 結(jié)構(gòu)體 C語言中實現(xiàn) structDate intmonth 月 intday 日 intyear 年 structDatemyd 12 16 1978 系統(tǒng)分配給它的內(nèi)存是各成員所需內(nèi)存量的總和 本例是6 1 指針 變量名的在內(nèi)存中的存儲地址 2 指針變量inti 12 p P 把存放變量i的地址的變量p稱作指針變量 指針變量的存放內(nèi)容是數(shù)據(jù)的地址 3 指針類型 3 指針引用變量指針變量可以指向各種不同的數(shù)據(jù)類型 因此指針變量也要有不同的指針類型 如 intm p floatx q inta rm 12 p 注意 是否用 1 4輸入 輸出 輸出 printf d 6d ld c s f 10 2f lf 20 8lf n 3 printf n d d d n n n 計算從右到左 輸出從左到右 s是輸出以指定首地址到第一個 0或空格之間的字符串 chara abcdefg p a printf s p bcd 5 5 3 1 4輸入 輸出 輸入 scanf d ld對應(yīng)intlong c s對應(yīng)charcharstr f lf對應(yīng)flaotdouble 常見錯誤inta b chard e 20 scanf d f n 1 表達式語句 2 流程控制語句 3 復(fù)合語句 C語言語句 指令語句 非指令語句 數(shù)據(jù)定義語句floatx intm 編譯預(yù)處理 宏定義 definePI3 14159 文件包含處理 include 二 C語言的程序結(jié)構(gòu)與相關(guān)語句 表達式語句 1 表達式語句的組成 由一個表達式后接一個分號組成的 i i 1 是表達式 沒有構(gòu)成語句 i i 1 是語句 x y 是合法語句 但沒有實際意義 表達式語句的分類 賦值語句 i 1 c getchar 函數(shù)調(diào)用語句 printf n Hello world 空語句 其形式為 逗號表達式語句 a b 完成一定的控制功能 9種控制語句 判斷語句條件判斷語句if else 多分支選擇語句switch case循環(huán)語句循環(huán)次數(shù)控制語句for 先判斷后執(zhí)行循環(huán)控制語句while 先執(zhí)行后判斷循環(huán)控制語句do while 轉(zhuǎn)移控制語句直接轉(zhuǎn)移語句goto終止語句break 用在循環(huán)結(jié)構(gòu) swicth 跳轉(zhuǎn)語句continue 僅用在循環(huán)結(jié)構(gòu) 返回語句return 流程控制語句 復(fù)合語句 一組語句括在一對花括號之中 稱復(fù)合語句 c getchar putchar c 注意 一個復(fù)合語句的后花括號之后不應(yīng)再寫分號 在語法上是一個整體 相當于一個語句 凡是能夠使用簡單語句的地方 都可以使用復(fù)合語句 一個復(fù)合語句中又可以包含另一個或多個復(fù)合語句 二 C語言的程序結(jié)構(gòu)與相關(guān)語句 程序的三種基本結(jié)構(gòu) 順序結(jié)構(gòu)選擇結(jié)構(gòu)if else switch case循環(huán)結(jié)構(gòu)for while do while 選擇結(jié)構(gòu) 單分支結(jié)構(gòu)if a b printf yes 雙分支結(jié)構(gòu)if a b printf yes elseprintf no 多分支結(jié)構(gòu)switch case 多分支選擇語句 switch 表達式 case常量表達式1 語句序列1 break case常量表達式2 語句序列2 break case常量表達式n 語句序列n break default 語句序列n 1 根據(jù) 表達式 的值從上至下去尋找與表達式的值相匹配的 case常量表達式 執(zhí)行一個分支后 再執(zhí)行下一個分支 直到break結(jié)束 然后執(zhí)行switch結(jié)構(gòu)后面的程序 找不到匹配的入口標號時 執(zhí)行 語句序列n 1 然后結(jié)束 順序向下執(zhí)行程序 main inta 1 b 1 switch a case1 switch b case0 printf break case1 printf break case2 printf case2 printf case3 printf break case4 printf a 1case1 swtch 1 b 1printf break跳出switch b 結(jié)構(gòu)進入switch a 結(jié)構(gòu)case2 printf case2 printf break跳出switch a 結(jié)構(gòu) for while do while三種結(jié)構(gòu) 循環(huán)變量初始化 繼續(xù)循環(huán)條件 改變循環(huán)變量是不可缺少的三個環(huán)節(jié) for常用于循環(huán)次數(shù)已知的問題中 括號中的兩個 不可省 while與do while常用于循環(huán)次數(shù)未知的問題中 注意 在for和while語句之后一般沒有分號有分號表示循環(huán)體就是分號之前的內(nèi)容 空循環(huán)體 while i 100 i for i 0 i 100 i printf d i if swtich while for后面的語句只能是一句 因此 多句時別忘了 在while e 和for e 中的e是循環(huán)繼續(xù)的條件 不能寫其它條件 如果缺省 就是死循環(huán) 在if e while e 和for e 中e的值是邏輯值 0或非0 e一般是關(guān)系表達式 邏輯表達式或變量 if x 1 if x 1 main inti 1 do i while i printf d i A 1B 0C 1D 陷入死循環(huán) i 1i i 0 while i 終止循環(huán)i i 1 輸出i 1i i 0 break coutinue break只能用于switch和循環(huán)語句中 作用提前終止本層次switch和循環(huán) coutinue是跳過循環(huán)體內(nèi)尚未執(zhí)行的語句 接著執(zhí)行下次循環(huán) 常用的循環(huán)算法 求素數(shù) 水仙花數(shù) 最小公倍數(shù) 最大公約數(shù) 分解多位數(shù)的數(shù)字 累加 累乘 分解質(zhì)因數(shù)等 各種有規(guī)律的圖案 while m k m 10 求最低位的數(shù)字 m m 10 除去最低位的數(shù)字 分解多位數(shù)的數(shù)字 判斷素數(shù) main inti x flag 0 scanf d 求階乘x longfacto intx longy for y 1 x 0 x y x return y main longy for y 1 x 0 x y x printf ld y main intm n longcmn facto scanf d d 求C m n m n m n 數(shù)組的定義類型標識符數(shù)組名 常量表達式 錯誤的定義是 或intn intn 10 scanf d 定義inta 5 時 a 0 a 1 隨機數(shù) 只有inta 5 3 后 后面幾項自動賦0 三數(shù)組 數(shù)組的初始化 合法 inta 1 2 3 4 5 inti 3 1 2 3 4 5 6 inta 5 1 2 3 chara 4 boy chara 3 b o y 不合法 inta 5 2 4 5 inti 2 1 2 3 4 5 6 inta 5 chara 4 boy 分別用三種方法 數(shù)組元素下標法 數(shù)組名地址法 指針變量法 訪問數(shù)組元素 includevoidmain inta 5 1 3 5 7 9 i p for i 0 i 5 i printf d a i 下標法 printf n for i 0 i 5 i printf d a i 地址法 printf n for p a p a 5 p printf d p 指針變量 數(shù)組的操作往往用循環(huán)結(jié)構(gòu) 數(shù)值數(shù)組 defineM10inta M for i 0 i M i 字符數(shù)組 defineM10chara M for i 0 a i 0 i 數(shù)值數(shù)組倒序 defineM10main inti j a M for i 0 i M i scanf d a i for i 0 j M i j i i 交換a i a j 字符數(shù)組倒序main inti j chara 50 gets a for i 0 j strlen a i j i i 交換a i a j 用函數(shù)實現(xiàn)倒序 數(shù)值數(shù)組voidinv intx intn defineM10main inti j a M for i 0 i M i scanf d a i inv a M for i 0 i M i printf d a i 字符數(shù)組voidinv charx main inti j chara 50 gets a inv a puts a 多一個參數(shù) 表示元素個數(shù) 可以整體輸入 輸出 必須單個輸入 輸出 數(shù)值數(shù)組voidinv intx intm inti j k j m for i 0 i j i i k x i x i x j x j k 字符數(shù)組voidinv intx inti j k j strlen x for i 0 i j i i k x i x i x j x j k main inti j s 0 a 3 3 for i 0 i 3 i for j 0 j 3 j scanf d 主對角線i j副對角線i j 2 累加 積 defineM10main inti a M s 0 for i 0 i M i scanf d defineM10main inti a M s 1 for i 0 i M i scanf d 求最大 小 值 defineM30main inti k k i a M for i 0 i M i scanf d 最小值if k a i 最大值 字符數(shù)組 charstr 50 inti for i 0 str i 0 i 構(gòu)造新的字符數(shù)組 刪除 插入 復(fù)制 連接 倒序 1 用和不用字符串函數(shù)實現(xiàn)上述功能 2 用指針實現(xiàn) 3 必須注意最后一項一定是 str i 0 或 p 0 二維字符數(shù)組 二維數(shù)組在內(nèi)存中的排列順序是 按行優(yōu)先存放 二維數(shù)組a m n 可以視為由n個一維數(shù)組a m 組成的 二維字符數(shù)組中m由其中最長的字符串決定 charstu 5 6 Tom Anne Mary Peter 其中stu 0 Tom stu 1 Anne 字符串函數(shù) 要用 include字符串拷貝函數(shù)strcpy字符串連接函數(shù)strcat字符串比較函數(shù)strcmp測字符串長度函數(shù)strlen函數(shù)strlen的值為 0 之前的全部字符個數(shù) 它與數(shù)組長度不是一個概念 chars 6 H o w 0 o k strlen s 3 字符串函數(shù)的應(yīng)用 字符串賦值字符串比較 s1 s2 strcpy s1 s2 s1 s2 strcmp s1 s2 0 s1 s2 strcmp s1 s2 0 s1 s2 strcmp s1 s2 0 一函數(shù)定義的形式 存儲類型 數(shù)據(jù)類型函數(shù)名 形式參數(shù)表 變量數(shù)據(jù)定義語句序列 可執(zhí)行語句序列 intfun intx inty intz z x y returnz 函數(shù)體 四函數(shù) 非void型intfun intx inty main inta b scanf d d 作為框架記住 void型voidfun intx inty main inta b scanf d d 填main charfun intx inty intz z x y returnz main inta b 函數(shù)實參 charc 函數(shù)返回值 scanf d d a b 實參賦值 c fun a b 調(diào)用函數(shù) printf c c 輸出結(jié)果 注意變量數(shù)據(jù)類型的對應(yīng)int dlong ldfloat fdouble lfchar c或 s 遞歸調(diào)用的概念在 語言中 一個函數(shù)直接或間接地調(diào)用自身 便構(gòu)成了函數(shù)的遞歸調(diào)用 前者為直接遞歸調(diào)用 后者稱間接遞歸調(diào)用 計算n 的函數(shù)rfact longfac intn longp if n 0 n 1 p 1 elsep n fac n 1 自己調(diào)自己 returnp voidmain printf ld fac 5 記住遞歸調(diào)用的框架 數(shù)組名作函數(shù)實參 voidfun inta intn main intarr 10 i for i 0 i 10 i scanf d main inti a 2 for i 1 i 5 i f i printf d n a f j intj staticinta 100 autok 1 k printf d d d d n a k j a k j a 10 函數(shù)調(diào)用 函數(shù)定義 函數(shù)內(nèi)定義 值不保留 運行結(jié)果 100 2 1 103110 2 2 114120 2 3 125130 2 4 136140 2 5 1472 兩個函數(shù)變量同名 互不影響 靜態(tài)變量 五指針 1 指針 某變量的地址值稱為該變量的指針 2 指針變量 指針變量是存放普通變量地址的變量 指針變量指向這個普通變量 1112 ab 地址10101012 指針變量整型變量 指針變量的定義 數(shù)據(jù)類型 指針變量名1 double pd d1 d2 pd為指向double型變量的指針 char pc c1 c2 pc為指向char型變量的指針 float pf f1 f2 pf為指向float型變量的指針 定義指針變量必須在變量名前加指針說明符 指針變量名本身不含 號 定義指針變量后 系統(tǒng)為這個指針變量也分配一個存儲單元 這個存貯單元一般都占有固定的字節(jié) 如16位計算機是2個字節(jié) 該存貯單元用于存放普通變量的地址 指針變量的初始化 char str abcdef charstr abcdef pf str floatf1 3 14 pf 指針變量的引用 floata b P a 1 23 P 結(jié)果為 1 23 1 23 1 23 1010 1 23 p p 5 與 p 5 char p 5 是一個有5個元素的數(shù)組 數(shù)組元素的數(shù)據(jù)類型是指向int型的指針型char p 5 是指向一個有5個元素的一維數(shù)組 結(jié)構(gòu)體 structdate是一個類型 可以用它定義變量structdatebirthday birthday是一個結(jié)構(gòu)體類型的變量 structdate intyear 年 intmonth 月 intday 日 year month day 結(jié)構(gòu)變量的各個成員分量在內(nèi)存中占用連續(xù)存儲區(qū)域 所占內(nèi)存大小為結(jié)構(gòu)中每個成員的占用內(nèi)存的長度之和 結(jié)構(gòu)變量today占用內(nèi)存的情況如圖所示 結(jié)構(gòu)變量占用內(nèi)存情況 結(jié)構(gòu)體變量的初始化 按照成員的順序和類型對成員初始化 structdatebirthday 1984 10 20 結(jié)構(gòu)體變量的引用 一般形式 結(jié)構(gòu)體變量名 成員名成員運算符 具有最高的優(yōu)先級 自左向右結(jié)合 printf 4d 02d 02d birthday year birthday month birthday day 指向結(jié)構(gòu)體的指針 指向結(jié)構(gòu)體的指針定義 使用與其他基本類型指針類似可以使用指向運算符 引用指針所指向的結(jié)構(gòu)體的成員指向運算符 結(jié)構(gòu)體指針 成員名具有最高的優(yōu)先級 自左向右結(jié)合若structstudentstu p stu 則stu num p num p num等效 考試 單選填空25 1 25 讀程序?qū)懡Y(jié)果25 5 5 改錯20 2 10 程序填空20 2 10 寫程序10- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 全國 計算機等級考試 二級 語言 教程 64 復(fù)習(xí)
鏈接地址:http://m.appdesigncorp.com/p-5210306.html