學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)都會(huì)用到高等數(shù)學(xué)知識(shí)和計(jì)算機(jī)基礎(chǔ)理論知識(shí)。
使用可變參數(shù)應(yīng)該有以下步驟:
1)首先在函數(shù)里定義一個(gè)va_list型的變量壁却,這里是arg_ptr寺酪,這個(gè)變量是指向參數(shù)的指針。
2)然后用va_start宏初始化變量arg_ptr脚乡,這個(gè)宏的第二個(gè)參數(shù)是第一個(gè)可變參數(shù)的前一個(gè)參數(shù)鞍恢,是一個(gè)固定的參數(shù)。
3)然后用va_arg返回可變的參數(shù)每窖,并賦值給整數(shù)j. va_arg的第二個(gè)參數(shù)是你要返回的參數(shù)的類(lèi)型,這里是int型弦悉。
4)最后用va_end宏結(jié)束可變參數(shù)的獲取窒典。然后你就可以在函數(shù)里使用第二個(gè)參數(shù)了。如果函數(shù)有多個(gè)可變參數(shù)的稽莉,依次調(diào)用va_arg獲取各個(gè)參數(shù)瀑志。
C語(yǔ)言是一門(mén)通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯劈猪、處理低級(jí)存儲(chǔ)器昧甘、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
C語(yǔ)言程序設(shè)計(jì) 基礎(chǔ)知識(shí)點(diǎn)
1战得、&是取地址符號(hào)充边,&x表示的是x在內(nèi)存中的地址,表示把輸入的數(shù)據(jù)放到x所在的內(nèi)存單元中去常侦。
2浇冰、C程序源程序擴(kuò)展名為.c。目標(biāo)程序擴(kuò)展名為.obj聋亡≈庀埃可執(zhí)行程序的擴(kuò)展名為.exe。
3坡倔、指針用來(lái)表示某個(gè)變量在內(nèi)存儲(chǔ)器中的地址漂佩。
4、十進(jìn)制寫(xiě)法除非要寫(xiě)的整數(shù)本身就是0罪塔,否則開(kāi)頭第一個(gè)數(shù)字字符不能為0.
5投蝉、八進(jìn)制整常數(shù)必須以0開(kāi)頭,數(shù)碼取值為0-7垢袱。八進(jìn)制數(shù)通常為無(wú)符號(hào)數(shù)墓拜。
6、十六進(jìn)制數(shù)常數(shù)的前綴為0X或者0x请契。其數(shù)直碼維阿0—9咳榜,A—F或者a—f。
二進(jìn)制爽锥、八進(jìn)制涌韩、十進(jìn)制、十六進(jìn)制之間的轉(zhuǎn)換
7氯夷、字符串常量在內(nèi)存中存儲(chǔ)時(shí)有串尾標(biāo)記 ‘ \0 ’臣樱,所以字符常量占一個(gè)字節(jié)的內(nèi)存空間,而字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字符所占的字節(jié)數(shù)加1.
8腮考、可以把一個(gè)字符常量賦予一個(gè)字符變量雇毫,但不能把一個(gè)字符串常量賦予一個(gè)字符變量。C語(yǔ)言中沒(méi)有專(zhuān)門(mén)的字符串變量踩蔚。字符串如果需要存放在變量中棚放,需要使用字符型數(shù)組來(lái)存放。
9馅闽、++i與i++的區(qū)別:
n = ++i飘蚯;先加再賦值馍迄。n = i++;先賦值再加。eg:i = 1時(shí),n = ++i簇搅,n = 2,i = 2赘来;n = i++,n = 1穴店,i = 2撕捍。
int i = 5,j;
j = ++i+i++;
printf(“%d泣洞,%d”忧风,i,j); //7球凰,12
j=(++i)+(++i);
printf(“%d狮腿,%d”,i呕诉,j); //9缘厢,17
10、數(shù)據(jù)類(lèi)型轉(zhuǎn)換甩挫;double類(lèi)型最高贴硫。
11、
int m伊者,n英遭,k;
m = 15,n = 20;
k = (--m)+(--n);
printf(“k = %d亦渗,m = %d挖诸,n = %d”,k法精,m多律,n); //k = 33,m = 14搂蜓,n = 19
m = 15狼荞,n = 20;
k = (m--)+(n--);
printf(“k = %d,m = %d帮碰,n = %d”粘秆,k,m收毫,n); //k = 35攻走,m = 14,n = 19
C語(yǔ)言程序設(shè)計(jì)重點(diǎn)知識(shí)
第一章C語(yǔ)言概述
1此再、C程序的組成和形式的基本特點(diǎn)(P6-7)
(1)C程序是由函數(shù)構(gòu)成的昔搂,一個(gè)C源程序至少且僅包含一個(gè)main函數(shù),也可以包含一個(gè)main函數(shù)和若干個(gè)其他函數(shù)输拇。
(2)一個(gè)函數(shù)由兩部分組成
1函數(shù)的首部:即函數(shù)的第一行摘符,包括函數(shù)名、函數(shù)類(lèi)型策吠、函數(shù)屬性逛裤、函數(shù)參數(shù)名、參數(shù)類(lèi)型
例:intmax(intx猴抹,inty)
一個(gè)函數(shù)名后面必須跟一對(duì)圓括號(hào)带族,括號(hào)內(nèi)寫(xiě)函數(shù)的參數(shù)名及其類(lèi)型。函數(shù)可以沒(méi)有參數(shù)蟀给,如main()蝙砌。
2函數(shù)體:即函數(shù)首部下面的花括號(hào)內(nèi)的部分。如果一個(gè)函數(shù)內(nèi)有多個(gè)花括號(hào)跋理,則最外層的一對(duì)花括號(hào)為函數(shù)體的范圍择克。函數(shù)體一般包括:聲明部分、執(zhí)行部分2前普、運(yùn)行C程序的步驟及每個(gè)步驟生成文件的類(lèi)型及特點(diǎn)(P7)
第二章算法
1肚邢、算法的定義
一個(gè)程序應(yīng)包括①數(shù)據(jù)結(jié)構(gòu)即對(duì)數(shù)據(jù)的描述;②算法也就是操作步驟拭卿。計(jì)算機(jī)算法可分為兩大類(lèi):數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法骡湖。
2、算法的特性(P19)
1.有窮性记劈;
2.確定性勺鸦;
3.有零個(gè)或多個(gè)輸入;
4.有一個(gè)或多個(gè)輸出目木;
5.有效性换途。
3、描述算法的常用方法(P20-33)
1.自然語(yǔ)言刽射;
2.用流程圖表示算法军拟。
3.N—S圖
4.計(jì)算機(jī)語(yǔ)言
5.偽代碼
4、C程序算法的3種基本結(jié)構(gòu)及其共同特點(diǎn)(P24-25)
三種基本結(jié)構(gòu):
1.順序結(jié)構(gòu):最基本誓禁;
2.選擇結(jié)構(gòu):又稱(chēng)選取結(jié)構(gòu)或分支結(jié)構(gòu);
3.循環(huán)結(jié)構(gòu):又稱(chēng)重復(fù)結(jié)構(gòu)摹恰;
1當(dāng)(while)型循環(huán)辫继;
2直到(until)型循環(huán)怒见。
共同特點(diǎn):
1.只有一個(gè)入口;
2.只有一個(gè)出口姑宽;
3.結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到遣耍;
4.結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。
5炮车、結(jié)構(gòu)化程序設(shè)計(jì)的設(shè)計(jì)原則(P34)
1.自頂向下舵变;
2.逐步細(xì)化;
3.模塊化設(shè)計(jì)瘦穆;
4.結(jié)構(gòu)化編碼纪隙。
第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式
1扛或、C語(yǔ)言的基本數(shù)據(jù)類(lèi)型和構(gòu)造數(shù)據(jù)類(lèi)型(P37)
在程序中對(duì)用到所有數(shù)據(jù)都必須制定其數(shù)據(jù)類(lèi)型绵咱。數(shù)據(jù)有常量和變量之分,它們分別屬于以上這些類(lèi)型告喊。
2麸拄、字面常量和符號(hào)常量(P37-38)
在程序運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量黔姜,常量區(qū)分為整型常量和實(shí)型常量拢切,常量一般從其字面形式即可判別,這種常量稱(chēng)為字面常量或者直接常量秆吵。
用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的符號(hào)淮椰,稱(chēng)為符號(hào)常量,即以標(biāo)識(shí)符形式出現(xiàn)的常量(常量的表示用大寫(xiě)字母纳寂,變量的表示用小寫(xiě)字母)主穗,符號(hào)常量與變量不同,符號(hào)常量的值在其作用域內(nèi)部能改變毙芜,也不能再被賦值忽媒,如果再用賦值語(yǔ)句給符號(hào)常量賦值是錯(cuò)誤的。使用符號(hào)常量的好處:1.含義清楚2.在需要改變一個(gè)常量時(shí)能做到“一改全改”
3腋粥、標(biāo)識(shí)符的命名規(guī)則(P39-40)
C語(yǔ)言規(guī)定標(biāo)識(shí)符只能有字母晦雨、數(shù)字和下劃線(xiàn)3中字符組成,且第一個(gè)字符必須為字母或下劃線(xiàn)隘冲,合法的標(biāo)識(shí)符可以作為變量名闹瞧。編譯系統(tǒng)將大寫(xiě)字母和小寫(xiě)字母認(rèn)為是兩個(gè)不同的字符。變量名的長(zhǎng)度最好不要超過(guò)8個(gè)字符展辞。在C語(yǔ)言中奥邮,要求對(duì)所有用到的變量做墻紙定義,也就是“先定義,后使用”洽腺,1.凡未被事先定義的脚粟,系統(tǒng)不把它認(rèn)作變量名,這就能保證程序中變量名使用得正確蘸朋。2.每一個(gè)變量被指定為一個(gè)確定類(lèi)型珊楼,在編譯時(shí)就能為其分配響應(yīng)的存儲(chǔ)單元。3.指定每一變量數(shù)以一個(gè)類(lèi)型度液,這就便于在編譯時(shí)據(jù)此檢查在程序中要求對(duì)該變量進(jìn)行的運(yùn)算是否合法。例a%b是“求余”得到a/b的余數(shù)
4画舌、整型常量的3種表示方式堕担、整型變量的分類(lèi)及其定義方式、整型常量的類(lèi)型(P41-44)
整型常量即整常數(shù)的3種表示方式:
1.十進(jìn)制整數(shù)曲聂;
2.八進(jìn)制整數(shù)(以0開(kāi)頭)霹购;
3.十六進(jìn)制整數(shù)(以0x開(kāi)頭)。
整型變量的分類(lèi):整型變量的基本類(lèi)型符為int朋腋,根據(jù)數(shù)值的范圍將變量定義為基本整型
int齐疙、短整型shortint/short、長(zhǎng)整型longint/long在實(shí)際應(yīng)用中旭咽,變量的值常常是正的贞奋,為充分利用變量的值的范圍,可以將變量定義為“無(wú)符號(hào)/unsigned”類(lèi)型穷绵,以指定是“無(wú)符號(hào)數(shù)”轿塔,或者為“有符號(hào)/signed”。如果前無(wú)符號(hào)仲墨,默認(rèn)為有符號(hào)(signed)歸納起來(lái)勾缭,可以用一下六種整形變量:
1.有符號(hào)基本整型[signed]int
2.無(wú)符號(hào)基本整型unsignedint
3.有符號(hào)短整型[signed]short[int]
4.無(wú)符號(hào)短整型unsignedshort[int]
5.有符號(hào)長(zhǎng)整型[signed]long[int]
6.無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]
整型常量的類(lèi)型:
1.一個(gè)整數(shù),如果其值在-32768~2147483647范圍內(nèi)目养,則認(rèn)為它是int型俩由,它可以賦值給int型和longint型變量
2.一個(gè)整數(shù),如果其值超過(guò)了上述范圍癌蚁,而在-2147483648~2147483647范圍內(nèi)幻梯,則認(rèn)為它是長(zhǎng)整型,可以將它復(fù)制給一個(gè)longint型變量
3.一個(gè)整常量后面加一個(gè)字母u或U匈勋,可以認(rèn)為是unsignedint型礼旅,如123456u
4.在一個(gè)整常量后面加一個(gè)字母l或L,則認(rèn)為是longint型常量洽洁,如123l痘系、123L
5、浮點(diǎn)型常量的2種表示方式饿自、浮點(diǎn)變量的分類(lèi)及其定義方式汰翠、浮點(diǎn)常量的類(lèi)型(P45-47)浮點(diǎn)型常量的2種表示方法:浮點(diǎn)數(shù)就是實(shí)數(shù)龄坪,有兩種形式
1.十進(jìn)制小數(shù)形式。(由數(shù)字和小數(shù)點(diǎn)組成复唤,必須有小數(shù)點(diǎn))
2.指數(shù)形式健田。如123e3或123E3代表123×10.3注意字母e/E之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)佛纫,一個(gè)浮點(diǎn)數(shù)可有多種指數(shù)表示方法
浮點(diǎn)變量的分類(lèi):
1.單精度(float型):有效數(shù)字6~7
2.雙精度(double型):有效數(shù)字158~16
3.長(zhǎng)雙精度型(longdouble型):有效數(shù)字18~19
浮點(diǎn)變量的定義方式:floatx妓局,y;類(lèi)似
浮點(diǎn)常量的類(lèi)型:如果在數(shù)的后面加字母f或F(如1.65f)呈宇,編譯系統(tǒng)會(huì)把它們按單精度處理好爬。一個(gè)浮點(diǎn)型常量可以賦給一個(gè)float型、double型或longdouble型變量甥啄,根據(jù)變量類(lèi)型截取實(shí)型常量中相應(yīng)的有效位數(shù)字存炮。
例如:Floata;
A=111111.111;
由于folat型變量只能接受7位有效數(shù)字蜈漓,因此最后兩位小數(shù)不起作用穆桂。如果a改為double型,則能全部接受上述9位數(shù)字融虽,并儲(chǔ)存在變量a中享完。
6、字符常量的2種形式衣形、字符變量驼侠、字符串常量(P48-52)
字符常量的2種形式:
1.C語(yǔ)言的字符常量是用單撇號(hào)括起來(lái)的一個(gè)字符。如‘a(chǎn)’
2.常用的以“\”開(kāi)頭的特殊字符如下
字符變量:字符變量用來(lái)存放字符常量谆吴,它只能放一個(gè)字符倒源,不能存放字符串例charc1,c2句狼;c1=‘a(chǎn)’;c2=‘b’笋熬;一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。
小寫(xiě)字母的ASCII碼比它的大寫(xiě)字母ASCII碼大32腻菇,小大變?yōu)榇笮?/p>
7胳螟、變量初始化的時(shí)間(P53)
C語(yǔ)言允許在定義變量的同時(shí)使變量初始化。(inta=3筹吐;floatf=3.56糖耸;charc=‘a(chǎn)’)也可以使被定義的變量的一部分賦初值(inta,b丘薛,c=5嘉竟;)
如果對(duì)幾個(gè)變量賦予同一個(gè)初始值,應(yīng)寫(xiě)成:inta=3,b=3舍扰,c=3倦蚪;不能寫(xiě)成inta=b=c=3;初始化不是在編譯階段完成的,而是在程序運(yùn)行時(shí)執(zhí)行本函數(shù)時(shí)賦初值的边苹,相當(dāng)于有一個(gè)復(fù)制語(yǔ)句陵且。(inta=3;)
8个束、各類(lèi)型數(shù)據(jù)間的混合運(yùn)算(P54)
整型慕购、浮點(diǎn)型、字符型數(shù)據(jù)間可以混合運(yùn)算
9茬底、C語(yǔ)言的運(yùn)算符及其優(yōu)先級(jí)和結(jié)合性(P55)
特殊%脓钾,模運(yùn)算符或稱(chēng)求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù)桩警,且兩個(gè)整數(shù)相除的結(jié)果為整數(shù),如5%3為1昌妹,舍去小數(shù)部分算術(shù)運(yùn)算符的結(jié)合方向?yàn)樽宰笾劣一蜃蠼Y(jié)合性捶枢,并且先乘除后加減
10、強(qiáng)制類(lèi)型轉(zhuǎn)換(P56)(double)a飞崖;(int)(x+y)烂叔;11、自增固歪、自減運(yùn)算(P57)i++或++i
1.自增自減運(yùn)算符只能用于變量蒜鸡,不能用于常量或表達(dá)式。例
++(i-1)為錯(cuò)
2.++和—的結(jié)合方向是自右至左牢裳,例-i++合法逢防,先輸出-i再加一,(-i)++不合法
例:i=3蒲讯;a=i++;b=i++;c=i++;d=a+b+c;最終輸出d=12.
3.i+++j相當(dāng)于(i++)+j忘朝,盡可能多的自左至右
12、賦值運(yùn)算符判帮、復(fù)合賦值運(yùn)算符局嘁、賦值表達(dá)式(P59-64)賦值運(yùn)算符就是“=”
1.將浮點(diǎn)型數(shù)據(jù)(單雙精度)賦給整型變量時(shí),舍棄浮點(diǎn)數(shù)的小數(shù)部分
2.將整型數(shù)據(jù)賦給單雙精度時(shí)晦墙,數(shù)值不變悦昵,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中,如將23賦值給float就得到23.00000
3.將一個(gè)double型數(shù)據(jù)賦給float變量時(shí)晌畅,截取其前面7位有效數(shù)字但指,存放到float變量中。例:floatf;doubled=123.456789e100枚赡;f=d氓癌;就出現(xiàn)溢出錯(cuò)誤
將一個(gè)float型數(shù)據(jù)賦給double變量時(shí)候,數(shù)值不變贫橙,有效位數(shù)擴(kuò)展到16位贪婉,在內(nèi)存中以8個(gè)字節(jié)存儲(chǔ)
4.字符型數(shù)據(jù)賦給整型變量
5.int、short卢肃、long型數(shù)據(jù)賦給char變量例如inti=289疲迂;charc=‘a(chǎn)’;c=i莫湘;
6.將帶有逗號(hào)的整型數(shù)據(jù)int賦給long型變量時(shí)尤蒿,啊喲進(jìn)行符號(hào)擴(kuò)展,將整型數(shù)據(jù)16位送到long型低16位中幅垮,如果int型數(shù)為正值腰池,則long型變量的高16位補(bǔ)零;如果int型變量為負(fù)值(符號(hào)位為1)忙芒,則long型變量的高16位補(bǔ)1示弓,以保持?jǐn)?shù)值不變,反之如果將一個(gè)long型數(shù)據(jù)賦給一個(gè)int型變量呵萨,值將ong型數(shù)據(jù)中低16位原封不動(dòng)地送到整型變量(截?cái)啵?/p>
7.unsignedint型數(shù)據(jù)賦給longint型變量時(shí)奏属,不存在符號(hào)擴(kuò)展問(wèn)題
8.將非unsigned型數(shù)據(jù)賦給長(zhǎng)度相同的unsigned型變量,也是原樣賦值復(fù)合賦值運(yùn)算符:a+=3等價(jià)于a=a+3潮峦;a+=b+3等價(jià)于a+=(b+3)
9.賦值表達(dá)式一般形式《變量》《賦值運(yùn)算符》《表達(dá)式》賦值運(yùn)算符左邊的叫左值囱皿,右邊的叫右值,凡是左值都可以作為右值賦值表達(dá)式作為左值時(shí)應(yīng)加括號(hào)
賦值運(yùn)算符按照“自右至左”的結(jié)合順序(a=3*5)=4*3先執(zhí)行括號(hào)內(nèi)能的運(yùn)算忱嘹,將15賦給a嘱腥,然后執(zhí)行4*3的運(yùn)算,得12拘悦,再把12賦給a爹橱,故整個(gè)表達(dá)式的值為12賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符a+=a-=a*a先進(jìn)行右邊賦值表達(dá)式的計(jì)算,相當(dāng)于a=a-a*a將a初值帶入計(jì)算a窄做,再進(jìn)行左邊賦值表達(dá)式的計(jì)算
13愧驱、逗號(hào)運(yùn)算符及其優(yōu)先級(jí)、逗號(hào)表達(dá)式
逗號(hào)表達(dá)式一般形式表達(dá)式1椭盏,表達(dá)式2
賦值運(yùn)算符的級(jí)別高于逗號(hào)運(yùn)算符a=3*5组砚,a*4a的值為15,表達(dá)式的值為60x=(a=3掏颊,6*3)
賦值表達(dá)式糟红,將逗號(hào)表達(dá)式的值賦給x艾帐,x的值等于18x=a=3,6*3
逗號(hào)表達(dá)式盆偿,x的值為3柒爸,整個(gè)逗號(hào)表達(dá)式的值為18
第四章順序結(jié)構(gòu)程序設(shè)計(jì)
1、C語(yǔ)句的分類(lèi)(P69-71)
1事扭、控制語(yǔ)句9種
If…else…/for…/while…/do…while/continue/break/switch/goto/return
2捎稚、函數(shù)調(diào)用語(yǔ)句。函數(shù)調(diào)用語(yǔ)句由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成
printf(“456123”)
3求橄、表達(dá)式語(yǔ)句今野。表達(dá)式語(yǔ)句由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成,a=34罐农、空語(yǔ)句5条霜、復(fù)合語(yǔ)句
2、賦值語(yǔ)句(P71)If((a=b)》0)t=a;先將b的值賦給a涵亏,如果a大于0宰睡,則t=a3、putchar()气筋、getchar()函數(shù)(P73-74)
putchar函數(shù)(字符輸出函數(shù))作用是向終端輸出一個(gè)字符夹厌。其一般形式為putchar(c)
putchar函數(shù)可以在屏幕上輸出字符,也可以輸出控制字符裆悄,如putchar(‘\n’)作用是輸出一個(gè)換行符,使輸出的當(dāng)前位置移到下一行的開(kāi)頭
getchar函數(shù)(字符輸入函數(shù))的作用是從終端輸入一個(gè)字符臂聋,其一般形式為getchar()例如charc光稼;c=getchar();putchar(c);此時(shí)屏幕上將輸出c的輸入值4、printf()孩等、scanf()函數(shù)及其對(duì)應(yīng)的格式控制符(P74-86)printf格式輸出函數(shù)艾君,作用是向終端輸出若干個(gè)任意類(lèi)型的數(shù)據(jù)一般格式為printf(“格式控制”,輸出表列)例printf(“%d肄方,%c\n”冰垄,i,c)格式控制作用:
1.格式說(shuō)明(%.权她。):將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出
2.普通字符虹茶。按原樣輸出格式控制中的普通字符按原樣輸出例printf(“%d%d”,a隅要,b)printf(“a=%db=%d”蝴罪,a,b)
在第二個(gè)函數(shù)中雙引號(hào)內(nèi)的字符步清,除了兩個(gè)%d以外要门,其他的普通字符按原樣輸出虏肾,如果a,b的值分別為3欢搜,4封豪,則輸出為a=3b=4中間有空格3.格式字符:
1d格式符。%d按十進(jìn)制整數(shù)數(shù)據(jù)實(shí)際長(zhǎng)度輸出炒瘟;%md指定寬度(位數(shù))m吹埠,如果數(shù)據(jù)位數(shù)小于m,則左端補(bǔ)空格唧领;%ld長(zhǎng)整型數(shù)據(jù)2o格式符藻雌。以八進(jìn)制整數(shù)形式輸出3x格式符。以十六進(jìn)制數(shù)形式輸出
4u格式符斩个。以十進(jìn)制整數(shù)形式輸出無(wú)符號(hào)數(shù)
5c格式符胯杭。用來(lái)輸出一個(gè)字符,一個(gè)整數(shù)受啥,只要它的值在0~255之間做个,也可以用%c使之按字符形式輸出,在輸出前滚局,系統(tǒng)會(huì)將該整數(shù)作為ASCII碼轉(zhuǎn)換成相應(yīng)的字符居暖;反之,一個(gè)字符數(shù)據(jù)也可以用整數(shù)形式輸出藤肢。
6s格式符太闺。用來(lái)輸出一個(gè)字符串。%s嘁圈;%ms省骂,輸出的字符串占m列,如果字符串本身長(zhǎng)度大于m最住,則突破m限制钞澳,將字符串全部輸出,如果小于m涨缚,則左補(bǔ)空格轧粟;%-ms,如果串長(zhǎng)小于m脓魏,則在m列范圍內(nèi)兰吟,字符串向左靠,右補(bǔ)空格茂翔;%m.ns揽祥,輸出m列,但只取字符串左端n個(gè)字符檩电。這n個(gè)字符輸出在m列右側(cè)拄丰,左補(bǔ)空格府树;%-m.ns,取n個(gè)字符輸出在m列范圍的左側(cè)料按,右補(bǔ)空格奄侠,如果n》m,則m自動(dòng)取n值载矿,即保證n個(gè)字符正常輸出
7f格式符垄潮。用來(lái)輸出實(shí)數(shù)(包括單雙精度),以小數(shù)形式輸出闷盔。%f弯洗,不指定字段寬度,使整數(shù)部分全部輸出逢勾,并輸出6位小數(shù)牡整。但注意,在輸出的數(shù)字中并非全部數(shù)字都是有效數(shù)字溺拱,單精度實(shí)數(shù)的有效數(shù)字一般為7位逃贝;%m.nf,指定輸出的數(shù)據(jù)共占m列迫摔,其中有n位小數(shù)沐扳。如果數(shù)值長(zhǎng)度小于m,則左端補(bǔ)空格句占;%-m.nf與%m.nf基本相同沪摄,只是使輸出的數(shù)值向左端靠,右端補(bǔ)空格纱烘。
8e格式符杨拐。以指數(shù)形式輸出實(shí)數(shù)
9g格式符。用來(lái)輸出實(shí)數(shù)凹炸,根據(jù)數(shù)值的大小,自動(dòng)選f格式或者e格式昼弟,且不輸出無(wú)意義的零啤它。P80
注意:除了X,E舱痘,G外变骡,其他格式字符必須用小寫(xiě)字母;可以在格式控制字符串內(nèi)包含轉(zhuǎn)義字符芭逝;格式符之間可以加入修飾符塌碌;用連續(xù)兩個(gè)%來(lái)輸出%scanf(格式控制,地址表列)scanf(“%d%d%d”旬盯,&a台妆,&b翎猛,&c)
&為地址運(yùn)算符,&a指a在內(nèi)存中的地址接剩。
1.用%d%d%d輸入數(shù)據(jù)時(shí)不能用逗號(hào)做兩個(gè)數(shù)據(jù)間的分隔符可用空格
如果%d和%d之間有n個(gè)空格切厘,則輸入時(shí)對(duì)應(yīng)的位置應(yīng)該有多于n個(gè)空格來(lái)分隔
總之,%d與%d之間有什么簡(jiǎn)單符號(hào)懊缺,輸入信息時(shí)候就要將這些符號(hào)加上疫稿,或者格式控制里是a=%d,則輸入數(shù)據(jù)時(shí)候也得輸入a=某個(gè)數(shù)據(jù)
2.用%c格式輸入字符時(shí)候鹃两,空格字符和轉(zhuǎn)義字符都作為有效字符輸入例如:scanf(“%c%c%c”遗座,&c1,&c2俊扳,&c3);若輸入“a空格b空格c”則c1為a途蒋,c2為空格,c3為b拣度,正確的輸入法為“abc”字符間沒(méi)有空格
3.在輸入數(shù)據(jù)時(shí)候碎绎,遇到以下情況時(shí),認(rèn)為該數(shù)據(jù)結(jié)束①遇空格抗果,或按回車(chē)筋帖,或跳格鍵;②指定寬度結(jié)束冤馏,如%3d日麸;③遇非法輸入
第五章選擇結(jié)構(gòu)程序設(shè)計(jì)
1、關(guān)系運(yùn)算符及其優(yōu)先級(jí)和結(jié)合性逮光、關(guān)系表達(dá)式(P91-92)
優(yōu)先級(jí):等不等于低于大小等于代箭;算術(shù)運(yùn)算符》關(guān)系運(yùn)算符》賦值運(yùn)算符理解:關(guān)系表達(dá)式,表達(dá)式的值(1為真涕刚,0為假)
例:設(shè)a=3嗡综,b=2,c=1有d=a》b則d的值為1杜漠;f=a》b》c則f的值為0.
2极景、邏輯運(yùn)算符及其優(yōu)先級(jí)和結(jié)合性、邏輯表達(dá)式及其求值過(guò)程的特點(diǎn)(P91-92)邏輯運(yùn)算符與(&&)或(||)非(<蒈睢)優(yōu)先級(jí):
1非(E握痢)→與(&&)→或(||)諧音記為“飛魚(yú)火”;2邏輯運(yùn)算符中的“&&”和“||”低于關(guān)系運(yùn)算符锈至,“晨缴!”高于算術(shù)運(yùn)算符
邏輯表達(dá)式:C語(yǔ)言判斷一個(gè)量是否為真時(shí),以0代表假峡捡,以非0代表真击碗,即將一個(gè)非0的數(shù)值認(rèn)作為真筑悴。
若a=4則!a的值為0延都;4&&0||2的值為1求值過(guò)程特點(diǎn):略
3雷猪、if語(yǔ)句的三種結(jié)構(gòu)(P95-96)第一種:if(表達(dá)式)語(yǔ)句
例:if(x》y)frintf(“%d”,x);第二種:if(表達(dá)式)語(yǔ)句1else語(yǔ)句2
例:if(x》y)printf(“%d”晰房,x);elseprintf(“%d”求摇,y)第三種:if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2…。殊者。
例:if(number》500)cost=0.15;elseif(number》300)cost=0.10;elsecost=0;特點(diǎn):1.if(3)printf(“%d”与境,’a’);2.第二,三種形式的if語(yǔ)句中猖吴,在每個(gè)else前面有一個(gè)分號(hào)摔刁,整個(gè)語(yǔ)句結(jié)束處有一個(gè)分號(hào)。3.當(dāng)if和else后面有多個(gè)操作語(yǔ)句時(shí)海蔽,用{}將幾個(gè)語(yǔ)句括起來(lái)稱(chēng)為一個(gè)符合語(yǔ)句共屈。注意,花括號(hào)外面不需要再加分號(hào)党窜,因?yàn)閧}內(nèi)是一個(gè)完整的復(fù)合語(yǔ)句
4拗引、if語(yǔ)句的嵌套及if與else的配對(duì)關(guān)系(P99)略
5、條件運(yùn)算符及其優(yōu)先級(jí)和結(jié)合性及其求值過(guò)程(P102-104)例子:max=(a》b)幌衣?a:b;“(a》b)矾削?a:b”是一個(gè)條件表達(dá)式,如果(a》b)為真豁护,則條件表達(dá)式取值a哼凯;否則取值b。條件運(yùn)算符優(yōu)先級(jí)別低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符楚里。故上式中括號(hào)可以省略條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆盿》b断部?a:c》d?c:d相當(dāng)于a》b班缎?a:(c》d蝴光?c:d)例子:a》b?(a=100):(b=100)a》b吝梅?printf(“%d”虱疏,a):printf(“%d”惹骂,b)6苏携、switch語(yǔ)句及其執(zhí)行過(guò)程、break語(yǔ)句的作用(P102-104)switch(grade){case‘A’:printf(“85~100\n”);case‘B’:printf(“0~84\n”);defaule:printf(“error\n”);}
說(shuō)明:case只起語(yǔ)句標(biāo)識(shí)作用对粪,當(dāng)語(yǔ)句執(zhí)
行時(shí)右冻,此case一旦執(zhí)行其后面的語(yǔ)句將就此開(kāi)始全部執(zhí)行下去装蓬,不再進(jìn)行判斷,為使在執(zhí)行此case后跳出結(jié)構(gòu)纱扭,用一個(gè)break語(yǔ)來(lái)達(dá)到刺目的牍帚。故需在以上語(yǔ)句的每一個(gè)case語(yǔ)句分號(hào)后面加(break;
第六章循環(huán)控制
1乳蛾、while語(yǔ)句(P114)
while(表達(dá)式)語(yǔ)句暗赶;特點(diǎn):先判斷表達(dá)式,后執(zhí)行語(yǔ)句肃叶。
例子:while(i《=100){sum=sum+I;i++;}2蹂随、do-while語(yǔ)句(P115)
do循環(huán)體語(yǔ)句while(表達(dá)式);特點(diǎn):先執(zhí)行循環(huán)體因惭,后判斷循環(huán)條件是否成立例子:do{sum=sum+I;i++;}while(i《=100);printf(“%d\n”岳锁,a);3、for語(yǔ)句(P118)
for(表達(dá)式1蹦魔;表達(dá)式2激率;表達(dá)式3)語(yǔ)句
for(循環(huán)變量賦初值;循環(huán)條件勿决;循環(huán)變量增值)for(i=1;i《=100;i++)sum=sum+i;
說(shuō)明:1.表達(dá)式1可以省略(但分號(hào)不可以省略)乒躺,此時(shí)應(yīng)在for語(yǔ)句之前給循環(huán)變量賦初值;2.如果表達(dá)式2省略剥险,循環(huán)無(wú)終止地進(jìn)行下去聪蘸;3.表達(dá)式3也可以省略,另找路徑保證循環(huán)正常結(jié)束表制;4.可以省略表達(dá)式1和表達(dá)式3而使只有表達(dá)式2循環(huán)條件健爬。如for(;i《=100;){sum=sum+i;i++}4、循環(huán)的嵌套(P121)
while循環(huán)么介,do…while循環(huán)娜遵,for循環(huán)三種循環(huán)可以嵌套5、break壤短、continue語(yǔ)句(P122)
break語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體设拟,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)體下面的語(yǔ)句久脯,不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其他語(yǔ)句中纳胧。
continue作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句帘撰,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定跑慕。
兩者區(qū)別是continue語(yǔ)句只結(jié)束本次循環(huán),而不是種植整個(gè)循環(huán)的執(zhí)行。而break語(yǔ)句則是結(jié)束整個(gè)循環(huán)過(guò)程核行,不再判斷執(zhí)行循環(huán)的條件是否成立牢硅。
6、輾轉(zhuǎn)相除法求最大公約數(shù)的基本原理
第七章數(shù)組
1芝雪、數(shù)組的定義方式减余、下標(biāo)范圍(P131、135)
類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式]例inta[3]表示定義了一個(gè)整數(shù)數(shù)組惩系,數(shù)組名為a位岔,有3個(gè)元素。注意堡牡,下標(biāo)是從0開(kāi)始的(可以使整型常量或整型表達(dá)式)赃承,C語(yǔ)言不允許對(duì)數(shù)組的大小做動(dòng)態(tài)定義。inta[10];t=a[6]悴侵;
2瞧剖、數(shù)組元素的引用方式、數(shù)組的初始化(P132抓于、136)全賦初值
inta[3]={1浇借,2,3}在全賦初值的前提下可以寫(xiě)成inta[]={1妇垢,2巾遭,3}賦初值一部分inta[3]={1闯估,2}全部為0
inta[3]={0}
3、起泡法排序的原理(P134)
將相鄰兩個(gè)數(shù)比較涨薪,將大(衅锼亍)的調(diào)到前邊4、二維數(shù)組相關(guān)
表示:floata[3][4]献丑,b[5][10];定義a為3行4列的數(shù)組侠姑,b為5行10列的數(shù)組。(區(qū)別
a[3妥畏,4])
引用:數(shù)組名[下標(biāo)][下標(biāo)]例a[2][3],不要寫(xiě)成a[2,3]初始化:
1分行給二維數(shù)組賦初值柳畔,例薪韩。inta[3][2]={{4,5}{9罗捎,8}拉盾,{4,2}};
2將所有數(shù)據(jù)寫(xiě)在一個(gè)花括號(hào)內(nèi)倒得,按數(shù)組排列順序?qū)€(gè)元素賦初值夭禽,例inta[3][2]={1讹躯,2,3骗灶,4秉馏,5,6母廷,}
3對(duì)部分元素賦初值糊肤,例馆揉,inta[3][2]={{4},{},{7}}未賦值的元素自動(dòng)為0
4第一維可以不指定态罪,但第二維不能省略inta[][2]={1下面,2匕荸,5工窍,6碌冶,8癞己,9}系統(tǒng)會(huì)根據(jù)第二維的長(zhǎng)度自動(dòng)算出第一維
5還可以inta[][4]={{0,0蚀苛,3}枉阵,{},{0侦厚,10}};
5拙徽、字符數(shù)組及其初始化、字符數(shù)組的輸入輸出(P144)同前面的定義方法類(lèi)似charc[10]
字符型和整型是互相通用的想诅,因此可以定義一個(gè)整型數(shù)組来破,用來(lái)存放字符型數(shù)據(jù)忘古,例:charc[10];c[0]=’a’;chara[]={‘B’,’O’送朱,’Y’};
初始化:charc[3]={‘B’,’O’炮沐,’Y’};如果括號(hào)內(nèi)初值個(gè)數(shù)大于數(shù)組長(zhǎng)度回怜,按語(yǔ)法錯(cuò)誤處理鹉戚,如果初值個(gè)數(shù)小于數(shù)組長(zhǎng)度专控,則只將這些字符賦給數(shù)組中前面那些元素伦腐,其余的元素自動(dòng)定為空字符
字符串的輸入輸出:逐個(gè)輸入輸出,用格式符%c輸入或輸出幸冻;或?qū)⒄麄€(gè)字符串一次性輸入或輸出咳焚,用%s格式符
charc[]={“Iamhappy”}等同于charc[]=”Iamhappy”(以上兩種字符串長(zhǎng)度為11而不是10)效果等同于charc[]={‘I’革半,’’,’a’延刘,’m’六敬,’’外构,’h’,’a’劫哼,’p’割笙,’p’,’y’}charc[5]={‘C’妻率,’h’板祝,’i’券时,’n’,’a’}等同于charc[6]={‘C’捌袜,’h’炸枣,’i’适肠,’n’,’a’敦跌,’\0’}6逛揩、字符串處理函數(shù)(P146)
puts(字符數(shù)組)作用是將一個(gè)字符串輸出到終端息尺,puts輸出的字符串中可以包含轉(zhuǎn)義字符例charstr[]={“China\nBeijing”};puts(str);
gets(字符數(shù)組)作用是從終端輸入一個(gè)字符串到字符數(shù)組,并且得到一個(gè)函數(shù)值徐紧。例gets(str)鍵盤(pán)輸入Computer[回車(chē)]
注意:puts和gets函數(shù)只能輸出或輸入一個(gè)字符串并级,如puts(str1侮腹,str2)為錯(cuò)誤
strcat(字符數(shù)組1父阻,字符數(shù)組2)作用是連接兩個(gè)字符數(shù)組中的字符串望抽,把字符串2接到1的后面煤篙,結(jié)果放在字符數(shù)組1中毁腿,函數(shù)調(diào)用后得到字符數(shù)組1的地址例charstr1[30]={“Iam”};charstr2[]={“aboy”};printf(“%s”已烤,strcat(str1,str2));輸出Iamaboy剩下的函數(shù)省略稍计。
第八章函數(shù)
1唐片、函數(shù)的調(diào)用特點(diǎn)及其分類(lèi)(P155-156)特點(diǎn):
1一個(gè)源程序文件可以為多個(gè)C程序共用
2一個(gè)源程序文件時(shí)一個(gè)編譯單位费韭,在程序編譯時(shí)是以源程序文件為單位進(jìn)行的庭瑰,
而不是以函數(shù)為單位進(jìn)行編譯的3C程序的執(zhí)行時(shí)從main函數(shù)開(kāi)始的
4所有函數(shù)都是平行的弹灭,即在定義函數(shù)時(shí)是分別進(jìn)行的穷吮,是互相獨(dú)立的。函數(shù)間可以互相調(diào)用八回,但不能調(diào)用main函數(shù)驾诈,main函數(shù)時(shí)系統(tǒng)調(diào)用的乍迄。
分類(lèi):從用戶(hù)使用角度看,分為標(biāo)準(zhǔn)函數(shù)和用戶(hù)自己定義的函數(shù)
從函數(shù)的形式看褥伴,分為無(wú)參函數(shù)和有參函數(shù)
2噩翠、函數(shù)的定義方法(P156-157)①無(wú)參函數(shù)定義的一般形式類(lèi)型標(biāo)識(shí)符函數(shù)名(){聲明部分語(yǔ)句部分}
voidmain(){………。}②有參函數(shù)定義的一般形式
類(lèi)型標(biāo)識(shí)符函數(shù)名(形式參數(shù)表列){聲明部分語(yǔ)句部分}intmax(intx擅笔,inty){intz;z=x》y猛们?x:y;
return(z);
}③空函數(shù)
類(lèi)型說(shuō)明符函數(shù)名(){}
例如voiddummy(){}
3狞洋、函數(shù)的參數(shù)吉懊、實(shí)參和形參之間的數(shù)值傳遞、函數(shù)值(P158-161)4态鳖、函數(shù)的調(diào)用方式浆竭、函數(shù)的聲明惨寿、函數(shù)原型(P161-166)5裂垦、函數(shù)的嵌套調(diào)用(P167)
6、函數(shù)的遞歸調(diào)用及應(yīng)用(P171)
7特碳、數(shù)組作為函數(shù)的參數(shù)测萎、實(shí)參數(shù)組和形參數(shù)組之間的關(guān)系(P177)
8届巩、選擇法排序的原理(P181)
9、局部變量但惶、全局變量(P184-185)
在函數(shù)內(nèi)定義的變量是局部變量添谊,在函數(shù)之外定義的變量稱(chēng)為外部變量泌枪,外部變量是全局變量也稱(chēng)全程變量瓣蛀。全局變量可以為本文件中其他函數(shù)所共用像棘。它的有效范圍為從定義變量的位置開(kāi)始到本源文件結(jié)束瘪松。例如
intp=1壳嚎,q=5;floatf1(inta){
intb,c;…}
charf2(intx,inty){
intx栗柒,inty…}
10僚焦、變量的分類(lèi)及其存儲(chǔ)類(lèi)別(P188)11、extern、static的應(yīng)用(P193-196)12、內(nèi)部函數(shù)和外部函數(shù)(P199)
第九章預(yù)處理命令
1洽瞬、預(yù)處理命令的處理時(shí)間(P204)
2放祟、宏定義侦香、不帶參宏仰挣、帶參宏缠沈、格式宏洲愤、宏的有效范圍控制(P204-211)3柬赐、文件包含、兩種文件包含形式(P211-214)
第十章指針
1州藕、變量的地址和變量的值(P221)一個(gè)變量的地址稱(chēng)為該變量的“指針”床玻。如果有一個(gè)變量專(zhuān)門(mén)來(lái)存放另一變量的地址(指針),則它稱(chēng)為“指針變量”贫堰。
2其屏、指針和指針變量(P221)
3缨该、指針變量的定義方式贰拿、引用方式(P222)
4、指針變量作為函數(shù)參數(shù)(利用函數(shù)來(lái)改變實(shí)參的值)汗盘、實(shí)參和形參的值傳遞(P225)
5隐孽、指向數(shù)組元素的指針(P229)
6菱阵、一維數(shù)組元素和地址的表示方法缩功、利用指針處理數(shù)組元素(P229)
7嫡锌、數(shù)組和指針作為函數(shù)參數(shù)時(shí)如何利用指針處理數(shù)組元素(P235)
8势木、指向二維數(shù)組的指針的定義方式、二維數(shù)組元素和地址的表示方法(P242)
9溯壶、指向字符串的指針且改、利用它來(lái)處理字符串
1、goto循環(huán)
例6.1求1+2+3+…+100#include《stdio.h》voidmain(){
inti=1噪窘,sum=0;loop:if(i《=100){sum=sum+i;i++;
gotoloop;}
printf(“%d”倔监,sum);}
2浩习、while循環(huán)例6.2
#include《stdio.h》voidmain(){
inti=1谱秽,sum=0;while(i《=100)
{
sum=sum+i;i++;}
printf(“%d”摹迷,sum);}
3峡碉、do…while循環(huán)#include《stdio.h》voidmain(){
inti=1,sum=0;do{
sum=sum+i;i++;}
while(i《=100);
printf(“%d”吉执,sum);}
4戳玫、for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)#include《stdio.h》voidmain(){
inti咕宿,sum=0;
for(i=1;i《=100;i++)sum=sum+i;printf(“%d”蜡秽,sum);}
表達(dá)式省略载城,注意诉瓦,表達(dá)式后分號(hào)不能省略;
5固额、break語(yǔ)句不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其他語(yǔ)句斗躏;
continue語(yǔ)句和break語(yǔ)句的區(qū)別是:continue只結(jié)束本次循環(huán)啄糙,break則終止整個(gè)循環(huán)過(guò)程