版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
%伙£二敍C程お語(yǔ)言程序鉞處第一考,程圖世針泉ヰ糊金ハア解程序的基本含義.程序:可以連接執(zhí)行的一條條指令的集合稱為“程序”源程序:把由高級(jí)程序語(yǔ)言編寫(xiě)的程序稱為“源程序’;目標(biāo)程序:把二進(jìn)制代碼表示的程序稱為“目標(biāo)程序’:目標(biāo)文件:C源程序經(jīng)過(guò)C編譯程序編譯之后生成一個(gè)后綴為.obj的二進(jìn)制文件??蓤?zhí)行文件:.obj文件與C語(yǔ)言提供的各種庫(kù)函數(shù)連接起來(lái)生成一個(gè)后綴為.exe的可執(zhí)行文件。2,ア解算法的基本特點(diǎn),學(xué)列算法的重要性.算法的基本特點(diǎn):可行性effectiveness,確定性definiteness,有窮性finiteness,擁有足夠的情報(bào)厶ア解程序化設(shè)計(jì)的三種基本結(jié)構(gòu)。三種基本結(jié)構(gòu):順序、選擇、循環(huán)ホア解如何用ー饑流程圖和nt流程圖裹示三種基本結(jié)構(gòu).第二?‘ク程方世針的初步和會(huì)I'C程序的構(gòu)成和格式(リア解簡(jiǎn)單的C程序的構(gòu)成。主函數(shù)main():C語(yǔ)言規(guī)定必須用main作為主函數(shù)名。其后的ー對(duì)圓括號(hào)可以是空,但是不能省略。每ー個(gè)可執(zhí)行的C程序必須有一個(gè)并且只能有一個(gè)主函數(shù)?;ɡㄌ?hào)():花括號(hào)0括起來(lái)的部分為函數(shù)體分號(hào);:程序語(yǔ)句必須以分號(hào);結(jié)束構(gòu)成程序語(yǔ)句。(幻ア解main懸數(shù)的構(gòu)成(S)正確書(shū)寫(xiě)〇程序中的注釋注釋:以說(shuō)明變量的含義,語(yǔ)句的作用,程序的功能,從而幫助人們閱讀和理解程序。注釋必須放在Z?和?/之間,符號(hào)必須成對(duì)出現(xiàn)。2、常量(リ正確衰示+進(jìn)制、ハ進(jìn)制、十六進(jìn)制常量,掌握它們之間數(shù)擢的轉(zhuǎn)換(2)正確表示短整型、長(zhǎng)整型、羌符號(hào)整型常量。ア解它們?cè)诰W(wǎng)存中所占字節(jié)髄。掌握糠整型、無(wú)符號(hào)整型常量的數(shù)值范國(guó)。(S)正確表示兩種形式的實(shí)型常量常?:指在程序運(yùn)行過(guò)程中,其值不能改變的量。整型常?:十進(jìn)制:用ー連串的數(shù)字表示ハ進(jìn)制:用ー連串的數(shù)字表示,但開(kāi)頭必須是〇十六進(jìn)制:用數(shù)字〇和字母x(或大寫(xiě)字母X)開(kāi)頭。在C語(yǔ)言中,只有十進(jìn)制數(shù)可以負(fù)數(shù),而ハ進(jìn)制和十六進(jìn)制數(shù)只能是整數(shù)。整型數(shù)據(jù)的分類:類型名稱占用的字節(jié)數(shù)數(shù)值范圍[unsigned]int4?2147483648?2147483647[signed]short[int]2?32768?32767[signed]long[int]4-2147483648?2147483647unsigned[int]4〇?4294967295unsignedshort[int]2〇?65535unsignedlong[int]4〇?4294967295實(shí)型常量:小數(shù)形式:用小數(shù)點(diǎn)表示的實(shí)數(shù)。指數(shù)形式:在C語(yǔ)言中,以“e”或“E”后跟ー個(gè)整數(shù)來(lái)表示以10為底的毫數(shù)。C語(yǔ)言語(yǔ)法規(guī)定:字母e或E之前必須要有數(shù)字,且e或E后面跟著的必須是整數(shù)。ハ標(biāo)識(shí)將(リ正確識(shí)別〇語(yǔ)言的關(guān)鍍字和顆定義標(biāo)識(shí)將。(幻ア解用戶標(biāo)識(shí)符的定義規(guī)則,正確定義用戶標(biāo)識(shí)符.標(biāo)識(shí)符:在C語(yǔ)言中,有許多符號(hào)的命名,如變量名、函數(shù)名、數(shù)組名等,都必須遵守一定的規(guī)則,按此規(guī)則命名的符號(hào)稱為標(biāo)識(shí)符。合法標(biāo)識(shí)符的命名規(guī)則:標(biāo)識(shí)符可以由型,數(shù)字和下劃線組成,并且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言標(biāo)識(shí)符的分類:關(guān)鍵字、預(yù)定義標(biāo)識(shí)符、用戶標(biāo)識(shí)符(由用戶根據(jù)需要定義的標(biāo)識(shí)符稱為用戶標(biāo)識(shí)符,或自定義標(biāo)識(shí)符b4、変量(リ正確理解“変量代表內(nèi)存中的存儲(chǔ)單元’’的概念?(幻正確定義各種類型変量和各類實(shí)型変量。?)ア解盛髄中畫(huà)量定義的債看,建立“変量必須先定義后使用”的概念.(⑴掌握定義変量的同時(shí)給該変量臓初值的方法。變量:指在程序運(yùn)行過(guò)程中其值可以改變的量。ー個(gè)變量實(shí)質(zhì)上是代表了內(nèi)存中的某個(gè)存儲(chǔ)單元。整型變量:整型變量可以分為基本型、短整型、長(zhǎng)整型和無(wú)符號(hào)型四種?;拘偷恼妥兞慷x:intk;/?定義k為整型變量?/實(shí)型變量:C語(yǔ)言中實(shí)型變量分為單精度型(floaい和雙精度型(double)兩種。在一般計(jì)算機(jī)系統(tǒng)中,float類型的變量分配4個(gè)字節(jié)的存儲(chǔ)單元,double類型的變量分配8個(gè)字節(jié)的存儲(chǔ)單元,并按實(shí)型數(shù)的方式存放數(shù)據(jù)。5、尊ポ表達(dá)式(リア解算術(shù)這算符的表達(dá)規(guī)則、優(yōu)先級(jí),ア解常用的數(shù)學(xué)盛數(shù)。正確寫(xiě)出C語(yǔ)言的算術(shù)表達(dá)式?(幻正確理解算術(shù)運(yùn)算符兩螂運(yùn)算數(shù)類型不一數(shù)時(shí)的類型轉(zhuǎn)後規(guī)則,ア解運(yùn)算結(jié)果的類型?;镜乃阈g(shù)運(yùn)算符:+、ー、?、/、%說(shuō)明:1)如果雙目運(yùn)算符兩邊運(yùn)算數(shù)的類型一致,則所得結(jié)果的類型與運(yùn)算數(shù)的類型一致。2)如果雙目運(yùn)算符兩邊運(yùn)算數(shù)的類型不一致,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,使運(yùn)算符兩邊的類型達(dá)到一致,再進(jìn)行運(yùn)算。3)在C語(yǔ)言中,所有實(shí)型數(shù)的運(yùn)算均以雙精度方式進(jìn)行。若是單精度數(shù),則在尾數(shù)部分添。,使之轉(zhuǎn)化為雙精度數(shù)。運(yùn)算符的優(yōu)先級(jí)イノ+-*/%上6、臓值表達(dá)式H)ア解C語(yǔ)言中賺值運(yùn)尊符的操作規(guī)則及其優(yōu)先舞。正確寫(xiě)出賺值襲達(dá)式。(2)正確理解臓值表達(dá)式的值。(S)掌握賺値運(yùn)算兩邊類型不一致時(shí)的類型轉(zhuǎn)換規(guī)則。(4)ア鱗復(fù)合賺值運(yùn)算符的操作規(guī)則及其優(yōu)先級(jí)。正確寫(xiě)出用拿合賺值運(yùn)算將構(gòu)成的臓值語(yǔ)句,ア解其運(yùn)算結(jié)果。賦值表達(dá)式:變?名=表達(dá)式說(shuō)明:1)賦值運(yùn)算符的優(yōu)先級(jí)只高于逗號(hào)運(yùn)算符,比任何其他運(yùn)算符的優(yōu)先級(jí)要低,且具有自右向左的結(jié)合性。)賦值運(yùn)算符不同于數(shù)學(xué)中的“等于號(hào)”,這里不是同等關(guān)系,而是“賦予”的操作。)賦值表達(dá)式x=y的作用是,將變量y所代表的存儲(chǔ)單元中的內(nèi)容賦給變量x所代表的存儲(chǔ)單元,x中原有的數(shù)據(jù)被替換掉。賦值后y中的內(nèi)容保持不變。)在賦值表達(dá)式x=x中,雖然賦值運(yùn)算符兩邊的運(yùn)算對(duì)象都是x,但出現(xiàn)在左邊和右邊的含義不同。)賦值運(yùn)算符的左側(cè)只能是變量,不能是常量或表達(dá)式。a+b=c是非法賦值表達(dá)式。6)等號(hào)右邊的表達(dá)式也可以是一個(gè)賦值表達(dá)式。)在C語(yǔ)言中,?”號(hào)被視為一個(gè)運(yùn)算符。a=19是一個(gè)表達(dá)式,表達(dá)式必定有一個(gè)值。)C語(yǔ)言的賦值表達(dá)式可以作為語(yǔ)句中的某個(gè)成分出現(xiàn)在眾多的語(yǔ)句或表達(dá)式中,從而使變量中數(shù)值變化過(guò)程變得難于掌握。復(fù)合賦值表達(dá)式:+=、ー=、?=、/=、%=(注意:符號(hào)之間不允許有空格、7、自加自減運(yùn)算(リア解自加、自減運(yùn)算符的操作規(guī)則及其優(yōu)先級(jí).正確寫(xiě)出自加,自減運(yùn)算表達(dá)式。(2)掌握自加'自減運(yùn)算符的這算規(guī)律。(5)掌握自加'自濾運(yùn)算表達(dá)式的值。1)自加運(yùn)算符“++”和自減運(yùn)算符“-”的運(yùn)算結(jié)果是使運(yùn)算對(duì)象的值增1或減1.。2)運(yùn)算符“+”和“-”是單目運(yùn)算符,運(yùn)算對(duì)象可以是整型變量也可以是實(shí)型變量,但不能是常量或表達(dá)式。3)用自加或自減運(yùn)算符構(gòu)成表達(dá)式時(shí),既可以前綴形式出現(xiàn),也可以是后綴形式出現(xiàn)。如++i和i++都是合法的表達(dá)式。無(wú)論是作為前綴運(yùn)算符還是作為后綴運(yùn)算符,對(duì)于變量本身來(lái)說(shuō)自加1自減1的效果相同,但作為表達(dá)式來(lái)說(shuō)卻有著不同的值。4)運(yùn)算符“++”和“-”的結(jié)合方向是“自右至左’:5)不要再ー個(gè)表達(dá)式中對(duì)同一個(gè)變量進(jìn)行多次自加、自減運(yùn)算8、強(qiáng)制類型轉(zhuǎn)掾和逗號(hào)表達(dá)式(リア解強(qiáng)制類型的輯換的應(yīng)用、優(yōu)先級(jí),正確使用強(qiáng)制類型舞換.(ガア解逗號(hào)運(yùn)算的応用、優(yōu)先級(jí),正確寫(xiě)出逗號(hào)表達(dá)式.(S)掌握逗號(hào)表達(dá)式的規(guī)律和逗號(hào)表達(dá)式的值。轉(zhuǎn)換規(guī)則:1)若運(yùn)算符兩邊ー個(gè)是短整型,ー個(gè)是長(zhǎng)整型,則將短整型轉(zhuǎn)換為長(zhǎng)整型,然后進(jìn)行運(yùn)算。2)若運(yùn)算符兩邊一個(gè)是有符號(hào)整型,ー個(gè)是無(wú)符號(hào)整形,則將有符號(hào)整型轉(zhuǎn)換成無(wú)符號(hào)整在C語(yǔ)言的賦值表達(dá)式中,賦值號(hào)右邊的值先轉(zhuǎn)換成與賦值號(hào)左邊的變量相同的類型,然后進(jìn)行運(yùn)算。應(yīng)當(dāng)注意:1)當(dāng)賦值號(hào)左邊的變量為短整型,右邊的值為長(zhǎng)整型時(shí),短整型變量只能接受長(zhǎng)整型數(shù)低位上兩個(gè)字節(jié)中的數(shù)據(jù),高位上兩個(gè)字節(jié)中的數(shù)據(jù)將丟失。2)當(dāng)賦值號(hào)左邊的變量為無(wú)符號(hào)整型,右邊的值為有符號(hào)整型時(shí),則把內(nèi)存中內(nèi)容原樣復(fù)制。右邊的數(shù)值范圍不應(yīng)當(dāng)超過(guò)左邊的變量的數(shù)值范圍。3)當(dāng)賦值號(hào)左邊的變量為無(wú)符號(hào)整型,右邊的值為有符號(hào)整型,復(fù)制的機(jī)制同上。這時(shí)若符號(hào)位為1,將按負(fù)數(shù)處理。逗號(hào)表達(dá)式:羨正式1,羨反2 表達(dá)式n第三考;為脩相I、臓值語(yǔ)旬(リア解賺值語(yǔ)旬的構(gòu)成和運(yùn)算規(guī)律。(幻正確運(yùn)用婕值表達(dá)式語(yǔ)旬.賦值語(yǔ)句:変/名:袤達(dá)式;對(duì)數(shù)掘輸出(I)掌握標(biāo)準(zhǔn)輸出豳數(shù)prinH的調(diào)用形式.(幻掌握pcinM贏數(shù)中常用的格式說(shuō)明。(S)掌握簡(jiǎn)單的輸出格式設(shè)計(jì).printf函數(shù)調(diào)用:printf(格式控制,輸出項(xiàng)1,輸出項(xiàng)2 )printf輸出語(yǔ)句:printf(格式控制,輸出項(xiàng)1,輸出項(xiàng)2 ノ;printf函數(shù)中格式控制的作用:-) 給輸出項(xiàng)提供輸出格式說(shuō)明:輸出格式說(shuō)明的作用是將要輸出的數(shù)據(jù)按給定的格式輸出。格式說(shuō)明由“%”符號(hào)和緊跟在其后的輸岀描述符組成。二) 提供需要原樣輸出的文字和字符:除了格式轉(zhuǎn)換說(shuō)明外,字符串中的其他字符(包括空格)將按原樣輸出。printf的各輸出項(xiàng)之間要用逗號(hào)隔開(kāi)(函數(shù)的各個(gè)參數(shù)之間必須要用逗號(hào)隔開(kāi)\printf函數(shù)中常用的格式—)格式字符格式字符說(shuō)明C輸出ー個(gè)字符
d或i輸出帶符號(hào)的十進(jìn)制的整型數(shù)。%Id為長(zhǎng)整型,%hd為短整型,%l64d為64位長(zhǎng)整數(shù)(VC++4.0以上版本輸出」nt64類型的整數(shù))0以ハ進(jìn)制格式輸出整型數(shù),%〇不帶先導(dǎo)〇,%#〇加先導(dǎo)〇X或x以十六進(jìn)制格式輸出整型數(shù)。%x或%X不帶先導(dǎo)Ox或OX,%#x或%#X輸出帶先導(dǎo)Ox或OXoU以無(wú)符號(hào)十進(jìn)制輸出整型數(shù)f以帶小數(shù)點(diǎn)的數(shù)學(xué)形式輸出浮點(diǎn)數(shù)(單精度和雙精度)E或e以指數(shù)形式輸出浮點(diǎn)數(shù)(單精度和雙精度數(shù))1格式是:[-]m.dddddde±xxxx或者[-]m.ddddddE±xxx。小數(shù)位數(shù)(d的個(gè)數(shù))由輸出精度決定,隱含的精度是6.若指定的精度為〇,則包括小數(shù)點(diǎn)在內(nèi)的小數(shù)部分都不輸出。xxx為指數(shù),保持三位,不足補(bǔ)〇.若指數(shù)為0,則輸出為〇〇〇〇G或g由系統(tǒng)決定用%f還是采用%e(或者%E)格式輸出,以使輸出寬度最小。s輸出ー個(gè)字符串,直到遇到“、〇’:若字符串長(zhǎng)度超過(guò)指定精度則自動(dòng)突破,不會(huì)截?cái)嘧址?。p輸出變量的內(nèi)存地址%也就是%%形式,輸出一個(gè)%符號(hào)。-)長(zhǎng)度修飾符在%和格式字符之間,可加入長(zhǎng)度修飾符,以保證數(shù)據(jù)輸出格式的正確和對(duì)齊。對(duì)于長(zhǎng)整型數(shù)(long)應(yīng)該加1,即%1d;對(duì)于短整型數(shù)(short)可以加h,即%hd。三)輸出數(shù)據(jù)所占寛度的說(shuō)明當(dāng)使用%d、%c、%f、%e、%s……的格式說(shuō)明時(shí),輸出數(shù)據(jù)所占的寬度(域?qū)挘┯上到y(tǒng)決定;通常按照數(shù)據(jù)本身的實(shí)際寬度輸出,前后不加空格,并采用右對(duì)齊的形式。)在%和格式字符之間插入ー個(gè)整數(shù)常數(shù)來(lái)指定輸出的寬度n。如果指定寬度不夠,將自動(dòng)突破,保證數(shù)據(jù)完整輸出。如果指定的寬度n超過(guò)輸出數(shù)據(jù)的實(shí)際寬度,輸出時(shí)將會(huì)右對(duì)齊,左邊補(bǔ)以空格,達(dá)到指定的寬度。)對(duì)于float和double類型的實(shí)數(shù),可以用“n1.n2”的形式來(lái)指定輸出寬度(n1.n2分別代表ー個(gè)整常數(shù)),其中n1指定輸出數(shù)據(jù)的寬度(包括小數(shù)點(diǎn)),n2指定小數(shù)點(diǎn)后小數(shù)位的位數(shù),n2也稱為精度。對(duì)于f,e或E,當(dāng)輸出數(shù)據(jù)的小數(shù)位多于n2位時(shí),截去右邊多余的小數(shù),并對(duì)截去部分的第一位小數(shù)四舍五入處理;當(dāng)輸出數(shù)據(jù)的小數(shù)位少于n2時(shí),在小數(shù)的最右邊補(bǔ)。,使得輸出數(shù)據(jù)小數(shù)部分的寬度為n2?若給出的總寬度n1小于n2加上整數(shù)位數(shù)和小數(shù)點(diǎn)(e或E格式還要加上5位),則自動(dòng)突破n1的限制;反之,數(shù)字右對(duì)齊,左邊補(bǔ)空格。也可以用“.n2“格式,不指定總寬度,僅指定小數(shù)部分的輸出位數(shù),由系統(tǒng)自動(dòng)突破,按照實(shí)際寬度輸出。如果指定“n1.0"或“.〇”格式,則不輸出小數(shù)點(diǎn)和小數(shù)部分。對(duì)于g或G,寬度用來(lái)指定輸出的有效數(shù)字位數(shù)。若寬度超過(guò)數(shù)字的有效數(shù)字位數(shù),則左邊自動(dòng)補(bǔ)〇;若寬度不足,則自動(dòng)突破。不指定寬度,將自動(dòng)按照6位有效數(shù)字輸出,截去右邊多余的小數(shù),并對(duì)截去部分的第一位小樹(shù)做四舍五人處理。)對(duì)于整型數(shù),若輸出格式是“On1”或“m2”格式,則如果指定的寬度超過(guò)輸出數(shù)據(jù)的實(shí)際寬度,輸出時(shí)將會(huì)右對(duì)齊,左邊補(bǔ)〇。對(duì)于float和double類型的實(shí)數(shù),若用“0n1.n2”格式輸出,如果給出的總寬度n1大于n2加上整數(shù)位數(shù)和小數(shù)點(diǎn)(e或E格式還要加上5位),則數(shù)字右對(duì)齊,左邊補(bǔ)〇〇對(duì)于字符串,格式“n1”指定字符串的輸出寬度,若n1小于字符串的實(shí)際長(zhǎng)度,則自動(dòng)突破,輸出整個(gè)字符串;若n1大于字符串的實(shí)際長(zhǎng)度,則右對(duì)齊,左邊補(bǔ)空格。若用“m2”格式指定字符串的輸出寬度,則弱n2小于字符串的實(shí)際長(zhǎng)度,將只輸出字符串的前n2個(gè)字符。四)輸出數(shù)據(jù)左對(duì)齊:如果想要左對(duì)齊,可以在格式控制中的“%”和寬度之間加一個(gè)“-”來(lái)實(shí)現(xiàn)。五)使輸出數(shù)據(jù)帶+號(hào)或一號(hào):通常輸出的數(shù)據(jù)如果是負(fù)數(shù),前面有符號(hào)“-”,但正確前面的“+”一般都省略了。如果要每ー個(gè)數(shù)前面都帶正負(fù)號(hào),可以在“%”和格式字符間加一個(gè)“+”號(hào)來(lái)實(shí)現(xiàn)。printf函數(shù)使用的注意事項(xiàng)1)輸出格式為自動(dòng)格式,是否在兩個(gè)數(shù)之間留逗號(hào)、空格或回車(chē),完全取決于格式控制,如果不注意,很容易造成數(shù)字連在ー起,使得輸出結(jié)果沒(méi)有意義。2)格式控制中必須含有輸出項(xiàng)ーー對(duì)應(yīng)的輸出格式說(shuō)明,類型必須匹配。3)在格式控制中,除了前面要求的輸出格式,還可以包含任意的合法字符(包含漢字和轉(zhuǎn)義符),這些字符輸出時(shí)將“原樣照印’:4)如果輸出%符號(hào),可以在格式控制中用%%表示。5)printf函數(shù)有返回值,返回值是本次調(diào)用輸出字符的個(gè)數(shù),包括回車(chē)等控制符。6)盡量不要再輸出語(yǔ)句中改變輸出變量的值。7)輸出數(shù)據(jù)時(shí)的域?qū)捒梢愿淖?。ハ跳緡輸入(I)掌握標(biāo)準(zhǔn)輸入盛數(shù)/conf的調(diào)用形式。(2)掌握/conf巔繳中常用的格式說(shuō)明?(S)掌握使用/conf盛數(shù)進(jìn)行數(shù)據(jù)輸入的方法?scanf函數(shù)調(diào)用形式:scanf(格式控制,輸入句1,輸入句2 ノscanf函數(shù)語(yǔ)句:scanf(格式控制,冊(cè)ス句1,留ス句2 ノ;scanf函數(shù)中常用的格式說(shuō)明格式字符說(shuō)明C輸入一個(gè)字符。d輸入帶符號(hào)的十進(jìn)制整型數(shù)。i輸入整型數(shù),整型數(shù)可以是帶先導(dǎo)〇的八進(jìn)制數(shù),也可以是帶先導(dǎo)Ox(或0X)的十六進(jìn)制數(shù)。X以十六進(jìn)制格式輸入整型數(shù),可以帶先導(dǎo)Ox或0X,,也可以不帶。0以ハ進(jìn)制格式輸入整型數(shù),可以帶先導(dǎo)〇,也可以不帶。u以無(wú)符號(hào)十進(jìn)制形式輸入整型數(shù)。f(lf)以帶小數(shù)點(diǎn)的數(shù)學(xué)形式或指數(shù)形式輸入浮點(diǎn)數(shù)(單精度數(shù)用f,雙精度數(shù)用If)e(le)同上s輸入ー個(gè)字符串,直到遇到“、〇’;若字符串長(zhǎng)度超過(guò)指定的精度則自動(dòng)突破,不會(huì)截?cái)嘧址?。說(shuō)明:1)在格式串中,必須含有與輸入項(xiàng)ーー對(duì)應(yīng)的格式轉(zhuǎn)換說(shuō)明符。2)在VC++6.0環(huán)境下,輸入short型整數(shù),格式控制要求用%hd。要輸入double型數(shù)據(jù),格式控制必須用%If(或%Ie卜否則數(shù)據(jù)不能正確輸入。3)在scanf函數(shù)格式的字符前可以加入一個(gè)正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以對(duì)實(shí)數(shù)指定小數(shù)位的寬度。4)由于輸入的是ー個(gè)字符流,scanf從這個(gè)流中按照格式控制指定的格式解析出相應(yīng)數(shù)據(jù)送到指定地址的變量中。5)scanf函數(shù)有返回值,其值就是本次scanf調(diào)用正確輸入的數(shù)據(jù)項(xiàng)的個(gè)數(shù)。通過(guò)scanf函數(shù)從鍵盤(pán)輸入數(shù)據(jù)-)輸入數(shù)值數(shù)據(jù):當(dāng)用scanf函數(shù)從鍵盤(pán)輸入數(shù)據(jù)時(shí)每行數(shù)據(jù)在未按下回車(chē)鍵(Enter鍵)之前,可以任意修改,但按下Enter鍵后,scanf函數(shù)就接受到了這行數(shù)據(jù),不能再回去修改。在輸入整數(shù)或?qū)崝?shù)這類數(shù)值型數(shù)據(jù)時(shí),輸入的數(shù)據(jù)之間必須用空格、回車(chē)符、制表符(Tab鍵)等間隔符隔開(kāi),間隔符個(gè)數(shù)不限。例如:scanf("%d%f%le",&k,&a,&y);若要給k賦值10,a賦值12.3,y賦值1234567.89,輸入格式是:1012.31234567.89<CR><CR>表示回車(chē)鍵。二)指定輸入數(shù)據(jù)所占的寛度:可以在格式字符前加入一個(gè)正整數(shù)指定輸入數(shù)據(jù)所占的寬度。三)跳過(guò)某個(gè)輸入數(shù)據(jù):可以在%和格式字符之間加入“*”號(hào),作用是跳過(guò)對(duì)應(yīng)輸入數(shù)據(jù)。四)在格式控制字符串中插入其他字符:scanf函數(shù)中的格式控制字符串是為了輸入數(shù)據(jù)用的,無(wú)論其中有什么字符,也不會(huì)輸出到屏幕上,因此若想在屏幕上輸出提示信息,應(yīng)該先使用printf函數(shù)輸出。は復(fù)合語(yǔ)旬和空語(yǔ)旬(リア解復(fù)合語(yǔ)旬的飜念和構(gòu)成特點(diǎn)(幻正確構(gòu)成復(fù)合語(yǔ)旬.(S)ア解空語(yǔ)句的構(gòu)成及其在程序中的作用.復(fù)合語(yǔ)句:在C語(yǔ)言中,ー對(duì)花括號(hào)“{}”不僅可以用作函數(shù)體的開(kāi)頭和結(jié)尾的標(biāo)志,也可用作復(fù)合語(yǔ)句的開(kāi)頭和結(jié)尾的標(biāo)志。復(fù)合語(yǔ)句也稱為“語(yǔ)句塊'其形式如:價(jià)句1,語(yǔ)句2,語(yǔ)句3 J空語(yǔ)句:ー個(gè)分號(hào)稱為一條語(yǔ)句,也稱為“空語(yǔ)句”,程序執(zhí)行時(shí)不會(huì)產(chǎn)生任何動(dòng)作。程序設(shè)計(jì)中有時(shí)需要加一個(gè)空語(yǔ)句來(lái)表示存在一條語(yǔ)句但是隨意加分號(hào)也會(huì)導(dǎo)致邏輯上的錯(cuò)誤,而且這種錯(cuò)誤十分隱蔽編譯器也不會(huì)提示邏輯錯(cuò)誤,需要慎用。I、C語(yǔ)言中的還輯值(リ正確理解“遺輯值”的含義.(2)掌握C語(yǔ)言中選輯值的表示方式.C語(yǔ)言的邏輯值:關(guān)系表達(dá)式和邏輯表達(dá)式的運(yùn)算結(jié)果都會(huì)得到ー個(gè)邏輯值。邏輯值只有兩個(gè),“真”和"假’;C語(yǔ)言中沒(méi)有專門(mén)的“邏輯值”,而是用非。表示真,用〇表示假。關(guān)系運(yùn)算符符號(hào)說(shuō)明<小于>大于<=小于等于>=大于等于==等于!=不等于注意:由兩個(gè)字符組成的關(guān)系運(yùn)算符之間不允許有空格。關(guān)系運(yùn)算符是雙目運(yùn)算符,具有自左至右的結(jié)合性。<、>、<=、>=的優(yōu)先級(jí)相同,且高于=、!=〇算術(shù)運(yùn)算符的優(yōu)先級(jí)高,關(guān)系運(yùn)算符的優(yōu)先級(jí)次之,賦值運(yùn)算符的優(yōu)先級(jí)最低。2、關(guān)系運(yùn)算和關(guān)系表達(dá)式(リ題記6個(gè)關(guān)系運(yùn)算得及其它們的優(yōu)先級(jí)和結(jié)合性.(幻掌握邏輯運(yùn)算的運(yùn)茸規(guī)則,正確計(jì)算各種形式的關(guān)系表達(dá)式的值.(S)境夠根據(jù)條件列出關(guān)系表達(dá)式.ハ邏輯運(yùn)算將和遺輯表達(dá)式(リ熟記J個(gè)遷輯運(yùn)算將及其它們的優(yōu)先級(jí)和結(jié)合性.(幻掌握選輯運(yùn)算的運(yùn)算規(guī)律,正確計(jì)算各種形式的逐輯表達(dá)式的値。(S)議餘權(quán)擢桑件列出選輯表達(dá)式.C語(yǔ)言的邏輯運(yùn)算符符號(hào)說(shuō)明&&與II或I非說(shuō)明:其中&&和||是雙目運(yùn)算符,!是單目運(yùn)算符,出現(xiàn)在運(yùn)算對(duì)象的左邊。邏輯運(yùn)算符具有自左至右的結(jié)合性。優(yōu)先級(jí)分別為:邏輯“非”最高,邏輯“與”次之,邏輯“或”最低。邏輯運(yùn)算的表達(dá)式:由邏輯運(yùn)算符和邏輯運(yùn)算對(duì)象組成的稱為邏輯表達(dá)式。邏輯運(yùn)算對(duì)象是C語(yǔ)言中的任意合法表達(dá)式。邏輯運(yùn)算表達(dá)式的值:邏輯運(yùn)算表達(dá)式的值或者為1(“真”),或者為〇("假”b若a,b為合法表達(dá)式,則邏輯運(yùn)算規(guī)則如下:ab!a!ba&&ba||b非。非。0011非。001010010010非。1100在C語(yǔ)言中數(shù)學(xué)表達(dá)式0<x<10,無(wú)論x是什么值,表達(dá)式的值總是1〇應(yīng)輸入0<x&&x<10才能正確表達(dá)該關(guān)系。4、“語(yǔ)句及其構(gòu)成的分支結(jié)構(gòu)(I)熟練底用兩種基本形式的?語(yǔ)句所構(gòu)成的分支結(jié)構(gòu),幷理解其紈行過(guò)程。(2)熟螺應(yīng)用嵌套形式的“語(yǔ)句所構(gòu)成的分支結(jié)構(gòu),并理解其執(zhí)行過(guò)程。if語(yǔ)句的兩種基本形式:(1)if(表達(dá)式)語(yǔ)句說(shuō)明:if是C語(yǔ)言中的關(guān)鍵字,在其后的一對(duì)圓括號(hào)中的表達(dá)式可以是C語(yǔ)言中的任意合法表達(dá)式。表達(dá)式之后只能是一條語(yǔ)句,稱為if子句。如果該句中含有多個(gè)語(yǔ)句,則必須使用復(fù)合語(yǔ)句,也即用花括號(hào)括起來(lái),復(fù)合語(yǔ)句可以看作是一條語(yǔ)句。執(zhí)行過(guò)程:執(zhí)行if語(yǔ)句時(shí),首先計(jì)算緊跟在if后面的ー對(duì)圓括號(hào)里表達(dá)式的值。如果表達(dá)式的值為非零(即為“真”),則執(zhí)行后面的if子句,然后再執(zhí)行if后面的一條語(yǔ)句;如果表達(dá)式的值為0(即為“假”),則直接跳過(guò)if子句,執(zhí)行if的下一條語(yǔ)句。⑵if(表達(dá)式)語(yǔ)句1else語(yǔ)句2說(shuō)明if和else是C語(yǔ)言中的關(guān)鍵字。“語(yǔ)句1”稱為if子句,“語(yǔ)句2”稱為else子句,這些子句只允許一條語(yǔ)句,若需要用多條語(yǔ)句,則應(yīng)該使用復(fù)合語(yǔ)句。if-else語(yǔ)句的執(zhí)行過(guò)程:執(zhí)行if-else語(yǔ)句時(shí),首先計(jì)算緊跟if后面的ー對(duì)圓括號(hào)里表達(dá)式的值。如果表達(dá)式的值為非零(即為“真”),則執(zhí)行后面的if子句,然后跳過(guò)else子句,去執(zhí)行if語(yǔ)句后的下一條語(yǔ)句;如果表達(dá)式的值為〇(即為“假”),則直接跳過(guò)if子句,去執(zhí)行else子句,執(zhí)行完后執(zhí)行if語(yǔ)句后的下一條語(yǔ)句。if語(yǔ)句的說(shuō)明:(1)if后面圓括號(hào)的表達(dá)式可以是任意C語(yǔ)言中的合法表達(dá)式,也可以是任意類型的數(shù)據(jù)。(2)無(wú)論是否有else子句,if后只能有一條語(yǔ)句,且此語(yǔ)句后的分號(hào)不能省略。嵌套的if語(yǔ)句1、在if子句中嵌套具有else子句的if語(yǔ)句語(yǔ)句形式網(wǎng)妻達(dá)式りif(表達(dá)式2)語(yǔ)句1else語(yǔ)句2else語(yǔ)句32、在if語(yǔ)句中嵌套不含else子句的if語(yǔ)句語(yǔ)句形式If(表達(dá)式1){if(表達(dá)式2)語(yǔ)句が/花括號(hào)不能缺少,C語(yǔ)言中else總與最近的if配對(duì)。else語(yǔ)句23、在else子句中嵌套if語(yǔ)句語(yǔ)句形式1)內(nèi)嵌的if語(yǔ)句帶有elseif(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2else語(yǔ)句3或?qū)懗蒳f(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2else語(yǔ)句32)內(nèi)嵌的if語(yǔ)句不帶elseIf(表達(dá)式〃語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2或?qū)懗蒳f(表達(dá)式〃語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句25、條件運(yùn)算符和條件表達(dá)式(リア解條件運(yùn)算符取及條件表達(dá)式的運(yùn)算規(guī)則、優(yōu)先級(jí)和結(jié)合性。(幻融練應(yīng)用條件表達(dá)式所構(gòu)成的分支結(jié)構(gòu),并理解其摭行過(guò)程。條件運(yùn)算符:條件運(yùn)算符由兩個(gè)運(yùn)算符組成,它們是:Zo這是C語(yǔ)言提供的唯一的三目運(yùn)算符,要求有三個(gè)運(yùn)算對(duì)象。由條件運(yùn)算符構(gòu)成的條件表達(dá)式:麥達(dá)式1?表達(dá)式2:表達(dá)式3條件表達(dá)式的運(yùn)算功能:當(dāng)“表達(dá)式1”的值為非零時(shí),求出“表達(dá)式2”的值,此時(shí),“表達(dá)式2”的值就是整個(gè)表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時(shí),則求’表達(dá)式3”的值,此時(shí),把“表達(dá)式3”的值作為整個(gè)表達(dá)式的值。條件運(yùn)算符的優(yōu)先級(jí):條件運(yùn)算符優(yōu)先于賦值運(yùn)算符,但低于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符。6、/witch語(yǔ)句和用/witch與break語(yǔ)句構(gòu)成的選擇結(jié)構(gòu)(I)掌握,<uitch語(yǔ)旬的組成形式,幷理解其紈行過(guò)程。(幻熟螺應(yīng)用由,(vitch與break語(yǔ)句枸成的選擇結(jié)構(gòu),幷理解其執(zhí)行過(guò)程。switch語(yǔ)句:語(yǔ)句形式switch(表達(dá)式)(case営童表達(dá)式1:語(yǔ)句1case?!霰磉_(dá)式2:語(yǔ)句2case常■表達(dá)式n:語(yǔ)句ndefault語(yǔ)句n+11說(shuō)明(1)switch是C語(yǔ)言中的關(guān)鍵字,switch后面花括號(hào)括起來(lái)的是switch的語(yǔ)句體。(2)緊跟switch的圓括號(hào)里的表達(dá)式可以是整型表達(dá)式及字符型表達(dá)式,括號(hào)不能省略。(3)case也是關(guān)鍵字,與其后面的常量表達(dá)式合稱為case語(yǔ)句標(biāo)號(hào)。常量表達(dá)式的類型必須和switch后面的括號(hào)里的表達(dá)式的類型相同,各case語(yǔ)句標(biāo)號(hào)的值各不相同。(4)default也是關(guān)鍵字,起標(biāo)號(hào)的作用,代表所有標(biāo)號(hào)case之外的那些標(biāo)號(hào)。default標(biāo)號(hào)可以出現(xiàn)語(yǔ)句的任何標(biāo)號(hào)位置上。在switch語(yǔ)句體中也可以沒(méi)有default標(biāo)號(hào)。(5)case語(yǔ)句標(biāo)號(hào)后的語(yǔ)句1、語(yǔ)句2等,可以是一條語(yǔ)句,也可以是多條語(yǔ)句。(6)必要時(shí),case語(yǔ)句標(biāo)號(hào)后的語(yǔ)句可以省略不寫(xiě)。(7)在case和常量表達(dá)式之間一定要有空格。switch語(yǔ)句的執(zhí)行過(guò)程:當(dāng)執(zhí)行switch語(yǔ)句時(shí),首先計(jì)算緊跟其后ー對(duì)括號(hào)中的表達(dá)式的值,然后再switch語(yǔ)句體內(nèi)尋找與給值吻合的case標(biāo)號(hào)。如果有與該值相等的標(biāo)號(hào),則執(zhí)行該標(biāo)號(hào)后開(kāi)始的各語(yǔ)句,包括在其后的所有case和default中的語(yǔ)句,直到switch語(yǔ)句體結(jié)束;如果沒(méi)有與給值相等的標(biāo)號(hào),并且在default標(biāo)號(hào),則從default標(biāo)號(hào)后的語(yǔ)句開(kāi)始執(zhí)行,直到switch語(yǔ)句體結(jié)束;如果沒(méi)有與該值相等的標(biāo)號(hào),同時(shí)又沒(méi)有default標(biāo)號(hào),則跳過(guò)switch語(yǔ)句體,去執(zhí)行switch語(yǔ)句之后的語(yǔ)句。在switch語(yǔ)句中使用break語(yǔ)句:break是C語(yǔ)言關(guān)鍵字,break語(yǔ)句又稱作間斷濟(jì)也??梢詫reak語(yǔ)句放在case標(biāo)號(hào)之后的任何位置,通常是在case之后的語(yǔ)句最后加上break語(yǔ)句。每當(dāng)執(zhí)行到break語(yǔ)句時(shí),立即跳出switch語(yǔ)句體。switch語(yǔ)句通??偸呛蚥reak語(yǔ)句聯(lián)合起來(lái)使用,使得switch語(yǔ)句真正實(shí)現(xiàn)分支的作用。語(yǔ)句標(biāo)號(hào):在C語(yǔ)言中,任意合法標(biāo)識(shí)符加上冒號(hào),就形成標(biāo)號(hào)。一般標(biāo)號(hào)用作got。語(yǔ)句的轉(zhuǎn)向目標(biāo)。goto語(yǔ)句:由于goto語(yǔ)句使得程序毫無(wú)規(guī)律,可讀性變差,應(yīng)盡量不用goto語(yǔ)句。第エ?「循林結(jié)構(gòu)I■while?舜(リ掌握while楣環(huán)結(jié)構(gòu),并ア解其執(zhí)行過(guò)程。(幻瓢練使用while構(gòu)造循環(huán)結(jié)構(gòu).while(當(dāng))循環(huán)的一般形式:while(表達(dá)式)循環(huán)體說(shuō)明:(1)while是C語(yǔ)言的關(guān)鍵字。(2)while后ー對(duì)圓括號(hào)中的表達(dá)式可以是C語(yǔ)言中的任意合法表達(dá)式,但不能為空,由它來(lái)控制循環(huán)體是否執(zhí)行。(3)在語(yǔ)法上,循環(huán)體只能是一條可執(zhí)行語(yǔ)句,若循環(huán)體內(nèi)有多個(gè)語(yǔ)句,應(yīng)該使用復(fù)合語(yǔ)句。while循環(huán)的執(zhí)行過(guò)程:(1)計(jì)算while后括號(hào)中的表達(dá)式的值,當(dāng)值為非〇時(shí),執(zhí)行步驟(2);當(dāng)值為〇時(shí),執(zhí)行步驟(4\(2)執(zhí)行循環(huán)體ー次。(3)轉(zhuǎn)去執(zhí)行步驟(1\(4)推出while循環(huán)。while循環(huán)一般用于事先不知道循環(huán)次數(shù)的循環(huán)。經(jīng)典例題:1、計(jì)算だ+22+…+42、解方程x=cosx3、已知q=[-:+1ミ+廠…求pi2、do-uihile楣環(huán)H)掌握do-uihile循環(huán)結(jié)構(gòu),幷ア解其摭行過(guò)程?(2)熟練使用dbwhile梅造循環(huán)結(jié)構(gòu).do-while循環(huán)的形式:do健環(huán)體while(表達(dá)式);說(shuō)明:1、do是C語(yǔ)言的關(guān)鍵字,必須和while聯(lián)合使用。2、do-while循環(huán)由da開(kāi)始,至while結(jié)束。必須注意的是:在while(表達(dá)式)后的",'13、while后的ー對(duì)圓括號(hào)中的表達(dá)式,可以是C語(yǔ)言中的任意合表達(dá)式,由它控制循環(huán)是否執(zhí)行。4、按語(yǔ)法,在do和while之間的循環(huán)體只能是一條可執(zhí)行語(yǔ)句。若循環(huán)體內(nèi)需要多個(gè)語(yǔ)句,應(yīng)該使用復(fù)合語(yǔ)句。do-while循環(huán)的執(zhí)行過(guò)程1、執(zhí)行d。后面循環(huán)體中的語(yǔ)句。2、計(jì)算while后ー對(duì)圓括號(hào)中表達(dá)式的值。當(dāng)值為非零時(shí),轉(zhuǎn)去執(zhí)行步驟(1),當(dāng)值為0時(shí),執(zhí)行步驟(3).3、退出do-while循環(huán)。經(jīng)典例題:計(jì)算Fibonacci數(shù)列直到某項(xiàng)值大于1000為止并輸出該項(xiàng)的值。其中Fibonacci數(shù)列:た=ん-l+/n-2.#include<stdio.h>intmain(void)(intf1,f2,f;f1=0,f2=1;dof=f1+f2;f1=f2;f2=f;}while(f2<=1000);printf(,,F=%d\n,',f2);return0;}5、f。,循環(huán)(リ掌握出循環(huán)結(jié)構(gòu),并ア解其樵行過(guò)程.(2)瓢練使用,?!笜?gòu)造循環(huán)結(jié)構(gòu).For循環(huán)的形式:for(表達(dá)式1;殿性C2;乗"3ノ循環(huán)體for循環(huán)的執(zhí)行過(guò)程:1、計(jì)算表達(dá)式1.2、計(jì)算表達(dá)式2,若其值為非零,轉(zhuǎn)步驟3.3、執(zhí)行一次for循環(huán)體。4、計(jì)算表達(dá)式3,轉(zhuǎn)向步驟2.5、結(jié)束循環(huán)。有關(guān)for語(yǔ)句的說(shuō)明:1,for語(yǔ)句中的表達(dá)式可以部分或全部省略,但兩個(gè)“;’不能省略。2、for后ー對(duì)圓括號(hào)中的表達(dá)式可以是任意C語(yǔ)言中合法表達(dá)式。經(jīng)典例題:求1+2+3+4+5+……+100#include<stdio.h>intmain(void)inti,sum;sum=0;〃給sumー個(gè)初值for(i=i;i<=ioo;i++)sum=sum+i;printf("sum=%d\n",sum);return0;}は循環(huán)條營(yíng)(リ熟練使用各種緡環(huán)結(jié)構(gòu)構(gòu)造嵌套的循環(huán).(幻ア解巖客循環(huán)的摭行過(guò)程.5%brook和continue語(yǔ)旬(リア解b-k和continue語(yǔ)旬在循環(huán)機(jī)構(gòu)中的作用?(幻掌握break和continue語(yǔ)句的使用。break語(yǔ)句的使用說(shuō)明:1、只能在循環(huán)體內(nèi)和switch語(yǔ)句體內(nèi)使用break語(yǔ)句。2、當(dāng)break出現(xiàn)在循環(huán)體中的switch語(yǔ)句體內(nèi)時(shí),其作用只是跳出該switch與具體,并不能中止循環(huán)體的進(jìn)行。若要強(qiáng)行中止循環(huán)體的進(jìn)行,可以在循環(huán)體中,但并不在switch語(yǔ)句中設(shè)置break語(yǔ)句,滿足條件則跳出本層循環(huán)體。continue語(yǔ)句:continue語(yǔ)句的作用是跳過(guò)本次循環(huán)體中余下尚未執(zhí)行的語(yǔ)句,立刻進(jìn)行下一次的循環(huán)條件的判定,可以理解為僅結(jié)束本次循環(huán)。注意:執(zhí)行continue語(yǔ)句并沒(méi)有使得整個(gè)循環(huán)終止。在while和do-while循環(huán)中,continue語(yǔ)句使得程序直接跳到循環(huán)控制條件的測(cè)試部分,然后決定循環(huán)是否繼續(xù)進(jìn)行。在for循環(huán)中,遇到continue語(yǔ)句時(shí),跳過(guò)循環(huán)體中余下的語(yǔ)句,而是對(duì)for語(yǔ)句中的表達(dá)式3進(jìn)行求職,然后進(jìn)行表達(dá)式2的測(cè)試,最后根據(jù)表達(dá)式2的值來(lái)決定for循環(huán)是否執(zhí)行。在循環(huán)體內(nèi),不論continue是作為何種語(yǔ)句中的語(yǔ)句成分,都將按上述功能執(zhí)行,這點(diǎn)與break語(yǔ)句不同。第厶*,生符型裁謂I、字符常量和変量(リア解C語(yǔ)言中字符常量代表,SCII字符集中的ー個(gè)字符.記住空格字符、字倒心字圖0'換行、數(shù)字〇的MCII鶻的値。(幻正確表示〇語(yǔ)言的字袴常量.(S)正確表示〇語(yǔ)言中的特律字符常量一輯義字符。(4)正確定義字符変量。字符常?:C語(yǔ)言中,ー個(gè)字符常量代表ASCII字符集中的ー個(gè)字符,在程序中用單引號(hào)把ー個(gè)字符括起來(lái)作為字符常量。例如字母A,在程序中寫(xiě)成‘A‘。說(shuō)明:1、單引號(hào)中的大寫(xiě)字母和小寫(xiě)字母代表不同的字符常量。2、單引號(hào)中的空格,也是一個(gè)字符常量,但不能寫(xiě)成“連續(xù)的兩個(gè)單引號(hào)b3、字符常量只能包含一個(gè)字符常量。4、字符常量只能用單引號(hào)括起來(lái),不能用雙引號(hào)括起來(lái)。5、字符常量在系統(tǒng)中占有一個(gè)字節(jié),存放的是字符的ASCI!碼值。字符十進(jìn)制二進(jìn)制ハ進(jìn)制十六進(jìn)制A65100000110141a97110000114161Space3210000040200481100006030轉(zhuǎn)義字符常量:轉(zhuǎn)義字符又稱反斜杠字符,用來(lái)代表某ー個(gè)特定的ASCII碼字符,這些字符常量必須括在單引號(hào)內(nèi)。字符形式功能\n回車(chē)換行\(zhòng)t橫向跳若干格(代表“Tab”鍵)\v豎向跳格V回車(chē)符\f換頁(yè)符\b退格符(代表“Backspace"鍵)\\反斜杠字符ヤV單引號(hào)(撇號(hào))字符\"雙引號(hào)字符'ddd三位ハ進(jìn)制數(shù)代表的ー個(gè)ASCII字符Uhh二位十六進(jìn)制數(shù)代表的ー個(gè)ASCII字符\O空值,其ASCII碼值為〇注意:1、轉(zhuǎn)義字符常量,如‘'n',''101','\141’只表示一個(gè)字符。2、反斜杠的ハ進(jìn)制數(shù)可以不用〇開(kāi)頭。也即在ー對(duì)單引號(hào)內(nèi)可以用反斜杠后跟ー個(gè)ハ進(jìn)制數(shù)來(lái)表示ー個(gè)ASCII字符。3、反斜杠后的十六進(jìn)制數(shù)只可以由小寫(xiě)字母x開(kāi)頭,不允許用大寫(xiě)字母X,也不能用Ox開(kāi)頭字符串常量:字符串常量是由雙弓I號(hào)括起來(lái)的ー串字符。在printf和scanf中的“%d%d”也是字符串常量。在C語(yǔ)言中,系統(tǒng)在每個(gè)字符串的最后自動(dòng)加入一個(gè)字符’、?!鳛樽址慕Y(jié)束標(biāo)志。兩個(gè)連續(xù)的雙引號(hào)""是ー個(gè)字符串常量,稱為“空串”,但要占ー個(gè)字節(jié)的存儲(chǔ)空間來(lái)存放‘'〇、品字符數(shù)據(jù)的基本運(yùn)算(リ字?大小寫(xiě)之間的轉(zhuǎn)換.(幻通過(guò)對(duì)ー個(gè)字圖加或減ー個(gè)整數(shù)聴換成另一個(gè)字圖.(S)把+IU內(nèi)的整斂轉(zhuǎn)換成対應(yīng)的數(shù)字字符.(4)杷歡字字將轉(zhuǎn)換成對(duì)應(yīng)的整數(shù).(5)判斷ー個(gè)字符畫(huà)量的值是否為某個(gè)指定的李圖.(6)判斷ー個(gè)字符変量的値是否為數(shù)字字符.(7)判斷ー個(gè)字符變量的值是否為大寫(xiě)字圖或者小寫(xiě)字圖。字符變量:C語(yǔ)言中,字符變量用關(guān)鍵字char進(jìn)行定義,在定義的同時(shí)可以賦初值。字符變量在內(nèi)存中占一個(gè)字節(jié),可以存放ASCI!字符集中的任意字符。當(dāng)把字符放在字符變量中時(shí),字符變量中的值就是該字符的ASCII代碼值,所以字符變量可以當(dāng)作整型變量來(lái)處理。程序舉例:1、輸出26個(gè)大寫(xiě)字母和它們的ASCII,每行輸出兩組數(shù)據(jù)。#include<stdio.h>intmain(void)(charch;inti;for(i=0;i<26;i++)(ch=i+65;if(i%2==0)printf(H\nH);printf("c=%cASCII=%d”,ch,ch);)putchar('\n');return0;}2、將輸入的小寫(xiě)的字母變?yōu)榇髮?xiě)字母。#include<stdio.h>intmain(void)charc;while((c=getchar())!=,n,)(if(c>='a'&&c<='z')c=c-'a'+*A';putchar(c);}putchar('\n');return0;}3、把ー串密碼翻譯成正文,密碼以字符@結(jié)束。(1)如果是字母,則將字母翻譯成該字母的下ー個(gè)字母。(2)如果是字母Z,則翻譯成字母A。(3)無(wú)論大小寫(xiě)字母都翻譯成小寫(xiě)字母。(4)其他字符一律照原樣翻譯。#include<stdio.h>#include<ctype.h>intmain(void)charc;c=getchar();while(c!=*@')(if(isalpha(c))(c=tolower(c);c=(c-'a'+1)%26+,a';}putchar(c);c=getchar();}printfC'Nn");return0;)S、字符數(shù)熱的輸入和輸出(I)通過(guò)print?盛數(shù)輸出字符數(shù)據(jù)以験對(duì)應(yīng)的MCI!碣.(幻通過(guò)/can(崩數(shù)輸入字符題據(jù)?髏在交叉輸入舒適數(shù)擢和字符數(shù)擢時(shí)得到正確的輸入結(jié)果.(S)通過(guò)pulchar嬴藏輸出字符數(shù)據(jù).(4)通過(guò)9etch?r盛數(shù)輸入字符數(shù)據(jù).在調(diào)用輸入輸出函數(shù)時(shí),必須在文件開(kāi)頭出現(xiàn)包含頭文件stdio.h的命令行。#include<stdio.h>用printf函數(shù)輸出字符時(shí)只需使用格式說(shuō)明%c。用scanf函數(shù)輸出字符時(shí)也要使用格式說(shuō)明%c。putchai?函數(shù)用于輸出字符,其調(diào)用形式的語(yǔ)句:putchar(ch);莫中ch可以是字符常量或是字符變量。getchar函數(shù)用于輸入字符,其調(diào)用形式的語(yǔ)句:ch=getchar();,getchar后面的括號(hào)里沒(méi)有參數(shù),但這對(duì)圓括號(hào)不可缺少,getchar()函數(shù)從終端讀入一個(gè)字符作為函數(shù)值。其調(diào)用形式把讀入的ー個(gè)字符賦給變量cho在輸入時(shí),空格,回車(chē)符都將作為字符讀入,而且只有在用戶敲入Enter鍵時(shí),讀入オ開(kāi)始執(zhí)行。心用于字符數(shù)據(jù)的基本贏數(shù):ア解用于字符數(shù)據(jù)的基本盛數(shù),如i/olpho?i/di9ihi//paee.i/lower*i/upper.isalphaintisalpha(intch);;檢查ch是否為字母是,返回1;否,返回〇isxdigitintisxdigit(intch);檢查ch是否為十六進(jìn)制數(shù)字是,返回1;否,返回〇islowerintislower(intch);;檢查ch是否為小寫(xiě)字母是,返回1;否,返回〇isspaceintisspace(intch);;檢查ch是否為空格、制表或換行符是,返回1;否,返回〇isupperintisupper(intch);;檢查ch是否為大寫(xiě)字母是,返回1;否,返回〇5、字符處理的有關(guān)算法(I)通過(guò)循環(huán)不斷輸入字符,嘅國(guó)車(chē)戢,指定字符結(jié)束輸入?(2)統(tǒng)計(jì)輸入字符或某個(gè)字符的個(gè)數(shù)。(S)杷輸入的若干數(shù)字字符轉(zhuǎn)換為ー個(gè)整載.(4)把輸入的整數(shù)按高位到低位或相反的順序逐位著換為對(duì)應(yīng)的歡字字符.(5)按一定規(guī)律輸出簡(jiǎn)單的字符圖形。(6)按指定規(guī)律對(duì)輸入的字管遞行轉(zhuǎn)換或譯碼.第セ?.■あ蟻I,常用座函數(shù)(I)掌握常用屋應(yīng)數(shù)的調(diào)用方法,如數(shù)學(xué)函數(shù)中的。bハfab/,pom、,q心,in、e。,等函數(shù)的調(diào)用。(幻掌握在其他章節(jié)中有關(guān)的庫(kù)盛數(shù)?見(jiàn)附錄5調(diào)用C語(yǔ)言標(biāo)準(zhǔn)函數(shù)庫(kù)時(shí)要求的include命令行:include命令行必須以#號(hào)開(kāi)頭,系統(tǒng)提供的文件以.h作為頭文件的后綴,文件名用ー對(duì)雙引號(hào)"”或一對(duì)尖括號(hào)0括起來(lái)。注意:include命令不是C語(yǔ)言的語(yǔ)句。因此不能再句末加分號(hào)!。標(biāo)準(zhǔn)庫(kù)函數(shù)的調(diào)用形式:函數(shù)名(步數(shù)表)在C語(yǔ)言中,函數(shù)調(diào)用形式有兩種:(1)出現(xiàn)在表達(dá)式中。(2)作為獨(dú)立語(yǔ)句完成某種操作。2、用戶自定義函歡(I)掌握正確定義和說(shuō)明語(yǔ)數(shù)的方法I)正確定義盛數(shù)值的類型1)ア解函數(shù)名的取名規(guī)則I)橇緡應(yīng)數(shù)的功能,正確確定形參的個(gè)數(shù)和類型,并正確定義形參の梱據(jù)語(yǔ)數(shù)的功能,正確定義盛數(shù)體5)正確使用return語(yǔ)旬返,函數(shù)值6)掌握對(duì)覇數(shù)透行說(shuō)明的方法(幻掌握盛髄的正確調(diào)用〇篠調(diào)用盛數(shù)時(shí),謝敬名密須與所定義函數(shù)楣同?)從表達(dá)式中調(diào)用盛數(shù)J)以語(yǔ)旬方式調(diào)用語(yǔ)數(shù)4)盛髄ふ須說(shuō)明成定義在前,調(diào)用を后函數(shù)的定義的語(yǔ)法:1、C語(yǔ)言函數(shù)的一般定義如下:函數(shù)返回值類型名函數(shù)名(類型名形式參數(shù)1,類型名形式多數(shù)2 )廣函數(shù)首部?/說(shuō)明部分ド函數(shù)體?/12、函數(shù)名稱和用戶參數(shù)都是由用戶命名的合法標(biāo)識(shí)符。在同一函數(shù)中,函數(shù)名必須唯-,形參名只要在同一函數(shù)中唯一即可,可以與其他函數(shù)中的變量同名。3、C語(yǔ)言規(guī)定,不能在函數(shù)的內(nèi)部定義函數(shù)。4、若在函數(shù)的首部省略了返回值的類型名,把函數(shù)首部寫(xiě)成:函數(shù)名(類型名形式步數(shù)1,類型名形式承數(shù)2,類型名.ノ,則默認(rèn)函數(shù)返回值的類型為int類型。5、除了返回值為int類型的函數(shù)外,函數(shù)必須先定義或說(shuō)明后調(diào)用。6、若函數(shù)只是用于某種操作,沒(méi)有函數(shù)值返回,則必須把函數(shù)定義成void類型。函數(shù)的返回值:函數(shù)的值通過(guò)return語(yǔ)句返回1return語(yǔ)句形式丁etum羨達(dá)式或return/表迖式上return語(yǔ)句中表達(dá)式的值,就是所求函數(shù)的值。此表達(dá)式的值的類型必須與函數(shù)首部所說(shuō)明的類型一致。若類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換。當(dāng)程序執(zhí)行到return時(shí),程序的流程就會(huì)返回到調(diào)用函數(shù)的地方(推出調(diào)用函數(shù)),并帶回函數(shù)值。在同一個(gè)函數(shù)內(nèi),可以根據(jù)需要,在多處出現(xiàn)return語(yǔ)句,return語(yǔ)句只能執(zhí)行ー次。return語(yǔ)句也可以不含表達(dá)式,這是必須定義函數(shù)為void類型,它的作用只是使流程返回調(diào)用函數(shù),并沒(méi)有確定的函數(shù)值。函數(shù)體內(nèi)可以沒(méi)有return語(yǔ)句,這時(shí)也必須定義函數(shù)為void類型,程序的流程就一直執(zhí)行到函數(shù)末尾的“}”,然后就返回調(diào)用函數(shù),也沒(méi)有函數(shù)值帶回。函數(shù)的一般調(diào)用形式:函數(shù)名(實(shí)在參數(shù)表),實(shí)在參數(shù)(實(shí)參)多于ー個(gè)時(shí),各個(gè)實(shí)參之間用逗號(hào)隔開(kāi)。實(shí)參的個(gè)數(shù)必須與所調(diào)函數(shù)中的形參相同,類型ーー對(duì)應(yīng)匹配。若函數(shù)無(wú)形參,調(diào)用形式為:函數(shù)名(ノ,函數(shù)名后的ー對(duì)圓括號(hào)不可缺少。一般情況下,可以兩種方式調(diào)用函數(shù):(1)當(dāng)所調(diào)用的函數(shù)用于求出某個(gè)值時(shí),函數(shù)的調(diào)用可作為表達(dá)式出現(xiàn)在允許表達(dá)式出現(xiàn)的任何地方。(2)C語(yǔ)言中的函數(shù)可以僅進(jìn)行某些操作而不返回函數(shù)值,這時(shí)函數(shù)的調(diào)用可作為一條獨(dú)立的語(yǔ)句。如:函數(shù)名(實(shí)在參數(shù)表);(注意末尾分號(hào))函數(shù)調(diào)用時(shí)的語(yǔ)法要求:(1)調(diào)用函數(shù)時(shí),函數(shù)名必須與所調(diào)用的函數(shù)名字完全一致。(2)實(shí)在參數(shù)的個(gè)數(shù)必須與形式參數(shù)的個(gè)數(shù)一直。實(shí)參可以是表達(dá)式,在類型上應(yīng)按位置與形參ーー對(duì)應(yīng)匹配。如果類型不匹配,C編譯程序按賦值兼容的規(guī)則進(jìn)行轉(zhuǎn)換。若實(shí)參與形參的類型不能賦值兼容,通常不給出出錯(cuò)信息,且程序仍然執(zhí)行,只是不會(huì)得到正確的結(jié)果。因此應(yīng)該特別注意實(shí)參與形參的類型匹配。(3)C語(yǔ)言規(guī)定:函數(shù)必須先定義,后調(diào)用(函數(shù)的返回值類型為int或char時(shí)除外卜如果被調(diào)用的函數(shù)的返回值為int或char類型,則被調(diào)用的函數(shù)的定義也可以放在調(diào)用的位置之后。(4)C程序中,函數(shù)可以直接或間接的自己調(diào)自己,稱為遞歸調(diào)用。函數(shù)的說(shuō)明:在C語(yǔ)言中,除了主函數(shù)外,對(duì)于用戶定義的函數(shù)遵循“先定義,后使用的規(guī)則。函數(shù)的原型說(shuō)明形式:類型名函數(shù)名(參數(shù)類型1,參數(shù)類型2,……)或類型名函數(shù)名(參數(shù)類型1弁數(shù)名1,參數(shù)類型2參數(shù)名2 )函數(shù)說(shuō)明的位置:當(dāng)在所有函數(shù)的外部,在調(diào)用之前說(shuō)明函數(shù)時(shí),在對(duì)函數(shù)說(shuō)明的語(yǔ)句后面所有位置上都可以對(duì)該函數(shù)進(jìn)行調(diào)用。函數(shù)說(shuō)明也可以放在調(diào)用函數(shù)內(nèi)的說(shuō)明部分。ハ掌握調(diào)用贏微和被調(diào)用盛數(shù)之間實(shí)參和形參的關(guān)系和徽據(jù)傳遞規(guī)則。4、ア解盛散的摭行過(guò)程.C語(yǔ)言中,調(diào)用函數(shù)和被調(diào)用函數(shù)之間的數(shù)據(jù)傳遞可以通過(guò)三種方式傳遞:1、實(shí)參和形參之間進(jìn)行數(shù)據(jù)傳遞。2、通過(guò)return語(yǔ)句把函數(shù)值返回給調(diào)用函數(shù)。3、通過(guò)全局變量。不提倡使用。C語(yǔ)言中,數(shù)據(jù)只能從實(shí)參單向傳遞給形參,稱為“按值”傳遞。程序舉例:1,利用函數(shù)isprime(inta),來(lái)判斷變量a是否為素?cái)?shù)。#include<stdio.h>intisprime(int);intx;printfC'Enterainteger:H);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;)2、驗(yàn)證任意偶數(shù)為兩個(gè)素?cái)?shù)之和,并輸出這兩個(gè)素?cái)?shù)。#include<stdio.h>intisprime(int);voideven(int);inta;printf(*'Enteraevennumber");scanf("%d",&a);if(a%2==0)even(a);elseprintf("The%disn'tevennumber",a);}voideven(intx)(inti;for(i=2;i<=x/2;i++)if(isprime(i))if(isprime(x-i))(printf("%d=%d+%d\n",x,i,x-i);})intisprime(inta)(inti;for(i=2;i<=a/2;i++)if(a%i==O)return0;return1;)3、編寫(xiě)函數(shù)sum(inta)用以求ENo/。)和數(shù)作為函數(shù)值返回,其中z'(x)=%2+l#include<stdio.h>intsum(int);intf(int);intmain()(inta,b;printf(HEnteraintegernumber:**);scanf(**%d**,&a);b=sum(a);printf(*'a-%db=%d\n*',a,b);}intsum(n)(intx,s=0;for(x=0;x<=n;x++)s+=f(x);returns;}intf(intx)(returnx*x+1;}4、已知梯形法求函數(shù)f(x)的定積分的近似值公式:s=hx改普+どこ1人。+ix九),此處a是積分下限,b是積分上限,n是積分區(qū)間分割數(shù),h=|一|,n越大,所求精度越高。用梯形法求sinx在區(qū)間[0,1.5]上的定積分,n值選100I也即求s=jsinxdx,(a=0,6=1.5)。#include<stdio.h>#include<math.h>doubleinteg(doublea,doubleb)(doubles,x,h;intn=100,i;h=fabs(b-a)/n;s=(sin(a)+sin(b))/2.0;for(i=1;i<=n-1;i++)(x=a+i*h;s+=sin(x);s*=h;returns;}main()(doubles;s=integ(0.0,1.5);printf(Hs=%f\nn,s);)5、編寫(xiě)函數(shù)myupper(ch),把ch中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母作為函數(shù)值返回,其他字符不變。主函數(shù)中不斷輸入字符,以“@”結(jié)束輸入,同時(shí)不斷輸出結(jié)果。#include<stdio.h>#include<ctype.h>charmyupper(charch)(if(ch>=,a,&&ch<='z')ch-=32;returnch;)intmain()charc;while((c=getchar())!='@,)c=myupper(c);putchar(c);)}6、編寫(xiě)函數(shù)統(tǒng)計(jì)輸入字符的個(gè)數(shù),用“@”字符結(jié)束輸入。#include<stdio.h>longcountch(); //countch的說(shuō)明語(yǔ)句intmain()(longn;n=countch();printf("n=%ld\nM,n);)longcountch()(longcn;for(cn=0;getchar()!-@,;cn++);returncn;}7、編寫(xiě)函數(shù)統(tǒng)計(jì)文本中單詞的個(gè)數(shù),單詞之間用空格符、換行符、跳格符隔開(kāi),用“@”結(jié)束輸入。#include<stdio.h>#defineIN1#defineOUT0intcountword();main()(intn;n=countword();printf("n=%d\nn,n);)intcountword()(intc,nw,state;state=OUT;nw=0;while((c=getchar())!-@')(jf(c==**||c=='\n'||c==,\t,)state=OUT;elseif(state==OUT)state=IN;nw++;})returnnw;}第,,*:地徒和招材I、變量和変量的岫址,理解程序中“変量”的概念,杷変量與地址聯(lián)系起來(lái)。變?實(shí)質(zhì)上代表了內(nèi)存中的某個(gè)存儲(chǔ)單元。計(jì)算機(jī)內(nèi)存是以字節(jié)為單位的一片連續(xù)的存儲(chǔ)空間每一個(gè)字節(jié)都有一個(gè)編號(hào)這個(gè)編號(hào)稱為內(nèi)存的地址。計(jì)算機(jī)內(nèi)存的空間是連續(xù)的,那么地址也是連續(xù)的。內(nèi)存的地址用二進(jìn)制數(shù)來(lái)表示。若在程序中定義了一個(gè)變量,c編譯器就會(huì)根據(jù)定義變量的類型,為其分配一定字節(jié)數(shù)(在VC++6.0中char變量占ー個(gè)字節(jié),指針變量占4個(gè)字節(jié))一般情況下,我們?cè)诔绦蛑兄恍柚赋鲎兞棵?無(wú)需知道每個(gè)變量在內(nèi)存中的具體地址。每個(gè)變量與具體地址的聯(lián)系由C編譯系統(tǒng)來(lái)完成。程序中我們對(duì)變量進(jìn)行存取操作,實(shí)際上也就是對(duì)某個(gè)地址的存儲(chǔ)單元進(jìn)行操作,這種直接按變量的地址存取變量的方式稱為“直接存取”方式。在C語(yǔ)言中,還可以定義ー種特殊的變量,這種變量只是用來(lái)存取內(nèi)存地址的。若定義ー個(gè)變量p,它有自己的地址,若將變量a內(nèi)存地址放到變量p中,這時(shí)若要訪問(wèn)a所代表的村屬單元,可以先找到變量p的地址,從中取出a的地址,然后再存取變量a的值。這種存取方式稱為“間接存取”方式。這種用來(lái)存放地址的變量p稱為“指針變量’:在C語(yǔ)言中,指針被廣泛使用,它和數(shù)組、字符串、函數(shù)間數(shù)據(jù)的傳遞等有密不可分的聯(lián)系。在某些場(chǎng)合,指針是使運(yùn)算得以進(jìn)行的唯一途徑,同時(shí)指針的運(yùn)用可以使程序代碼更簡(jiǎn)潔,效率更高。但若指針的概念不清,以致于濫用,將大大降低程序的可讀性。如果指針使用不當(dāng),將會(huì)使指針指向意料不到的地方,致使程序失控,嚴(yán)重的將導(dǎo)致系統(tǒng)崩潰。因此,必須正確理解指針的概念,正確的使用指針是十分重要的。2、指針変量(I)変量和變量的岫址。リ正確定義指計(jì)変量.2)建立指針基類型的槪念,何括:を指針変量定義會(huì)甸中的類型每確定所定義指針變量的基類型;指針変量基類型決定其可。指向的変量的類型;指針変量基類型決定指針運(yùn)算的結(jié)果。(幻正確給指針変量感值.(S)掌握對(duì)指針變量的操作〇正確使用間址運(yùn)算符(*)?若指針變量P巳正確定義幷賺地址值,ア解?P出現(xiàn)在賺值號(hào)左邊和右邊時(shí)的不同含義.?)建立“移動(dòng)”的襯念,正確對(duì)指針進(jìn)行“移動(dòng)”操作?J)掌握兩個(gè)指針変量之間的超減運(yùn)算.4)掌握指針變量之間的比較(關(guān)系)運(yùn)算.定義指針的一般形式:類81名*指針變?名1,?指針變一名2 ;例如:int*pi,*pj;其中,pi、pj是用戶標(biāo)識(shí)符,在每個(gè)變量前的?號(hào)是說(shuō)明符,用來(lái)說(shuō)明變量是指針變量。變量前的?號(hào)不可以省略。!nt是類型名,在這里,說(shuō)明了pi和pj是兩個(gè)指向整型變量的指針,也就是說(shuō)pi和pj中只能存放int類型變量的地址,這時(shí)我們稱int是指針變量pi和pj的基類型。給指針賦地址值:1、通過(guò)地址運(yùn)算符(&)獲得地址值&為單目運(yùn)算符,它是用來(lái)求出運(yùn)算對(duì)象的地址。若:intk=1,*q;q=&k; 1 >這時(shí)就把變量k的地址賦予給了qo如圖所示,也可以說(shuō)q指向了ko求地址運(yùn)算符&只能應(yīng)用于變量和數(shù)組元素,不可以用于表達(dá)式、常量或者被說(shuō)明為register的變量。因此例如表達(dá)式q=&(k+1)是錯(cuò)誤的。另外,&必須放在運(yùn)算對(duì)象的左邊,而且運(yùn)算對(duì)象的類型必須與指針變量的基類型相同。2、通過(guò)指針變量獲得地址值可以通過(guò)賦值運(yùn)算,把一個(gè)指針變量中的地址值賦給另一個(gè)指針變量,從而使兩個(gè)指針指向同一地址。3、通過(guò)標(biāo)準(zhǔn)函數(shù)獲得地址值可以調(diào)用庫(kù)函數(shù)malloc在內(nèi)存中開(kāi)辟動(dòng)態(tài)存儲(chǔ)單元。,并把開(kāi)辟的動(dòng)態(tài)存儲(chǔ)單元的地址賦給指針變量。給指針變量賦“空”值除了給指針變量賦地址值外,還可以給指針變量賦NULL值。其中,NULL是在stdio.h頭文件中定義的預(yù)定義符,因此在使用NULL時(shí),一定要有預(yù)定義行:include<stdio.h>0NULL的代碼值為〇,所以p=UNLL:等價(jià)于p=へ?!?或p=0J。但是指針p不是指向地址為〇的存儲(chǔ)單元,而是具有一定的確定值——“空’:企圖通過(guò)ー個(gè)空指針去訪問(wèn)ー個(gè)存儲(chǔ)單元時(shí),將會(huì)得到ー個(gè)出錯(cuò)信息。對(duì)指針變量的操作:1、通過(guò)指針來(lái)引用ー個(gè)存儲(chǔ)單元:C語(yǔ)言提供了一個(gè)稱作“間接訪問(wèn)運(yùn)算符‘(也稱間址運(yùn)算符)的單目運(yùn)算符E當(dāng)指針變量中存放了一個(gè)確切的地址值時(shí),就可以用“間接訪問(wèn)運(yùn)算符”通過(guò)指針來(lái)引用該地址的存儲(chǔ)單元。注意:在表達(dá)式++*p中,++和?運(yùn)算優(yōu)先級(jí)別相同,但是是自右至左的結(jié)合性,因此++*p相當(dāng)于++(*pb而表達(dá)式(*p)++中,ー對(duì)括號(hào)不能少。而?P++不是使P存儲(chǔ)單元中的值增加1,而是移動(dòng)了指針。例題:利用指針指向兩個(gè)變量,通過(guò)指針運(yùn)算選出值小的那個(gè)數(shù)。#include<stdio.h>intmain()(inta,b,min,*pa,*pb,*pmin;pa=&a;pb=&b;pmin=&min;scanf("%d%d”,pa,pb);printf(Ha=%db=%d\n",a,b);*pmin=*pa;if(*pa>*pb)*pmin=*pb;printf(,,min=%d\n",min);return0;)2、指針移動(dòng):所謂指針移動(dòng)就是對(duì)指針變量加上或減去ー個(gè)整數(shù),或通過(guò)賦值運(yùn)算,是指針變量指向相鄰的存儲(chǔ)單元。因此,只有當(dāng)指針指向ー串連續(xù)的存儲(chǔ)單元時(shí),指針的移動(dòng)才有意義。在對(duì)指針進(jìn)行加減運(yùn)算時(shí),數(shù)字“1”不代表十進(jìn)制整數(shù)“1”,而是ー個(gè)存儲(chǔ)單元長(zhǎng)度。至于1個(gè)長(zhǎng)度占多少字節(jié)的存儲(chǔ)空間,則視指針的基類型而定。3、指針比較:在關(guān)系表達(dá)式中可以對(duì)兩個(gè)指針進(jìn)行比較。通常兩個(gè)或多個(gè)指針指向同一目標(biāo)(如ー連串的存儲(chǔ)單元)時(shí)比較オ有意義。簡(jiǎn)單的程序舉例:#include<stdio.h>intmain(void)(intnumber=0; /*Avariableoftypeintinitializedto07int*pnumber=NULL;/*Apointerthatcanpointtotypeint7number=10;printf("number'saddress:%p\n",&number); IIOutputtheaddressprintf("number'svalue:%d\n\n",number); IIOutputthevaluepnumber=&number; //Storetheaddressofnumberinpnumberprintf(npnumber,saddress:%p\nH,(void*)&pnumber);//Outputtheaddressprintf(,,pnumber,ssize:%dbytes\n",sizeof(pnumber));//Outputthesizeprintf(,,pnumber,svalue:%p\n",pnumber); //Outputthevalue(anaddress)printfC'valuepointedto:%d\nM,*pnumber); //Valueattheaddressreturn0;}程序說(shuō)明:首先聲明一個(gè)int變量和指針:intnumber=0;int*pnumber=NULL;指針pointer是int類型的指針。聲明之后,在number中存儲(chǔ)值10,然后用以下語(yǔ)句輸出地址和值:number=10;printf("number'saddress:%p\n",&number); IIOutputtheaddressprintf("number'svalue:%d\n\n",number); //Outputthevalue要輸出number的地址,應(yīng)使用輸出格式說(shuō)明符%p,它以十六進(jìn)制輸出的格式地址。下一條語(yǔ)句使用尋址運(yùn)算符&獲取number的地址,將該地址存儲(chǔ)到pnumber中:pnumber=&number;注意:在pnumber只能存儲(chǔ)地址值。▲接下來(lái)有4個(gè)printf()語(yǔ)句,分別輸出的是:pnumber的地址(pnumber所占內(nèi)存位置的第一個(gè)字節(jié));pnumber所占的字節(jié)數(shù);存儲(chǔ)在pnumber中的值(也即number的存儲(chǔ)地址);punmber所含地址中存儲(chǔ)的值(也即存儲(chǔ)在number中的值卜printf("pnumber'saddress:%p\n",(void*)&pnumber);//Outputtheaddressprintf("pnumber'ssize:%dbytes\n",sizeof(pnumber));//Outputthesizeprintf("pnumber'svalue:%p\n",pnumber); //Outputthevalue(anaddress)printf("valuepointedto:%d\n",*pnumber); //Valueattheaddress指向常量的指針:聲明指針時(shí),可以用const關(guān)鍵字指定,該指針指向的值不能改變。例如:longvalue=9999L;constlong*pvalue=&value;把value指向的值聲明為const,所以編譯器會(huì)檢查是否有語(yǔ)句試圖修改pvalue指向的值,并將這些語(yǔ)句標(biāo)記為錯(cuò)誤,pvalue指向的值不可以被改變,但可以對(duì)value進(jìn)行操作。改變pvalue指向的值,但不能使用pvalue指針做這個(gè)改變。當(dāng)然指針本身不是常量,所以可以仍然改變它指向的值:longnumber=8888L;pvalue=&number;這會(huì)改變指向number的pvalue中的地址,仍然不能用指針改變它指向的值,可以改變指針中存儲(chǔ)的地址,但不允許使用指針改變它指向的值。常?指針:在指針聲明中使用const關(guān)鍵字可以使指針中存儲(chǔ)的地址不能被改變。例如:intcount=43;int*constpcount=&count;第二條語(yǔ)句聲明并初始化了pcount,指定指針存儲(chǔ)的地址不能被改變。編譯器會(huì)檢查是否有代碼無(wú)意中把指針指向其他地方。指針的命名:由于需要編寫(xiě)程序越來(lái)越大,指針的命名變得相當(dāng)重要。一般的,指針以p開(kāi)頭,加上變量名。ハ嬴數(shù)之間艙址的傳遞(リ掌握通過(guò)形蓼指針在沿髄之間的數(shù)擢傳遞〇正確運(yùn)用間址運(yùn)算符(*)引用調(diào)用函數(shù)中的変量的值.2)正確運(yùn)用間址運(yùn)算符(*)改変調(diào)用期數(shù)中変量的值.S)建立正確的“接値’‘傳遞的觀念一當(dāng)把岫址值作為實(shí)參時(shí),實(shí)參和形參之間仍遵循“接值”傳遞的規(guī)則。(幻正確定義返?值為艙址值得贏數(shù).函數(shù)之間地址值的傳遞1、形參為指針變量時(shí)實(shí)參和形參之間的數(shù)據(jù)傳遞:若函數(shù)的形參為指針類型,調(diào)用該函數(shù)時(shí),對(duì)應(yīng)的實(shí)參必須是基類型相同的地址值或者是已指向某個(gè)存儲(chǔ)單元的指針變量。例題:編寫(xiě)函數(shù):myadd(int*a,int*b),函數(shù)中把指針a和b所指的存儲(chǔ)單元中的兩個(gè)值相加,然后將和值作為函數(shù)值返回。在主函數(shù)中輸入兩個(gè)數(shù)給變量,把變量地址作為實(shí)參,傳送給對(duì)應(yīng)形參。#include<stdio.h>intmyadd(int*a,int*b)(intsum;sum=*a+*b;returnsum;)intmain()intx,y,z;printf("Enterx,y:");scanf("%d%d",&x,&y);z=myadd(&x,&y);printf("%d+%d=%d\n",x,y1z);}2、通過(guò)傳送地址值在被調(diào)用函數(shù)中直接改變調(diào)用函數(shù)中的變■的值:到目前為止,形參值的改變并不能改變對(duì)應(yīng)實(shí)參的值,把數(shù)據(jù)從被調(diào)用函數(shù)返回到調(diào)用函數(shù)的唯一途徑是通過(guò)return語(yǔ)句返回函數(shù)值,這就限定了只能返回一個(gè)數(shù)據(jù)。通過(guò)傳遞地址值,可以在被調(diào)用中對(duì)調(diào)用函數(shù)中的變量進(jìn)行引用,這也就使得通過(guò)形參改變對(duì)應(yīng)實(shí)參的值有了可能,利用此形式就可以把兩個(gè)或兩個(gè)以上的數(shù)據(jù)從被調(diào)用函數(shù)返回到調(diào)用函數(shù)。例題:利用swap函數(shù),交換主函數(shù)中兩個(gè)變量x和y中的數(shù)據(jù)。#include<stdio.h>voidswap(int*,int*);intmain()(intx=30,y=20;printf(,,(1)x=%dy=%d\nH,x,y);swap(&x,&y);printfC'(4)x=%dy=%d\nH,x,y);voidswap(int*a,int*b)intt;printf("(2)a=%db=%d\n'*,*a,*b);t=*a;*a=*b;printf(M(3)a=%db=%d\n",*a,*b);}例題:編寫(xiě)函數(shù)。rder(inLajnLb),使調(diào)用函數(shù)中的第一個(gè)實(shí)參總是存放兩個(gè)數(shù)據(jù)中的較小的數(shù),第二個(gè)參數(shù)存放兩個(gè)數(shù)種較大的數(shù)。#include<stdio.h>voidswap(int*x1,int*x2)(intt;t=*x1;*x1=*x2;}voidorder(int*a,int*b)(if(*a>*b)swap(a,b);}intmain()intx,y;printf("Enterx,y:");scanf("%d%d",&x,&y);printf("x=%dy=%d\n",x,y);order(&x,&y);printf("x=%dy=%d\n",x,y);}3、函數(shù)返回地址值:函數(shù)值的類型不僅可以是簡(jiǎn)單的數(shù)據(jù)類型,而且可以是指針類型。例題:把主函數(shù)中變量i和j中存放較大數(shù)的那個(gè)地址作為函數(shù)值返回。#include<stdio.h>int*fun(int*,int*);intmain()(int*p,i,j;printf("Entertwonumber:");scanf("%d%d",&i,&j);p=fun(&i,&j);printf("i=%d,j=%d,*p=%d\n",i,j,*p);}int*fun(int*a,int*b)returna;returnb;}第九?「故僦I、ー維髄組(リ正確定義ー維數(shù)組?(幻掌握給ー維數(shù)組元奈臓初値的意義和方法,并ア解毎個(gè)元素所得到的初值.(S)掌握通過(guò)殲物值定義數(shù)組的大小O(4)ア解ー維數(shù)組在內(nèi)存中的存儲(chǔ)結(jié)構(gòu).(5)掌握通過(guò)數(shù)組名對(duì)ー維數(shù)組元索引用的方式.(6)理解ー維敷綢名與城址值得關(guān)系.(7)掌握求數(shù)組元素助址的方法.(8)掌握通過(guò)指針變量(或地址)弓I用ー無(wú)數(shù)組元素的各種形式。(9)掌握ー維數(shù)組名作為實(shí)參時(shí),徳調(diào)用的數(shù)對(duì)應(yīng)形參的定義形式.(I。)掌握ー維數(shù)組名作為實(shí)參時(shí),調(diào)用施敷和糠調(diào)用盛數(shù)之間數(shù)擢的傳遞。掌握在鴨週用港數(shù)中弓I用調(diào)用遴數(shù)中數(shù)組元素的方法。(")掌握歡組無(wú)素墟址作為實(shí)參時(shí),糠調(diào)用圓難對(duì)應(yīng)形參的定義形式.(12)掌握懿組元素岫址作為案參時(shí),調(diào)用謝徽和被調(diào)用函數(shù)之間歡據(jù)的傳遞?掌握行被調(diào)用盛數(shù)申正礁郡用調(diào)用盛載中數(shù)短元素筋方式?(")掌握ー維數(shù)組応用的基本算法。如對(duì)ー維數(shù)組置數(shù)、逆置、查找、播入、刪除、播停等。數(shù)組:數(shù)組是ー組數(shù)目固定,類型相同的數(shù)據(jù)項(xiàng),數(shù)組中的數(shù)據(jù)項(xiàng)稱為元素。一、ー維數(shù)組的定義和一維數(shù)組元素的引用1、一維數(shù)組的定義:當(dāng)數(shù)組中每個(gè)元素只帶有一個(gè)下標(biāo)時(shí),稱為ー維數(shù)組。C語(yǔ)言中,定義數(shù)組的語(yǔ)句一般形式:類型名數(shù)蛆名\按型常?表達(dá)式\ る例如:inta網(wǎng);在這里,ー雉數(shù)姐說(shuō)明將int是類型名,a[8]就是ー維數(shù)組說(shuō)明符。說(shuō)明:(1)定義了一個(gè)名為a的一維數(shù)組。(2)方括號(hào)中的8規(guī)定了a數(shù)組含有8個(gè)元素,它們是a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7].(3)類型名int規(guī)定了a數(shù)組中每個(gè)元素都是整型,在每個(gè)元素中存放整形數(shù)。(4)每個(gè)元素只有一個(gè)下標(biāo),C語(yǔ)言規(guī)定每個(gè)數(shù)組第一個(gè)數(shù)的下標(biāo)總為〇(稱為數(shù)組下標(biāo)的下界),因此,以上a數(shù)組中的最后ー個(gè)元素的下標(biāo)應(yīng)該是7(稱為數(shù)組下標(biāo)的上界ト(5)C編譯程序?qū)閍數(shù)組在內(nèi)存中開(kāi)辟的8個(gè)連續(xù)的存儲(chǔ)單元。每個(gè)單元都有名字,可以直接引用各存儲(chǔ)單元。2、一維數(shù)組元素的引用:引用形式:數(shù)組名[下標(biāo)表達(dá)式]。引用數(shù)組時(shí),應(yīng)該建立以下概念:(1)ー個(gè)數(shù)組元素實(shí)質(zhì)上就是ー個(gè)變量名,代表內(nèi)存中的一個(gè)存儲(chǔ)單元。ー個(gè)數(shù)組占有一串連續(xù)存儲(chǔ)單元。(2)在C語(yǔ)言中,ー個(gè)數(shù)組不能整體引用。C語(yǔ)言中,數(shù)組名中存放的是一個(gè)地址常量,它代表整個(gè)數(shù)組的首地址。(3)在引用數(shù)組元素時(shí),數(shù)組元素中下標(biāo)表達(dá)式的值必須是整數(shù),下標(biāo)表達(dá)式值得下限為0.3、ー維數(shù)組的初始化:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開(kāi)辟一串連續(xù)的存儲(chǔ)單元時(shí),這些存儲(chǔ)單元中沒(méi)有確定的值。在定義語(yǔ)句中為所定義數(shù)組的各元素賦初值:inta[8]={0,1,2,3,4,5,6,7};o所賦初值為花括號(hào)中,數(shù)值類型必須與所說(shuō)明的數(shù)值類型一致。所賦初值用逗號(hào)隔開(kāi),系統(tǒng)將按這些數(shù)值排列順序。當(dāng)所賦初值少于定義數(shù)組的元素個(gè)數(shù)時(shí),將自動(dòng)給后面的元素補(bǔ)。。當(dāng)所賦初值多于定義數(shù)組的元素個(gè)數(shù)時(shí),系統(tǒng)在編譯時(shí)給出出錯(cuò)信あ。4、通過(guò)鼠初值定義數(shù)組的大小:C語(yǔ)言規(guī)定可以通過(guò)賦初值來(lái)定義數(shù)組的大小,這時(shí)數(shù)組說(shuō)明符的ー對(duì)方括號(hào)中可以不指定數(shù)組的大小,例如:intaO={0,0,0,0,0,0,0,0}1花括號(hào)中出現(xiàn)了8個(gè)〇,隱含定義了數(shù)組a數(shù)組含有8個(gè)元素。5、ー維數(shù)組的定義和數(shù)組元素引用舉例:例題、編寫(xiě)程序,定義ー個(gè)含有30個(gè)元素的int類型數(shù)組,依次給數(shù)組元素賦奇數(shù)1、3、5 然后按每行10個(gè)數(shù)順序輸出,最后再按每行10個(gè)數(shù)逆序輸出。#include<stdio.h>#defineM30intmain()(ints[M],i,k=1;for(i=0;i<M;i++)(s[i]=k;k+=2;)printf("\nSequenceOutput:\n");for(i=0;i<M;i++)printf("%4d",s[i]);if((i+1)%10==0)printf("\n");}printf("\nlnvertOutput:\n");for(i=M-1;i>=0;i-)printf(“%3d%c”,s[i],(i%10==0)?'\nT');printf(”\n");}二、一維數(shù)組和指針1、一維數(shù)組和數(shù)組元素的地址:C語(yǔ)言中,在函數(shù)體中或在函數(shù)外部定義的數(shù)組名可以認(rèn)為是ー個(gè)存放地址值的指針變量名,其中的地址值是數(shù)組第一個(gè)元素的地址,也就是數(shù)組所占ー串連續(xù)存儲(chǔ)單元的起始地址,定義數(shù)組時(shí)的類型即是此指針變量的基類型。重要的是:這個(gè)指針變量中的地址值不可改變,也就是說(shuō),不可以給數(shù)組名重新賦值!因此,也可以認(rèn)為數(shù)組名是ー個(gè)地址常量。簡(jiǎn)單程序舉例#include<stdio.h>intmain(void)(charmultipled=*'Mystring";char*p=&multiple[O];printf("Theaddressofthefirstarrayelement:%p\n",p);p=multiple;printf("Theaddressobtainedfromthearrayname:%p\nH,multiple);return0;}程序輸出:Theaddressofthefirstarrayelement: 000000000012ff06Theaddressobtainedfromthearrayname:000000000012ff06程序說(shuō)明:可以從程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上班睡覺(jué)檢討書(shū)
- 醫(yī)生先進(jìn)事跡(13篇)
- 買(mǎi)房個(gè)人收入證明范本(20篇)
- 個(gè)人學(xué)期末工作總結(jié)
- DB12T 604-2015 應(yīng)用生物絮凝技術(shù)處理農(nóng)村生活污水操作規(guī)程
- DB12T 607-2015 智能郵件快件箱
- DB12∕T 989-2020 人參中有機(jī)磷和擬除蟲(chóng)菊酯類農(nóng)藥殘留量的測(cè)定 氣相色譜法
- 醫(yī)療器械經(jīng)營(yíng)監(jiān)督管理辦法培訓(xùn)2024
- 慢性病鑒定標(biāo)準(zhǔn)
- 高等數(shù)學(xué)教程 試卷2-答案
- (零模)徐州市2024~2025學(xué)年上學(xué)期高三期中考試 英語(yǔ)試卷(含答案)
- 動(dòng)脈瘤栓塞術(shù)術(shù)后護(hù)理
- 四川公安基礎(chǔ)知識(shí)模擬5
- 口腔牙科診所技工室工作制度
- 英語(yǔ)KET官方樣題Test1- Test 2
- 海尼曼G1內(nèi)容梳理(2)
- 液壓系統(tǒng)的課程設(shè)計(jì)說(shuō)明書(shū).doc
- 新版atstudy系統(tǒng)測(cè)試計(jì)劃
- 求異思維換個(gè)度
- 礦山改造電氣節(jié)能降耗分析
- 村級(jí)財(cái)務(wù)清理報(bào)告
評(píng)論
0/150
提交評(píng)論