C語言二級(jí)教學(xué)視屏課件-51自學(xué)網(wǎng)-小沖哥_第1頁
C語言二級(jí)教學(xué)視屏課件-51自學(xué)網(wǎng)-小沖哥_第2頁
C語言二級(jí)教學(xué)視屏課件-51自學(xué)網(wǎng)-小沖哥_第3頁
C語言二級(jí)教學(xué)視屏課件-51自學(xué)網(wǎng)-小沖哥_第4頁
C語言二級(jí)教學(xué)視屏課件-51自學(xué)網(wǎng)-小沖哥_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語言二級(jí)教學(xué)視屏課件〔51自學(xué)網(wǎng)小沖哥〕第一章:設(shè)計(jì)語言的講解第一章:程序的算法與結(jié)構(gòu)設(shè)計(jì)。第二章:C程序的設(shè)計(jì)初步了解。第二章:C程序的格式的講解。第二章:C程序格式的幾個(gè)考點(diǎn)講解。2.2標(biāo)識(shí)符、常量、變量一2.2標(biāo)識(shí)符、常量、變量二2.2標(biāo)識(shí)符、常量、變量三2.2標(biāo)識(shí)符、常量、變量考點(diǎn)講解2.3整型常量2.3整型變量2.3整型數(shù)據(jù)的分類2.4實(shí)型常量2.4實(shí)型變量2.5算術(shù)表達(dá)式、運(yùn)算符優(yōu)先級(jí)及強(qiáng)制類型轉(zhuǎn)換2.6賦值表達(dá)式2.7復(fù)合表達(dá)式與賦值中的強(qiáng)制類型轉(zhuǎn)換2.7++和——的講解2.7逗號(hào)表達(dá)式與實(shí)例講解課后習(xí)題的講解課后習(xí)題的講解課后習(xí)題的講解第二章的總體回憶3.2輸出語句的講解一3.2輸出語句的講解二3.2輸出語句的講解三3.2輸出語句考點(diǎn)例題講解。3.3輸入語句的講解一3.3輸入語句的講解二3.3輸入語句考點(diǎn)例題講解。3.4復(fù)合語句與空語句3.5程序設(shè)計(jì)課后習(xí)題講解課后習(xí)題講解課后習(xí)題講解第三章總體回憶4.1關(guān)系運(yùn)算4.1邏輯運(yùn)算4.2IF語句4.2IF語句4.2IF語句的嵌套4.2IF語句的嵌套4.2IF語句的幾個(gè)考試?yán)}4.3條件表達(dá)式4.4switch語句4.4switch語句與BREAK4.4switch語句的幾個(gè)考試?yán)}課后習(xí)題課后習(xí)題課后習(xí)題第四章的總體回憶5.1while語句5.1while的幾個(gè)習(xí)題5.2dowhile5.3FOR語句5.3FOR語句5.4for的嵌套5.4FOR的嵌套5.4素?cái)?shù)的判定FOR語句的實(shí)例FOR語句的實(shí)例FOR語句的實(shí)例5.5break與continue5.5break與continue5.6程序的舉例例年考題講解例年考題講解〔上機(jī)題〕例年考題講解〔上機(jī)題〕課后習(xí)題課后習(xí)題課后習(xí)題6.1字符常量6.1字符串常量與字符變量6.3字符的輸入與輸出6.3字符與其它數(shù)據(jù)類型混合的輸入與輸出6.4程序舉例課后習(xí)題講解課后習(xí)題講解課后習(xí)題講解課后習(xí)題講解第六章的總體回憶7.1庫函數(shù)7.2函數(shù)的應(yīng)用與說明7.2函數(shù)的定義與使用7.2return的應(yīng)用7.3函數(shù)的調(diào)用7.3函數(shù)的調(diào)用7.4函數(shù)的說明與調(diào)用函數(shù)的數(shù)據(jù)傳遞7.6程序舉例7.6程序舉例例年考題講解例年考題講解〔上機(jī)〕例年考題講解〔上機(jī)〕課后習(xí)題課后習(xí)題課后習(xí)題第七章總體回憶8.1變量的地址與指針8.2指針變量的定義8.2指針變量的定義8.3給指針變量賦值8.3給指針變量賦值8.4指針變量的操作8.4指針變量的操作8.4指針變量的表示8.4指針變量所指向的數(shù)據(jù)的增減8.4指針的移動(dòng)8.4指針的移動(dòng)8.5指針在函數(shù)調(diào)用中的應(yīng)用8.5指針在函數(shù)調(diào)用中的應(yīng)用例年考題講解例年考題講解例年考題講解〔上機(jī)〕例年考題講解〔上機(jī)〕課后習(xí)題分析課后習(xí)題分析課后習(xí)題分析第八章總體回憶第八章總體回憶9.1數(shù)組的初步了解9.1一維數(shù)組的定義9.1一維數(shù)組的引用與始化9.1一維數(shù)組的使用一維數(shù)組的實(shí)例9.2一維數(shù)組和指針9.2一維數(shù)組和指針9.2通過指針引用一維數(shù)組\9.3一維數(shù)組在函數(shù)調(diào)用中的應(yīng)用9.3一維數(shù)組在函數(shù)調(diào)用中的應(yīng)用9.3一維數(shù)組在函數(shù)調(diào)用中的應(yīng)用9.4應(yīng)用舉例9.4應(yīng)用舉例9.4應(yīng)用舉例9.5二維數(shù)組的定義9.5二維數(shù)組的引用9.5二維數(shù)組的初始化9.5二維數(shù)組通過FOR語句初始化9.6二維數(shù)組元素的地址表示9.6二維數(shù)組元素的地址表示9.6通過指針來引用數(shù)組元素9.6指針數(shù)組與數(shù)組指針9.7二維數(shù)組在函數(shù)調(diào)用中的應(yīng)用9.7二維數(shù)組在函數(shù)調(diào)用中的應(yīng)用9.7二維數(shù)組在函數(shù)調(diào)用中的應(yīng)用9.8應(yīng)用舉例9.8應(yīng)用舉例9.8應(yīng)用舉例例年考題講解例年考題講解例年考題講解(上機(jī))例年考題講解(上機(jī))例年考題講解(上機(jī))例年考題講解(上機(jī))課后習(xí)題課后習(xí)題課后習(xí)題第九章總體回憶第九章總體回憶10.1字符與一維數(shù)組10.1字符串與一維數(shù)組10.2指針指向一個(gè)字符串10.3字符串的輸入和輸出10.4字符串?dāng)?shù)組10.5幾個(gè)用于字符處理的函數(shù)與程序舉例例年考題講解例年考題講解(上機(jī))課后習(xí)題課后習(xí)題課后習(xí)題第十章總體回憶11.1對(duì)函數(shù)的進(jìn)一步討論課后習(xí)題的講解課后習(xí)題的講解12.1局部變量與全局變量12.2靜態(tài)變量課后習(xí)題課后習(xí)題13.1宏例年考題14.1.結(jié)構(gòu)的初步認(rèn)識(shí)14.2結(jié)構(gòu)體的定義14.2結(jié)構(gòu)體的初始14.2結(jié)構(gòu)體成員的引用14.3共用體與結(jié)構(gòu)體的區(qū)分例年考題講解15章位運(yùn)算16章文章上機(jī)題思路分析上機(jī)題思路分析上機(jī)題思路分析程序設(shè)計(jì)根本概念1.1程序和程序設(shè)計(jì)程序:連續(xù)執(zhí)行的一條條指令的集合稱為“程序〞。對(duì)于計(jì)算機(jī)來說,它不能識(shí)別由高級(jí)語言編寫的程序,它只能接受和處理由0和1的代碼構(gòu)成的二進(jìn)制指令或數(shù)據(jù)。由于這種形式的指令是面向機(jī)器的,因此也被稱為“機(jī)器語言〞。所以所有由高級(jí)語言編寫的程序都要經(jīng)過編譯,編譯成二進(jìn)制代碼。這種具有翻譯功能的軟件稱為編譯程序。語言有很多種,我們現(xiàn)在要談?wù)摰木褪荂語言。為什么計(jì)算時(shí)機(jī)能進(jìn)行各種各樣的操作,就是由不同的指令來實(shí)現(xiàn)的。而不是只有C語言才可以實(shí)現(xiàn)這樣的功能。還有其它很多語言。但是我們一般說C語言是其它語言的母語。會(huì)了C語言其它的語言在學(xué)習(xí)的過程就會(huì)感到輕松一些。程序設(shè)計(jì)1.確定數(shù)據(jù)結(jié)構(gòu)2.確定算法3.編碼4.在計(jì)算機(jī)上調(diào)試程序5.整理并寫出文檔資料1.2算法定義:是指為了解決某個(gè)特定的問題而采取確實(shí)定且有限的步驟。有窮性確定性可行性有零個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出1.3結(jié)構(gòu)化程序設(shè)計(jì)和模塊化結(jié)構(gòu)結(jié)構(gòu)化程序由三種根本結(jié)構(gòu)組成順序結(jié)構(gòu)語句語句1語句2選擇結(jié)構(gòu)判斷表達(dá)式子判斷表達(dá)式子不滿足語句1語句2循環(huán)結(jié)構(gòu)判斷表達(dá)式判斷表達(dá)式不滿足滿足循環(huán)體循環(huán)體判斷表達(dá)式循環(huán)體判斷表達(dá)式滿足不滿足12〕計(jì)算機(jī)能直接執(zhí)行的程序是〔B〕。A〕源程序B〕目標(biāo)程序C〕匯編程序D〕可執(zhí)行程序13〕以下表達(dá)中正確的選項(xiàng)是(D)A〕程序設(shè)計(jì)的任務(wù)就是編寫程序代碼并上機(jī)調(diào)試B〕程序設(shè)計(jì)的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)C〕程序設(shè)計(jì)的任務(wù)就是確定所用算法D〕以上三種說法都不完整:C程序設(shè)計(jì)的初步知識(shí)2.1C語言程序的構(gòu)成和格式#include<stdio.h>Main(){doublea,b,area;a=1.2,b=3.6;/*將矩形的兩條邊長(zhǎng)分別賦給a和b變量*/area=a*b;printf(“a=%f,b=%f,area=%f\n〞,a,b,area);/*輸出矩形的兩條邊長(zhǎng)和面積*/}#include<stdio.h>:每當(dāng)寫一個(gè)程序時(shí),第一條語句永遠(yuǎn)是這個(gè)語句,因?yàn)橐粋€(gè)程序可以沒有輸入但必須要有輸出,而這個(gè)語句就是控制輸入輸出的。所以任何一個(gè)程序都必須由這個(gè)語句開始。main():是一個(gè)程序的主函數(shù)。一個(gè)程序是由多個(gè)函數(shù)組成的,而任何一個(gè)程序都要有一個(gè)主函數(shù),有且只有一個(gè)。任何程序都是由主函數(shù)開始執(zhí)行的。{}:它們兩個(gè)必須要成對(duì)出現(xiàn),它們中的語句是主函數(shù)體。包括定義局部和執(zhí)行局部。它們中的語句,每一條必須由;結(jié)束。;是C語句的一個(gè)組成局部而不是一個(gè)結(jié)束標(biāo)識(shí)。/**/:注釋符一定要成對(duì)出現(xiàn),不允許嵌套。兩個(gè)符號(hào)間的語句不被執(zhí)行。例年真題:#include<stdio.h>main(){Inta;A=5;/*給A變量賦值5A+=3;再賦值后再加3*/Printf(“%d〞,a);}〔11〕以下表達(dá)中正確的選項(xiàng)是〔C〕。A〕C程序的根本組成單位是語句B〕C程序中的每一行只能寫一條語句二級(jí)C語言程序設(shè)計(jì)試卷〕C〕簡(jiǎn)單C語句必須以分號(hào)結(jié)束D〕C語句必須在一行內(nèi)寫完〔11〕以下表達(dá)中正確的選項(xiàng)是(C)

A)C程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面

B)C程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一個(gè)語句

C)C程序書寫格式自由,一個(gè)語句可以寫在多行上

D)用C語言編寫的程序只能放在一個(gè)程序文件中第二課:C語言的根底知識(shí)2.2標(biāo)識(shí)符,常量和變量標(biāo)識(shí)符:定義:由字母,數(shù)字和下劃線組成,并且第一個(gè)字符必須為字母或下劃線的。這樣的組成就是標(biāo)識(shí)符。以下合法的是:elsewhat#$12334aa34a_ba-bIfa=3A=4注意:在C中大寫字母與小字字母被認(rèn)為是兩個(gè)不同的字符。分類:關(guān)鍵字:在C中已經(jīng)定義好了的,不能用作它用的。如ifdoubleint等等。預(yù)定義標(biāo)識(shí)符:如printfscanf用戶標(biāo)識(shí)符:用戶根據(jù)自己的需求來定義的?!?2〕以下選項(xiàng)中,能用作用戶標(biāo)識(shí)符的是(C)A〕voidB〕8_8C〕_0_D〕unsigned〔11〕以下選項(xiàng)中合法的標(biāo)識(shí)符是(C)A〕1-1B〕1—1C〕-11D〕1〔12〕以下選項(xiàng)中不合法的標(biāo)識(shí)符是(C)

A)printB)FORC)&aD)_00常量:定義:是指在程序的執(zhí)行的過程中,其值不會(huì)被改變的量。分類:整型常量:沒有小數(shù)的常量如:391234等等都是。實(shí)型常量:有小數(shù)點(diǎn)的常量如:3.93.03.字符常量:由單個(gè)字符組成的量如:’a’‘b’‘3’字符串常量:至少由一個(gè)字符組成的量如:“a〞“abc〞“beijing〞符號(hào)常量:符號(hào)常量的值到底是多少,這是由在來定義符號(hào)常量時(shí)來決定的?2*pi〔13〕以下選項(xiàng)中,能用作數(shù)據(jù)常量的是(D)

A〕o115B〕0118C〕1.5e1.5D〕115L〔13〕以下選項(xiàng)中不能作為C語言合法常量的是〔A〕。A〕'cd'B〕0.1e+6C〕"\a"D〕'\011'(13)以下選項(xiàng)中不屬于字符常量的是(B)

A)'C'B)"C"C)'\xCC0'D)'\072'2.3整型常量與實(shí)型常量整型常量的幾個(gè)表示方法十進(jìn)制數(shù):八進(jìn)制數(shù):以0開頭的數(shù)字,由0-7組成。以下合法的八進(jìn)制數(shù)是A,0B,028C,-077D,01.0十六進(jìn)制數(shù):以0X開頭,由0-9和A-F組成。A,oxffB,0xabcC,0x11D,0x19實(shí)型常量123.4小數(shù)形式:123.4指數(shù)形式:1.234e21.字母e和E之前必須要有數(shù)字2.字母e和E之后的數(shù)字必須是整數(shù)3.字母e’和數(shù)字之間不能有空格。A,2.607E-10.8103E2-77.77456E-2變量:1.定義:在程序的運(yùn)行過程中其值可以被改變的量,就叫變量。2.原那么:變量必須先定義后使用。變量定義的過程就是給變量開辟存儲(chǔ)單元的過程。3.分類:整型變量:用關(guān)鍵字int來表示.shortint短整型longint長(zhǎng)整型在內(nèi)存中占4個(gè)字節(jié)如123Lunsigned無符號(hào)如有-200U這就是錯(cuò)的。變量的定義:inta這是定義了一個(gè)整型變量a.實(shí)型變量:用關(guān)鍵字double或float來表示。float單精度在內(nèi)存中占4個(gè)字節(jié)double雙精度在內(nèi)存中占8個(gè)字節(jié)。算術(shù)表達(dá)式一、根本的算術(shù)運(yùn)算符+-*/%這些是雙目運(yùn)算符〔就是指操作對(duì)象有兩個(gè)〕注意:除%外,其它的運(yùn)算符的運(yùn)算對(duì)象可以是整型也可以是實(shí)型。%的操作對(duì)象只能是整型。如10%3=110.7%310%4.5x%3=0+-也可以做為單目運(yùn)算。-5.4+4.9說明:1.如果雙目運(yùn)算符兩邊運(yùn)算數(shù)的類型一致,那么所得結(jié)果的類型與運(yùn)算數(shù)的類型一致。如1.0/2.0=0.51/2=02.如果雙目運(yùn)算符兩邊運(yùn)算數(shù)的類型不一致,那么系統(tǒng)會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,使兩邊的類型一致后,再進(jìn)行運(yùn)算。1.0/2=0.53.所有的單精度數(shù)據(jù),在運(yùn)算過程中都以雙精度進(jìn)行運(yùn)算。二、優(yōu)先級(jí)〔〕+-*/%+-由高——————低如(5+1)/2=???強(qiáng)制類型轉(zhuǎn)換表達(dá)式格式:〔類型名〕〔表達(dá)式〕例:〔int〕3.234=3(double)10%3=?〔14〕表達(dá)式:4-(9)%2的值是(B)A〕0B〕3C〕4D〕5(14)設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是(C)A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.02.6賦值表達(dá)式格式:變量名=表達(dá)式注:1.不可以顛倒〔左邊必須是變量名,右邊必須是C語言中合法的表達(dá)式〕2.功能就是先求出右邊表達(dá)式的值,然后把此值賦值給賦值號(hào)左邊的變量。確切的說是把數(shù)據(jù)存入以該變量為標(biāo)識(shí)的存儲(chǔ)單元中去。a=4,a=73.結(jié)合性的優(yōu)先級(jí)僅高于逗號(hào)表達(dá)式。順序是自右向左的。如a=2+7/34."="是一個(gè)賦值號(hào),不是一個(gè)等號(hào)。5.x=y。變量的值也是可以傳遞和賦值的。它的意思就是將變量Y中的值賦值到X中去。同樣N=N+1也成立6.賦值運(yùn)算符的左側(cè)只能是變量,不能是常量或表達(dá)式a+b=c這就是違法的7。賦值號(hào)的右邊也可以是一個(gè)賦值表達(dá)式。如a=b=7+1;補(bǔ)充;表達(dá)式與語句的區(qū)別,表達(dá)式后面加一個(gè)分號(hào)就是語句。復(fù)合賦值表達(dá)式例:a+=3------a=a+3同理可得a*=3/=-=a+=a-=a+aa的初值是9a+=a-=18a+=(a=a-18)a+=(a=-9)a+=a-18〔15〕假設(shè)有定義語句:intx=10;,那么表達(dá)式x-=x+x的值為(B)A〕-20B〕-10C〕0D〕10〔14〕設(shè)有定義:intx=2;,以下表達(dá)式中,值不為6的是(D)A〕x*=x+1x=x*(x+1)B〕x++,2*xC〕x*=〔1+x〕D〕2*x,x+=2(17)假設(shè)變量均已正確定義并賦值,以下合法的C語言賦值語句是(A)A)x=y==5;B)x=n%2.5;C)x+n=ID)x=5=4+1;2.7++和——的講解++:自身加1--:自身減1如i=3i++_______I=i+1i=4單目3++++II++當(dāng)++在前,先自身加1,然后再干別人讓干的事情。當(dāng)++在后,先別人讓干的事情然后再干自身加1。inti=3;inta;a=i++;a=3a=++I;a=4第三課:輸入和輸出語句3.2輸出語句的講解一、printf函數(shù)的一般調(diào)用形式格式:printf(格式控制,輸出項(xiàng)1,輸出項(xiàng)2,.......);在printf函數(shù)的最后面寫上;號(hào)就是輸出語句。1,給輸出項(xiàng)白提供輸出格式說明格式說明符:作用:就是使數(shù)據(jù)按格式說明符的要求進(jìn)行輸出。組成:由%號(hào)和緊跟在其后的格式描述符組成。int--------%dfloat或double---%f或e%char--------%c2.提供原樣輸出的文字或字符在“〞中除了格式說明符之外的內(nèi)容要全部原樣輸出。各個(gè)輸出項(xiàng)之間要用逗號(hào)隔開。輸出項(xiàng)可以是任意合法的常量,變量或表達(dá)式。printf中常用的格式說明在格式說明符中,每一個(gè)格式說明符都必須以%號(hào)開頭由相應(yīng)的類型標(biāo)識(shí)字母結(jié)束。但在他們之間可以有其它的一個(gè)內(nèi)容:%c:輸出一個(gè)字符%d:輸出一個(gè)十進(jìn)制的數(shù)據(jù)%o:以八進(jìn)制格式輸出。%X:以十六進(jìn)制輸出%U:無符號(hào)十進(jìn)制輸出%f:以帶小數(shù)點(diǎn)的數(shù)字輸出%e:以指數(shù)形式輸出%s:輸出一個(gè)字符串。%%:輸出一個(gè)%號(hào)%4d:輸出的數(shù)據(jù)長(zhǎng)度是4個(gè)長(zhǎng)度,當(dāng)原來的長(zhǎng)度大于4個(gè)時(shí)會(huì)自動(dòng)突破。小于4個(gè)時(shí)會(huì)填充空格。%x.yf:x代表數(shù)制的寬度〔包括小數(shù)點(diǎn)〕。Y代表小數(shù)點(diǎn)后面的小數(shù)位數(shù)??记绊氈?.輸出比擬自由一些,輸出有的各個(gè)數(shù)之到底是什么,取決于格式說明符之間的內(nèi)容。2.格式說明符要與輸出項(xiàng)一一對(duì)應(yīng)。3.輸出語句中還可以有\(zhòng)n\r\t\a4.盡量不要在輸出語句中改變輸出變量的值。5.輸出的數(shù)據(jù)中如果存在變量,一定要定義過的。習(xí)題講解〔13〕閱讀以下程序#includemain(){intcase;floatprintF;printf(“請(qǐng)輸入2個(gè)數(shù):〞);scanf(“%d%f〞,&case,&pjrintF);printf(“%d%f\n〞,case,printF);}該程序編譯時(shí)產(chǎn)生錯(cuò)誤,其出錯(cuò)原因是〔A〕A〕定義語句出錯(cuò),case是關(guān)鍵字,不能用作用戶自定義標(biāo)識(shí)符B〕定義語句出錯(cuò),printF不能用作用戶自定義標(biāo)識(shí)符C〕定義語句無錯(cuò),scanf不能作為輸入函數(shù)使用D〕定義語句無錯(cuò),printf不能輸出case的值〔16〕有以下程序#includemain(){inta=1,b=0;printf(“%d,〞,b=a+b);printf(“%d\n〞,a=2*b);}程序運(yùn)行后的輸出結(jié)果是〔D〕A〕0,0B〕1,0C〕3,2D〕1,2〔15〕程序段:intx=12;doubley=3.141593;printf〔“%d%8.6f〞,x,y〕;的輸出結(jié)果是〔A〕A〕123.141593B〕123.141593C〕12,3.141593D〕123.141593#include<stdio.h>main(){doublea=123.456;printf("%6.2f",a);}輸入語句格式:scanf(格式控制,輸入項(xiàng)1,輸入項(xiàng)2,...);例如:想通過鍵盤輸入3個(gè)數(shù)分別給變量a,b,c。并且他們分別為整型,浮點(diǎn)型,雙精度型。輸入語句為scanf("%d%f%lf",&k,&a,&y);說明:1.格式說明符與輸出語句一樣。2.在格式串中,必須含有與輸入項(xiàng)一一對(duì)應(yīng)的格式轉(zhuǎn)換說明符。3.在VC6.0的環(huán)境下,要收輸入的DOUBLE型數(shù)據(jù)的格式說明符一定要用%lf,否那么數(shù)據(jù)不能正確的輸入4.由于輸入是一個(gè)字符流,所以當(dāng)輸入的數(shù)據(jù)少于輸入項(xiàng)時(shí),程序會(huì)等待用戶輸入,直到滿足要求。當(dāng)輸入的數(shù)據(jù)多于輸入項(xiàng)時(shí),多余的數(shù)據(jù)會(huì)自動(dòng)作廢。例題:intx;x=11/3;inty=5;printf("%%d,%%%d\n",x,y);結(jié)果是:%d,%3[3.5]假設(shè)變量已正確說明為int類型,要給a、b、c輸入數(shù)據(jù),以下正確的輸入語句是(D)A)read(a,b,c);B)scanf(“%d%d%d〞,a,b,c);C)scanf(“%D%D%D〞,&a,%b,%c);D)scanf(“%d%d%d〞,&a,&b,&c);[3.6]假設(shè)變量已正確說明為float類型,要通過以下賦值語句給a賦予10、b賦予22、c賦予33,以下不正確的輸入形式是(A)A)10B)10.0,22.0,33.0C)10.0D)10222222.033.03333scanf(“%f%f%f〞,&a,&b,&c);復(fù)合語句:多個(gè)語句被{}括起來,當(dāng)成一條語句來執(zhí)行??照Z句:最后的表示只有一個(gè);程序舉例:1。編寫一個(gè)程序,從鍵盤上輸入兩個(gè)數(shù)字,讓后讓他們互換一下。#include<stdio.h>main(){inta,b;printf("請(qǐng)輸入兩個(gè)數(shù)字:");scanf("%2d%3d",&a,&b);printf("qian:%d%d",a,b);intc;c=a,a=b,b=c;printf("后:%d%d",a,b);}2。編寫程序,對(duì)一個(gè)double型數(shù)據(jù)進(jìn)行四舍五入運(yùn)算。要求保存兩位有效小樹。123.4567123'4567*100=12345.6712345.67+0.5=12346.17(int)(12346.17)=1234612346/100=123.463。編寫程序,使從鍵盤中輸入的三位數(shù)倒著輸出。選擇題[3.1]假設(shè)a、b、c、d、都是int類型變量且初值為0,以下選項(xiàng)中不正確的賦值語句是(C)A)a=b=c=d=100;B)d++;C)c+b;D)d=(c=22)-(b++);[3.2]以下選項(xiàng)中不是C語句的是(C)A){inti;i++;printf(“%d\n〞,i);}B);C)a=5,c=10D){;}[3.3]以下合法的C語言賦值語句是(D)A)a=b=58B)k=int(a+b);C)a=58,b=58D)--i;[3.4]以下程序的輸出結(jié)果是(C)A)0B)1C)3D)main(){intx=10,y=3;printf(“%d\n〞,y=x/y);}[3.5]假設(shè)變量已正確說明為int類型,要給a、b、c輸入數(shù)據(jù),以下正確的輸入語句是(D)A)read(a,b,c);B)scanf(“%d%d%d〞,a,b,c);C)scanf(“%D%D%D〞,&a,%b,%c);D)scanf(“%d%d%d〞,&a,&b,&c);[3.6]假設(shè)變量已正確說明為float類型,要通過以下賦值語句給a賦予10、b賦予22、c賦予33,以下不正確的輸入形式是〔B〕A)10B)10.0,22.0,33.0C2222.033.03333scanf(“%f%f%f〞,&a,&b,&c);[3.7]假設(shè)變量已正確定義,要將a和b中的數(shù)進(jìn)行交換,下面不正確的語句組是(C)A)a=a+b,b=a-b,a=a-b;B)t=a,a=b,b=t;C)a=t;t=b;b=a;D)t=b;b=a;a=t;[3.8]假設(shè)變量已正確定義,以下程序段的輸出結(jié)果是(D)A)輸出格式說明與輸出項(xiàng)不區(qū)配,輸出無定值B)5.17C)5.168D)5.169X=5.16894;Printf(“%f\n〞,(int)(x*1000+0.5)/(float)1000);[3.9]假設(shè)有以下程序段,c3中的值是(A)A)0B)1/2C)0.5D)1intc1=1,c2=2,c3;c3=c1/c2;[3.10]假設(shè)有以下程序段,其輸出結(jié)果是(B)A)3,0,-10B)0,0,5Cinta=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(“%d,%d,%d\n〞,a,b,c);填空題[3.21]假設(shè)有以下定義,請(qǐng)寫出以下程序段中輸出語句執(zhí)行后的輸出結(jié)果?!?〕-200,2500〔2〕i=-200,j=500(3)i=-200回車j=2500inti=-200,j=2500;printf(“(1)%d%d〞,i,j);printf(“(2)i=%d,j=%d\n〞,i,j);printf(“(3)i=%d\nj=%d\n〞,i,j);[3.22]變量i、j、k已定義為int類型并有初值0,用以下語句進(jìn)行輸入時(shí)scanf(“%d〞,&I);scanf(“%d〞,&j);scanf(“%d〞,&k);當(dāng)執(zhí)行第一個(gè)輸入語句,從鍵盤輸入:12.3<CR><CR>表示Enter鍵那么變量i、j、k的值分別是____12____、____0___、__0____。[3.23]復(fù)合語句在語法上被認(rèn)為是一條語名。空語句的形式是;[3.24]C語句的最后用;結(jié)束。[3.25]以下程序段,要求通過scanf語句給變量賦值,然后輸出變量的值。寫出運(yùn)行時(shí)給k輸入100,給a輸入25.81,給x輸入1.89234時(shí)的三種可能的輸入形式_____、_____、_____。intk;floata;doublex;scanf(“%d%f%lf〞,&k,&a,&x);pirntf(“k=%d,a=%f,x=%f\n〞,k,a,x);編程題和改錯(cuò)題[3.29]以下程序多處有錯(cuò)。要按下面指定的形式輸入數(shù)據(jù)和輸出數(shù)據(jù)時(shí),請(qǐng)對(duì)該程序做相應(yīng)的修改。main{doublea,b,c,s,v;printf(inputa,b,c:\n);scanf(“%d%d%d〞,a,b,c);s=a*b;/*計(jì)算長(zhǎng)方形面積*/v=a*b*c;/*計(jì)算長(zhǎng)方體體積*/printf(“%d%d%d〞,a,b,c);printf(“s=%f\n〞,s,〞v=%d\n〞,v);}當(dāng)程序執(zhí)行時(shí),屏幕的顯示和要求輸入形式如下:inputa,b,c:2.02.03.0此處的2.02.03.0是用戶輸入的數(shù)據(jù)a=2.000000,b=2.000000,c=3.000000此處是要求的輸出形式s=4.000000,v=12.000000[3.30]編寫程序,把560分鐘換算成用小時(shí)和分鐘表示,然后進(jìn)行輸出。[3.31]編寫程序,輸入兩個(gè)整數(shù):1500和350,求出它們的商數(shù)和余數(shù)并進(jìn)行輸出。[3.32]編寫程序,讀入三個(gè)雙精度數(shù),求它們的平均值并保存此平均值小數(shù)后一位數(shù),對(duì)小數(shù)點(diǎn)后第二位數(shù)進(jìn)行四舍五入,最后輸出結(jié)果。[3.33]編寫程序,讀入三個(gè)整數(shù)給a、b、c,然后交換它們中的數(shù),把a(bǔ)中原來的值給b,把b中原來的值給c,把c中原來的值給a。第四課:C語言的程序結(jié)構(gòu)4-1節(jié)、關(guān)系運(yùn)算與邏輯運(yùn)算一、簡(jiǎn)介關(guān)系表達(dá)式與邏輯表達(dá)式的運(yùn)算結(jié)果都會(huì)得到一個(gè)邏輯值。就是“真〞、“假〞在C語言中0表示“假〞,非0〔無論是負(fù)數(shù)還是正數(shù)都是真,更多時(shí)候用1來代替〕表示“真〞。二、幾個(gè)簡(jiǎn)單的關(guān)系運(yùn)算符<<=>>===!=注意:1,由兩個(gè)字符組成的運(yùn)算符,中間不能有空格2,它們都是雙目運(yùn)算符,具有自左至右的結(jié)合性。3,上面的6個(gè)運(yùn)算符中,前4個(gè)的優(yōu)先級(jí)要比后2個(gè)的優(yōu)先級(jí)要高。先計(jì)算,后判斷,最后進(jìn)行賦值運(yùn)算。三、幾個(gè)簡(jiǎn)單的邏輯運(yùn)算符&&與一假那么假|(zhì)|或一真那么真!非非假那么真,非真那么假1&&2=10&&6=0inta=4,b=7;a&&7=1intx=0,y=7;x++&&y++?x=1y=7++x&&y++?x=1y=8同樣放在||中也是一樣的。4-2、4-3節(jié)、if語句一、定義:只有兩種結(jié)果。要么執(zhí)行這條語句,要么執(zhí)行那條語句。if(條件表達(dá)式)上述條件成立執(zhí)行的句子else上述條件不成立執(zhí)行的句子如:if(成績(jī)>60)顯示及格else顯示不及格二、分類1.不含有else的語句if(表達(dá)式)語句if(a<b){t=a;a=b;b=t;}2.含有else語句if(條件)語句1;else{語句2;語句3;}注:1.沒有分號(hào)2.控制的是與if或者else緊臨的“一條〞語句。if(a<b)printf("%d",b);elseprintf("%d",a);if(a%3==0)yeselseno4-4節(jié)、結(jié)合一個(gè)例題來給大家分析if的嵌套輸入一個(gè)學(xué)生的成績(jī),評(píng)定他的等級(jí)。每十分一個(gè)等級(jí)if()elseif()elseif()`elseif(a>=90)printf("a");elseif(a>=80)printf("b");elseif(a>=70)printf("c");elseif(a>=60)printf("d");elseprintf("e");4-5、節(jié)7〕設(shè)有定義:inta=1,b=2,c=3;,以下語句中執(zhí)行效果與其它三個(gè)不同的是〔C〕A〕if(a>b)c=a,a=b,b=c;B〕if(a>b){c=a,a=b,b=c;}C〕if(a>b)c=a;a=b;b=c;D〕if(a>b){c=a;a=b;b=c;}〔18〕有以下程序應(yīng)該選〔B〕#include<stdio.h>main〔〕{intx;scanf〔“%d〞,&x〕;if〔x<=3;elseif〔x!=10〕printf〔“%d\n〞,x〕;}程序運(yùn)行時(shí),輸入的值在哪個(gè)范圍才會(huì)有輸出結(jié)果A〕不等于10的整數(shù)B〕大于3且不等于10的整數(shù)C〕大于3或等于10的整數(shù)D〕小于3的整數(shù)〔19〕有以下程序〔C〕#include<stdio.h>Main〔〕{inta=1,b=2,c=3,d=0;if〔a==1&&b++==2〕if〔b!=2||c--!=3〕printf〔“%d,%d,%d\n〞,a,b,c〕;elseprintf〔“%d,%d,%d\n〞,a,b,c〕;elseprintf〔“%d,%d,%d\n〞,a,b,c〕;}程序運(yùn)行后的輸出結(jié)果是A〕1,2,3B〕1,3,2C〕1,3,3D〕3,2,14-6節(jié)、條件表達(dá)式是C語言中唯一的一個(gè)三目運(yùn)算。格式:表達(dá)式1?表達(dá)式2:表達(dá)式3當(dāng)1成立〔非零時(shí)〕時(shí),表達(dá)式的值就是2的值,否那么就是3的值。如:1.1<2?4:52.printf("%d",x<0?(-1)*++x:x++);(假定X的值為-3)3.++X>3?(x<3?a:b):b4-7節(jié)、switch語句〔一〕switch(表達(dá)式){case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2case常量表達(dá)式3:語句3case常量表達(dá)式4:語句4case常量表達(dá)式5:語句5。。。case常量表達(dá)式N:語句N}4-8節(jié)、switch語句〔二〕switch(A/10){case10:printf("A");case9:printf("A");case8;printf("b");case7;printf("c");case6;printf("d");default:printf("e");}4-9節(jié)-------4-15節(jié)、選擇題[4.1]以下運(yùn)算符中優(yōu)先級(jí)最高的運(yùn)算符是〔A〕A〕!B〕%C)-=D)&&[4.2]以下運(yùn)算符中優(yōu)先級(jí)最低的運(yùn)算符是〔A〕A)||B)!=C)<=D)+[4.3]為表示關(guān)系x>=y>=z,應(yīng)使用的C語言表達(dá)式是〔A〕A)(x>=y)&&(y>=z)B)(x>=y)AND(y>=z)C)(x>=y>=z)D)(x>=y)&(y>=z)[4.4]設(shè)a、b和c都是int型變量,且a=3,b=4,c=5;那么以下的表達(dá)式中,值為0的表達(dá)式是〔D〕A)a&&bB)a<=bC)a||b+c&&b-cD)!((a<b)&&!c||1)[4.5]以下程序的輸出結(jié)果是:〔C〕A)0B)1C)2D)3main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec+=1;printf(“%d\n〞,c);}[4.6]以下程序的輸出結(jié)果是:〔D〕A)1B)2C)3D)4main(){intw=4,x=3,y=2,z=1;printf(“%d\n〞,(w<x?w:z<y?z:x));}[4.7]假設(shè)執(zhí)行以下程序時(shí)從鍵盤上輸入3和4,那么輸出結(jié)果是〔B〕A)14B)16C)18D)20main(){inta,b,s;scanf(“%d%d〞,&a,&b);s=a;if(a<b)s=b;s*=s;printf(“%d\n〞,s);}[4.9]運(yùn)行以下程序后,輸出〔D〕A)####B)&&&&C)####&&&&D)有語法錯(cuò)誤不能通過編譯main(){intk=-3;if(k<=0)printf(“****\n〞);elseprintf(“&&&&\n〞);}[4.10]假設(shè)a和b均是正整數(shù)型變量,以下正確的switch語句是〔A〕A)switch(pow(a,2)+pow(b,2))(注:調(diào)用求冪的數(shù)學(xué)函數(shù)){case1:case3:y=a+b;break;case0:case5:y=a-b;}B)switch(a*a+b*b);{case3:case1:y=a+b;break;case0:y=b-a;break;}C)switch()a{default:x=a+b;case10:y=a-b;break;case11:y=a*d;break;}D)switch(a+b){case10:x=a+b;break;case11:y=a-b;break;}二、填空題[4.11]C語言中用非0表示邏輯值“真〞,用0表示邏輯值“假〞。[4.12]C語言中的關(guān)系運(yùn)算符按優(yōu)先級(jí)別是〔!=<=〕_!=、<=[4.13]C語言中的邏輯運(yùn)算符按優(yōu)先級(jí)別是(||&&!)[4.14]C語言中的關(guān)系運(yùn)算符和邏輯運(yùn)算符的優(yōu)先級(jí)別是(==&&)[4.15]C語言中邏輯運(yùn)算符!的優(yōu)先級(jí)高于算術(shù)運(yùn)算符。[4.16]將以下數(shù)學(xué)式改寫成C語言的關(guān)系表達(dá)式或邏輯表達(dá)式A)a=b||a<c和B)x>4||x<-4A)a=b或a<cB)|x|>4[4.17]請(qǐng)寫出以下程序的輸出結(jié)果1。main(){inta=100;if(a>100)printf(“%d\n〞,a>100);elseprintf(“%d\n〞,a<=100);}[4.18]請(qǐng)寫出與以下表達(dá)式等價(jià)的表達(dá)式A)X<=0B)1A)!(x>0)B)!0[4.19]當(dāng)a=1,b=2,c=3時(shí),以下if語句執(zhí)行后,a、b、c中的值分別為3、2、2if(a>c)b=a;a=c;c=b;[4.20]假設(shè)變量巳正確定義,以下語句段的輸出結(jié)果是*#x=0,y=2,z=3;switch(x){case0:switch(y==2){case1:printf(“*〞);break;case2:printf(“%〞);break;}case1:switch(z){case1:printf(“$〞);case2:printf(“*〞);break;default:printf(“#〞);}}三、編程題[4.21]請(qǐng)將以下語句改寫成switch語句。if(a<30)m=1;elseif(a<40)m=2;elseif(a<50)m=3;elseif(a<60)m=4;elsem=5;[4.22]編寫程序,輸入一位學(xué)生的生日〔年:y0、月:m0、日:d0〕;并輸入當(dāng)前的日期〔年:y1、月:m1、日:d1〕;輸出該生的實(shí)足年齡。[4.23]編寫程序,輸入一個(gè)整數(shù),打印出它是奇數(shù)還是偶數(shù)。[4.24]編寫程序,輸入a、b、c三個(gè)數(shù),打印出最大者。[4.25]有一函數(shù):x(-5<x<0)y=x-1(x=0)x+1(0<x<10)編寫一程序,要求輸入x的值,輸出y的值。分別用〔1〕不嵌套的if語句〔2〕嵌套的if語句〔3〕if-else語句〔4〕switch語句第五課:循環(huán)結(jié)構(gòu)5-1、5-2節(jié)、while語句一、格式:while(表達(dá)式)循環(huán)體注:1:while是關(guān)鍵字;2:while后面的表達(dá)式可以是任意表達(dá)式,小括號(hào)不能丟,里面的內(nèi)容也不能丟;3:沒有大括號(hào)時(shí),只有執(zhí)行臨近一條可執(zhí)行的語句while(a<3){a+=s;s=a;}結(jié)論:while控制的是與其相鄰的一條語句.1+2+3+…....+100的和?inti=1,sum=0;while(i<101){sum=sum+i;

i++;}printf("%d",sum);從1開始加到哪個(gè)數(shù)時(shí)他們的和將超過1000?inti=1,sum=0;while(sum<1000){sum+=i;i++;}printf("%d",--i);/*加到最后i多循環(huán)一次,所以—i*/(21)有以下程序(D)#includemain(){intn=2,k=0;

while(k++&&n++>2);

printf(“%d%d\n〞,k,n);}程序運(yùn)行后的輸出結(jié)果是A)02B)13

C)57

D)125-3節(jié)、do-while語句(while語句先判斷,后執(zhí)行,為當(dāng)型循環(huán);do-while語句先執(zhí)行,后判斷,為直到型循環(huán).)dowhile()格式:do循環(huán)體while(表達(dá)式)數(shù)列1235813………...do{a3=a1+a2;a1=a2;a2=a3;}while(a3<=1000);1:do-while語句至少執(zhí)行一次;2:do-while后面的分號(hào)一定得有,while是沒有的.5-4節(jié)、for語句〔1〕for語句和for語句構(gòu)成的循環(huán)結(jié)構(gòu)一、格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體1.循環(huán)體可以是一條語句,可以是空語句,或復(fù)合語句;相當(dāng)于while語句的表達(dá)式1;while(表達(dá)式2){循環(huán)體;表達(dá)式3;}例:輸出10個(gè)*的程序for(k=0;k<=10;k++){printf("*");}也可以這樣寫k=0;for(;k<=10;){printf("*");k++;}intk=0;while(k<10){printf("*");k++;}注:1:表達(dá)式可以省略,但分號(hào)不可以。2:表達(dá)式可以是任意有效的C語言表達(dá)式課后習(xí)題局部,筆記不再提供,請(qǐng)大家看教程。第六課、字符型數(shù)據(jù)6-1節(jié)、字符型常量格式:’a’‘A’‘’要求:1,單引號(hào)中的大寫字母和小寫字母代表不同的字符常量。2.單引號(hào)中的空格也是一個(gè)字符常量,但不能是兩個(gè)連續(xù)的單引號(hào)3.字符常量只能用單引號(hào)括起來,不能用雙引號(hào)。轉(zhuǎn)義字符\n代表回車\’代表一個(gè)單引號(hào)‘\\代表一個(gè)\\〞代表一個(gè)雙引號(hào)注意:轉(zhuǎn)義字符常量,如’\141’只代表一個(gè)字符反斜線后的8進(jìn)制數(shù)可以不用0開頭。如1中所講的141就是一個(gè)8進(jìn)制數(shù)。0141反斜線后的16進(jìn)制數(shù)只可以用x開頭,不可以用X開頭。字符串常量格式:由雙引號(hào)括起來的一串字符。同時(shí)也要知道“A〞和’A’是不一樣的。“A〞‘A’ACSII碼A65a97‘a(chǎn)’-‘A’=326.2節(jié)、字符變量格式:chara=’s’6.3字符的輸入和輸出Printf和scanf函數(shù)輸出和輸入字符對(duì)于字符型數(shù)據(jù)的格式說明符是%cCharc=’a’;Printf(“%c〞,c);Chara,b,c,d;Scanf(“%c%c%c〞,&a,&b,&c);6-3節(jié)、程序舉例寫出26個(gè)大寫字母和他們的ASCII代碼要求每行輸出兩組數(shù)據(jù)。#include<stdio.h>Main(){Charch;intI;For(i=0;i<26:i++){Ch=i+65;If(i%2==0)Printf(“\n〞);Printf(“c=%c,ASCII=%d〞,ch,ch);}}在上面的程序中有對(duì)于字符的輸入與輸出,在C語言中也有另外的輸入輸出字符的語句。輸入:變量名=getchar()輸出:putchar(變量名)函數(shù)7-1節(jié)、庫函數(shù)1.調(diào)用C語言標(biāo)準(zhǔn)庫函數(shù)時(shí)要求的include命令行Include命令行必須以#開頭,系統(tǒng)提供的頭文件以.h作為文件的后綴,文件名用一對(duì)雙引號(hào)或一對(duì)尖括號(hào)〔需要注意include命令行不是C語句,因此不能在最后加分號(hào)〕2.標(biāo)準(zhǔn)庫函數(shù)的調(diào)用函數(shù)名〔參數(shù)表〕如:putchar(ch)出現(xiàn)在表達(dá)式中的------ch=getchar()做為單獨(dú)的語句完成某種操作。-----printf(“********〞);7.2函數(shù)的定義和返回值由于C語言中的定義的函數(shù)不能完成用戶所有的要求,所以用戶可以為自己定義函數(shù)實(shí)現(xiàn)相應(yīng)的功能。函數(shù)定義的語法1:格式:函數(shù)返回值的類型名函數(shù)名〔類型名形式參數(shù)1,類型名形式參數(shù)2……〕{說明局部語句局部}2:函數(shù)名和形式參數(shù)都是用戶命名的標(biāo)識(shí)符。在同一個(gè)程序中,函數(shù)名必須唯一,形式參數(shù)名只要在同一函數(shù)中唯一即可,可以與其他函數(shù)中的變量同名。3:C語言規(guī)定,不能在函數(shù)的內(nèi)部定義函數(shù)。4:假設(shè)在函數(shù)的首部省略了函數(shù)返回值的類型名,那么說明該函數(shù)的返回值是int類型5:除了返回值類型為int類型的函數(shù)外,函數(shù)必須先定義后調(diào)用。6:當(dāng)沒有函數(shù)返回值,那么必須把函數(shù)定義成void類型。例:編寫求兩個(gè)雙精度數(shù)之和的函數(shù)。

doubleadd(doublea,doubleb){doubles;s=a+b;returns;}7-2節(jié)、函數(shù)的返回值函數(shù)的值通過return語句返回,return表達(dá)式;此表達(dá)式的值必須與函數(shù)首部所說明的類型一致,假設(shè)類型不一致,那么以函數(shù)值的類型為準(zhǔn)。需要注意的是,無論函數(shù)體中有多少個(gè)return語句,只能執(zhí)行一次。函數(shù)體內(nèi)可以沒有return語句,這時(shí)也必須定義函數(shù)為

viod類型。7-3節(jié)、函數(shù)的調(diào)用函數(shù)的兩種調(diào)用方式格式為:函數(shù)名〔實(shí)在參數(shù)表〕當(dāng)實(shí)參的個(gè)數(shù)多于一個(gè)時(shí),各實(shí)參用逗號(hào)隔開。實(shí)參的個(gè)數(shù)必須與調(diào)用函數(shù)中形參的個(gè)數(shù)相周,類型一一對(duì)應(yīng)匹配。如沒有形參,那么形式為函數(shù)名〔〕注意后面的小括號(hào)不能丟。如題:#include<stdio.h>doubleadd(double,double);main(){doublem,n,z;scanf(“%lf%lf〞,m,n);z=add(m,n);printf(“%lf〞,z);\}

doubleadd(doublea,doubleb){doubles;s=a+b;returns;}7.3.2函數(shù)調(diào)用時(shí)的語法要求1.調(diào)用函數(shù)時(shí),函數(shù)名必須與所調(diào)用的函數(shù)名字完全一致。2.實(shí)參的個(gè)數(shù)必須與形參的個(gè)數(shù)一致。3.C語言中規(guī)定,函數(shù)必須先定義后使用。4.C語言中,函數(shù)可以直接或間接的自己調(diào)用自己。稱為遞歸調(diào)用fac(n)=fac(n-1)*n7-4節(jié)、函數(shù)的說明在C語言中但凡未在調(diào)用前定義的函數(shù),C編譯程序都默認(rèn)函數(shù)的返回值為int型。對(duì)于返回值是其它類型的,假設(shè)把函數(shù)的定義放在調(diào)用之后,應(yīng)該在調(diào)用之前對(duì)函數(shù)進(jìn)行說明。說明的格式:類型名函數(shù)名〔參數(shù)類型1,參數(shù)類型2.。。。?!骋部梢杂靡韵赂袷筋愋兔瘮?shù)名〔參數(shù)類型1參數(shù)名1,參數(shù)類型2參數(shù)名2,……〕函數(shù)說明的位置:一般為了讓程序早點(diǎn)識(shí)別出程序中的定義好了的函數(shù),一般將其放在程序的開始局部7-5節(jié)、調(diào)用函數(shù)和被調(diào)用函數(shù)之間的數(shù)據(jù)傳遞一:三種格式進(jìn)行傳遞實(shí)在參數(shù)和形式參數(shù)之間進(jìn)行數(shù)據(jù)傳遞通過return語句把函數(shù)值返回調(diào)用函數(shù)能過全局變量,但這不是一種好的方式,通常不提倡使用。通過一個(gè)程序來看一下數(shù)據(jù)到底是怎樣傳遞的。#include<stdio.h>viodtry(int,int,int);main(){intx=2,y=3,z=0;printf(“(1)x=%dy=%dz=%d\n〞,x,y,z);try(x,y,z);printf(“(4)x=%dy=%dz=%d\n〞,x,y,z);}voidtry(intx,inty,intz){printf(“(2)x=%dy=%dz=%d\n〞,x,y,z);z=x+y;x=x*x;y=y*y;printf(“(3)x=%dy=%dz=%d\n〞,x,y,z〞);}屏幕上的結(jié)果是:x=2y=3z=0x=2y=3z=0x=4y=9z=5x=2y=3z=0再來一個(gè)程序#include<stdio.h>viodswap(int,int);main(){intx=10,y=20;printf(“(1)x=%dy=%d\n〞,x,y);swap(x,y);printf(“(4)x=%dy=%d\n〞,x,y);}voidswap(inta,intb){intt;printf(“(2)a=%db=%d\n〞,a,b);t=a;a=b;b=t;printf(“(3)a=%db=%d\n〞,a,b);}程序運(yùn)行結(jié)果x=10y=20a=10b=20a=20b=10x=10y=207.6程序應(yīng)用舉例編寫一個(gè)函數(shù)isprime(inta),用來判斷自變量a是否為素?cái)?shù)。假設(shè)是素?cái)?shù),函數(shù)返回整數(shù)1,否那么返回0.#include<stdio.h>intisprime(int)main(){intx;printf(“enteraintegernumber:〞);scanf(“%d〞,&x);if(isprime(x))printf(“%disprime\n〞,x);elseprintf(“%disnotprime\n〞,x);}intisprime(inta){inti;for(i=2;i<=a/2;i++)if(a%i==0)return0;return1;}編寫函數(shù)myupper(ch),把ch中的小寫字母轉(zhuǎn)換成大寫字母作為函數(shù)值返回,其他字符不變。主函數(shù)中不斷輸入字符,用字符@結(jié)束輸入,同時(shí)不斷輸出結(jié)果。#include<stdio.h>#include<ctype.h>charmyupper(charch){if(ch>=’a’&&ch<=’z’)ch=ch-32;returnch;}main(){charc;while((c=getchar())!=’@’){c=myupper(c);putchar(c);}}編寫函數(shù)統(tǒng)計(jì)輸入字符的個(gè)數(shù),用@字符結(jié)束輸入,在主函數(shù)中調(diào)用此函數(shù),輸出統(tǒng)計(jì)結(jié)果。#include<stdio.h>longcountch();main(){longn;n=countch();printf(“n=%ld\n〞,n);}longcountch(){longcn;for(cn=0;getchar()!=’@’;cn++);returncn;}7-10----7-13節(jié)、課后習(xí)題[7.1]以下說法中正確的選項(xiàng)是CA)C語言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行B)在C語言程序中,要調(diào)用的函數(shù)必須在main函數(shù)中定義C)C語言程序總是從main函數(shù)開始執(zhí)行D)C語言程序中的main函數(shù)必須放在程序的開始局部[7.2]以下函數(shù)的類型是CA)與參數(shù)x的類型相同B)void類型C)int類型D)無法確定fff(floatx){printf("%d\n",x*x);}[7.3]以下函數(shù)調(diào)用語句中,含有的實(shí)參個(gè)數(shù)是BA)1B)2C)4D)5func((exp1,exp2),(exp3,exp4,exp5));[7.4]以下程序的輸出結(jié)果是CA)11B)20C)21D)31func(inta,intb){intcc=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);}[7.5]以下程序的輸出結(jié)果是AA)-1B)0C)1D)2main(){inti=2,p;p=f(i,i+1);printf("%d",p);}intf(inta,intb){intc;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}[7.6]以下程序的輸出結(jié)果是DA)0B)1C)6D)無定值fun(inta,intb,intc){c=a*b;}main(){intc;fun(2,3,c);printf("%d\n",c);}[7.7]以下程序的輸出結(jié)果是AA)5.500000B)3.000000C)4.000000D)8.25doublef(intn){inti;doubles;s=1.0;for(i=1;i<=n;i++)s+=1.0/i;returns;}main(){inti,m=3;floata=0.0;for(i=0;i<m;i++)a+=f(i);printf("%f\n",a)L;}二、填空題[7.8]以下程序的輸出結(jié)果是____12____.unsignedfun6(unsignednum){unsignedk=1;do{k*=num%10;num/=10;}while(num);returnk;}main(){unsignedn=26;printf("%d\n",fun6(n);}[7.9]以下程序的輸出結(jié)果是___9.0_____.doublesub(doublex,doubley,doublez){y-=1.0;z=z+x;returnz;}main(){doublea=2.5,b=9.0;printf("%f\n",sub(b-a,a,a));}[7.10]以下程序的輸出結(jié)果是___4_____.fun1(inta,intb){intc;a+=a;b+=b;c=fun2(a,b);returnc*c;}fun2(inta,intb){intc;c=〔a*b〕%3;returnc;}main(){intx=11,y=19;printf("%d\n",fun1(x,y));}[7.11]下面pi函數(shù)的功能是,根據(jù)以下公式返回滿足精度要求的的值.請(qǐng)?zhí)羁?pi/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+...doublepi(doubleeps){doubles=0.0,t=1.0;intn;for(__n=1__;t>eps;n++){s+=t;t=n*t/(2*n+1);}return(2.0*__S___);}[7.12]以下函數(shù)用以求x的y次方.請(qǐng)?zhí)羁?doublefun(doublex,inty){inti;doublez=1;for(i=1;i___<=y__;i++)z=___z*x__;returnz;}n[7.13]以下程序的功能是計(jì)算S=SK!.請(qǐng)?zhí)羁?longf(intn)K=1{inti;longs;s=__1___;for(i=1;i<=n;i++)s=__s*i___;returns;}main(){longs;intk,n;scanf("%d",&n);s=__0___;for(k=0;k<=n;k++)s=s+___f(k)__;printf("%ld\n",s);}三、程序調(diào)試和編程題[7.14]以下fun函數(shù)用以判斷n是否是素?cái)?shù),fun函數(shù)中有邏輯錯(cuò),請(qǐng)調(diào)試改正.fun(intn){intk,yes;for(k=2;k<=n/2;k++)if(n%k==0)return0;elsereturn1;}:指針變量8.1變量的地址和指針:在最開始的時(shí)候,一直給大家強(qiáng)調(diào)變量要先定義,后使用。為什么會(huì)這個(gè)樣子?這是因?yàn)?,每?dāng)我們使用一個(gè)變量系統(tǒng)就必須要給他開辟一個(gè)存儲(chǔ)單元。系統(tǒng)要對(duì)它的值進(jìn)行記錄。每時(shí)每刻的記錄。怎樣進(jìn)行記錄呢?系統(tǒng)會(huì)自動(dòng)的開辟一個(gè)地方將該變量監(jiān)督起來,觀察和記錄它的變化。這個(gè)地方多大放什么東西?這都要求我們提前和系統(tǒng)說好。所以就有了變量要先定義在使用說法。其實(shí)變量定義的過程就是給他開辟存儲(chǔ)空間的過程。那么存儲(chǔ)空間又是什么東西呢??計(jì)算機(jī)種有一個(gè)硬件叫內(nèi)存條,當(dāng)我們提起這個(gè)硬件的時(shí)候往往都會(huì)說多大的。1G,2G,4G……這都是在說他的空間大小。計(jì)算機(jī)中的內(nèi)存是以字節(jié)為單位的一片連續(xù)的存儲(chǔ)空間,每一個(gè)字節(jié)都有一個(gè)編號(hào),這個(gè)編號(hào)就稱為內(nèi)存地址。如同旅館的房間一樣,單人間,雙人間等等,每個(gè)房間都有自己的編號(hào)。內(nèi)存中的空間是連續(xù)的,地址號(hào)也是連續(xù)的,并且都是用二進(jìn)制數(shù)來表示的。變量在定義的時(shí)候先要說明定義的類型。如:intk;doubleb;charch;等等如此的定義。這樣是在和電腦系統(tǒng)打招呼,我們是2人要一個(gè)兩人間。目的就是告訴老板你的房間要是兩個(gè)人的空間。不能定的是2人間,結(jié)果來了3個(gè)人住;同時(shí)也不能定的2人間,結(jié)果就你自己來了〔對(duì)自己來說多花錢了〕。綜上所述:變量的定義就是給變量開辟存儲(chǔ)空間的過程。intafloatbaaabbbb101210131014101510161017這就是變量定義的時(shí)候系統(tǒng)給隨機(jī)開辟的地址空間。在結(jié)合我們?cè)谝婚_始講的不同類型的變量的大小,其實(shí)就是在說變量所占的內(nèi)存單元的多少。1012就是整型變量a的首地址,1014就是浮點(diǎn)型變量b的首地址。當(dāng)要用到一個(gè)變量時(shí),系統(tǒng)就會(huì)迅速的找到這個(gè)變量。所以在C程序中還有這樣的一個(gè)變量的存在,就是指針。指針就是用來存放一個(gè)變量在內(nèi)存中的地址,當(dāng)要調(diào)用這個(gè)變量的時(shí)候能迅速的找到。用來存放一個(gè)變量地址的變量就叫指針變量。同時(shí)大家也要走出一個(gè)誤區(qū)就是:指針變量之所以叫變量,就是因?yàn)樗锩嫠娣诺淖兞康牡刂芬膊粩嗟淖兓?。指針是可以移到的?.2指針變量的定義和指針變量的基類型一:格式:類型名*指針變量名1,*指針變量名2….如int*pi,*pj;與之前不一樣的地方就是在變量的前面加了一個(gè)*。*是一個(gè)說明符,用來說明該變量是指針變量。*號(hào)省略的話就和普通的變量一樣了。又如:int*pi;char*ch;inta;charc;指針的作用都是一樣的,都是用來存放地址的,為什么還要分類型的。原因就是指針變量pi只能存放整型變量的地址,指針變量ch只能存放字符變量的地址。如何讓一個(gè)指針存放一個(gè)變量的地址呢?pi=&a;ch=&c;&叫取址符。*叫指針運(yùn)算符。能過以上的講解在家一定對(duì)指針有了更進(jìn)一步和了解。我們共同的回憶一下;變量的定義就是給其開辟存儲(chǔ)單元的過程。任何一個(gè)變量都有自己的存儲(chǔ)地址。指針就是用來存放變量地址的。指針也是一個(gè)變量。指針也要一個(gè)地址。那,有沒有能存放指針變量地址的一個(gè)對(duì)象呢?用該怎么稱呼?有它是專門用來存放指針的地址的。它就是指向指針的指針。int**p,*s;p=&s;**p就是一個(gè)指向指針的指針。它里面只能存放同種數(shù)據(jù)類型的指針的地址。給指針變量賦地址值一個(gè)指針變量可以通過不同的方式獲得一個(gè)確定的地址值,從而指向一個(gè)具體的對(duì)象?!苍谝院蟮恼n程中,每當(dāng)一個(gè)指針中存放了一個(gè)變量的地址的時(shí)候,我們就說這個(gè)指針指向了這個(gè)變量〕。intk=1,*q,*p;q=&k;11qk這時(shí)可以說:q指向了變量k;q=&k+1q=&(k+1)這是錯(cuò)誤的,指針q就是用來存放地址的,前兩個(gè)例子不是。同時(shí):&必須放在運(yùn)算對(duì)象的左邊,而且運(yùn)算對(duì)象的類型必須與指針變量的基類型相同。2,通過指針變量獲得地址值可以通過賦值運(yùn)算,把一個(gè)指針變量中的地址值賦給另一個(gè)指針變量,從而使這兩個(gè)指針指向同一地址。

intk,*p,*q;q=&k;p=q;也就是說指針變量p和q都指向了變量k.注:當(dāng)進(jìn)行賦值運(yùn)算時(shí),賦值號(hào)兩邊指針變量的基類型必須相同。3.給指針變量賦“空〞值;“空〞:null的代碼值為0,當(dāng)執(zhí)行了以上和賦值語句后,稱P為空指針。null的代碼值為0.p=’\0’p=0;注意:p并不是指向地址為0的存儲(chǔ)單元,而是一個(gè)有確定的值“空〞。8.4對(duì)指針變量的操作C語言提供了一個(gè)稱作“間接訪問運(yùn)算符〞的單目運(yùn)算符:“*〞當(dāng)指針變量中存放了一個(gè)確切的地址值是,就可以用“間接運(yùn)算預(yù)算符〞通過指針來引用該地址的存儲(chǔ)單元。int*p,i=10,j;p=&i;那么這樣的賦值語句j=*p;上面的這個(gè)賦值語句我們可以這樣理解:j變量的值是由指針指向的空間中的值賦予的。這里的*p代表指針p中存放的變量i的地址中的值。*不是乘而是用來說明指針的說明符。j=i~~~~~~~j=*(&i)如果有這樣的表達(dá)式代表:j=*p+1代表指針p指向的空間中中的值加1后的值給了變量j;再如int*p,k=0;p=&k;*p=100;*p+=1;注意:當(dāng)*p出現(xiàn)在賦值號(hào)左邊時(shí),代表的是指針?biāo)傅拇鎯?chǔ)單元,當(dāng)出*p出現(xiàn)在賦值號(hào)右邊時(shí),代表的是指針?biāo)傅拇鎯?chǔ)單元的內(nèi)容。如果有:*p+=1++*p(*p)++這三個(gè)表達(dá)式有什么不一樣嗎?++和*兩個(gè)運(yùn)算符的優(yōu)先級(jí)相同。但按自右至左的方向結(jié)合。因此++*p相當(dāng)于++〔*p〕。而在〔*p〕++中,一對(duì)括號(hào)不可以少,〔*p〕++代表先取里面的值然后再加1。而如果去掉怎成了*p++,根據(jù)順序,先++然后再取值。這樣就成了先p++再取值。而P++就是指針先向后移動(dòng)。例8,1用指針指向兩個(gè)變量,通過指針運(yùn)算選出值小的那個(gè)數(shù)。#include<stdio.h>main(){inta,b,min,*pa,*pb,*pmin;pa=&a;pb=&b;pmin=&min;scanf(“%d%d〞,pa,pb);printf(“a=%d,b=%d\n〞,a,b);*pmin=*pa;if(*pa>*pb)*pmin=*pb;printf(“min=%d\n〞,min);}8.4移動(dòng)指針?biāo)^移動(dòng)指針就是對(duì)指針變量加上減去一個(gè)整數(shù),或通過賦值運(yùn)算,使指針變量指向相鄰的存儲(chǔ)單元?!惨虼酥挥挟?dāng)指針指向一串連續(xù)的存儲(chǔ)單元時(shí),指針的移動(dòng)才有意義〕1122334455a[0]a[1]a[2]a[3]a[4]Pqp=&a[0]q=p+2q++q++q--p++對(duì)指針進(jìn)行加減運(yùn)算時(shí),數(shù)字“1〞不再代表十進(jìn)制數(shù)1,而是指一個(gè)單位存儲(chǔ)單元長(zhǎng)度。這個(gè)單元到底多長(zhǎng),要看存儲(chǔ)數(shù)據(jù)的類型了。如果是int那么代表1個(gè)存儲(chǔ)單元長(zhǎng)度就是位移4個(gè)字節(jié)。如果是char類型那么代表1個(gè)存儲(chǔ)單元長(zhǎng)度就是位移1個(gè)字節(jié)。如果變量的類型是double,8個(gè)字節(jié)為一個(gè)單位,而指向它的指針是int,4個(gè)字節(jié)為一個(gè)單位。那么這個(gè)時(shí)候指針每移動(dòng)一個(gè)單位就代表移動(dòng)4個(gè)字節(jié)的長(zhǎng)度,這個(gè)時(shí)候讀取數(shù)據(jù)的時(shí)候就會(huì)出錯(cuò)。8.5函數(shù)之間地址值的傳遞▲形參為指針變量時(shí)參數(shù)和形參之間的數(shù)據(jù)傳遞假設(shè)函數(shù)的形參為指針類型,調(diào)用該函數(shù)時(shí),對(duì)應(yīng)的實(shí)參必須是基類型相同的地址值或者是已指向某個(gè)存儲(chǔ)單元的指針變量。例題:編寫函數(shù)myadd〔int*a,int*b〕,函數(shù)中把指針a和b所指的存儲(chǔ)單元中的兩個(gè)值相加,然后將和值作為函數(shù)值返回。在主函數(shù)中輸入兩個(gè)數(shù)給變量,把變量地址做為實(shí)參,傳給對(duì)應(yīng)的形參。#include<st

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論