C語(yǔ)言入門(mén)筆記
2021-12-26點(diǎn)擊量:191
C語(yǔ)言一經(jīng)出現(xiàn)就以其功能豐富、表達(dá)能力強(qiáng)、靈活方便、應(yīng)用面廣等特點(diǎn)迅速在全世界普及和推廣。C語(yǔ)言不但執(zhí)行效率高而且可移植性好,可以用來(lái)開(kāi)發(fā)應(yīng)用軟件、驅(qū)動(dòng)、操作系統(tǒng)等。C語(yǔ)言也是其它眾多高級(jí)語(yǔ)言的鼻祖語(yǔ)言,所以說(shuō)學(xué)習(xí)C語(yǔ)言是進(jìn)入編程世界的必修課。hello,world——必修#includeintmain(){/*在雙引號(hào)中間輸入HelloWorld*/printf("HelloWorld");return0;}注:在最新的C標(biāo)準(zhǔn)中,main函數(shù)前的類(lèi)型為int而不是voidC語(yǔ)言的具體結(jié)構(gòu)簡(jiǎn)單來(lái)說(shuō),一個(gè)C程序就是由若干頭文件和函數(shù)組成。#include就是一條預(yù)處理命令,它的作用是通知C語(yǔ)言編譯系統(tǒng)在對(duì)C程序進(jìn)行正式編譯之前需做一些預(yù)處理工作。函數(shù)就是實(shí)現(xiàn)代碼邏輯的一個(gè)小的單元。必不可少之主函數(shù)一個(gè)C程序有且只有一個(gè)主函數(shù),即main函數(shù)。C程序就是執(zhí)行主函數(shù)里的代碼,也可以說(shuō)這個(gè)主函數(shù)就是C語(yǔ)言中的唯一入口。而main前面的int就是主函數(shù)的類(lèi)型。printf()是格式輸出函數(shù),這里就記住它的功能就是在屏幕上輸出指定的信息。return是函數(shù)的返回值,根據(jù)函數(shù)類(lèi)型的不同,返回的值也是不同的。\n是轉(zhuǎn)義字符中的換行符。(注意:C程序一定是從主函數(shù)開(kāi)始執(zhí)行的)良好習(xí)慣之規(guī)范1)一個(gè)說(shuō)明或一個(gè)語(yǔ)句占一行,例如:包含頭文件、一個(gè)可執(zhí)行語(yǔ)句結(jié)束都需要換行。2)函數(shù)體內(nèi)的語(yǔ)句要有明顯縮進(jìn),通常以按一下Tab鍵為一個(gè)縮進(jìn)。3)括號(hào)要成對(duì)寫(xiě),如果需要?jiǎng)h除的話也要成對(duì)刪除。4)當(dāng)一句可執(zhí)行語(yǔ)句結(jié)束的時(shí)候末尾需要有分號(hào)。5)代碼中所有符號(hào)均為英文半角符號(hào)。程序解釋——注釋注釋是寫(xiě)給程序員看的,不是寫(xiě)給電腦看的。C語(yǔ)言注釋方法有兩種:多行注釋?zhuān)?*注釋內(nèi)容*/單行注釋?zhuān)?/注釋一行有名有姓的C(標(biāo)識(shí)符)C語(yǔ)言規(guī)定,標(biāo)識(shí)符可以是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線_組成的字符串,并且第一個(gè)字符必須是字母或下劃線。在使用標(biāo)識(shí)符時(shí)還有注意以下幾點(diǎn):標(biāo)識(shí)符的長(zhǎng)度最好不要超過(guò)8位,因?yàn)樵谀承┌姹镜腃中規(guī)定標(biāo)識(shí)符前8位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前8位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。1)標(biāo)識(shí)符是嚴(yán)格區(qū)分大小寫(xiě)的。例如Imooc和imooc是兩個(gè)不同的標(biāo)識(shí)符。2)標(biāo)識(shí)符最好選擇有意義的英文單詞組成做到"見(jiàn)名知意",不要使用中文。3)標(biāo)識(shí)符不能是C語(yǔ)言的關(guān)鍵字。想了解更多C語(yǔ)言關(guān)鍵字的知識(shí)。變量及賦值變量就是可以變化的量,而每個(gè)變量都會(huì)有一個(gè)名字(標(biāo)識(shí)符)。變量占據(jù)內(nèi)存中一定的存儲(chǔ)單元。使用變量之前必須先定義變量,要區(qū)分變量名和變量值是兩個(gè)不同的概念。變量定義的一般形式為:數(shù)據(jù)類(lèi)型變量名;多個(gè)類(lèi)型相同的變量:數(shù)據(jù)類(lèi)型變量名,變量名,變量名...;注意:在定義中不允許連續(xù)賦值,如inta=b=c=5;是不合法的。變量的賦值分為兩種方式:先聲明再賦值聲明的同時(shí)賦值基本數(shù)據(jù)類(lèi)型C語(yǔ)言中,數(shù)據(jù)類(lèi)型可分為:基本數(shù)據(jù)類(lèi)型構(gòu)造數(shù)據(jù)類(lèi)型指針類(lèi)型空類(lèi)型四大類(lèi)最常用的整型,實(shí)型與字符型(char,int,float,double):整型數(shù)據(jù)是指不帶小數(shù)的數(shù)字(int,shortint,longint,unsignedint,unsignedshortint,unsignedlongint):注:intshortintlongint是根據(jù)編譯環(huán)境的不同,所取范圍不同。而其中shortint和longint至少是表中所寫(xiě)范圍,但是int在表中是以16位編譯環(huán)境寫(xiě)的取值范圍。另外c語(yǔ)言int的取值范圍在于他占用的字節(jié)數(shù),不同的編譯器,規(guī)定是不一樣。ANSI標(biāo)準(zhǔn)定義int是占2個(gè)字節(jié),TC是按ANSI標(biāo)準(zhǔn)的,它的int是占2個(gè)字節(jié)的。但是在VC里,一個(gè)int是占4個(gè)字節(jié)的。浮點(diǎn)數(shù)據(jù)是指帶小數(shù)的數(shù)字。生活中有很多信息適合使用浮點(diǎn)型數(shù)據(jù)來(lái)表示,比如:人的體重(單位:公斤)、商品價(jià)格、圓周率等等。因?yàn)榫鹊牟煌址譃?種(float,double,longdouble):注:C語(yǔ)言中不存在字符串變量,字符串只能存在字符數(shù)組中,這個(gè)后面會(huì)講。格式化輸出語(yǔ)句格式化輸出語(yǔ)句,也可以說(shuō)是占位輸出,是將各種類(lèi)型的數(shù)據(jù)按照格式化后的類(lèi)型及指定的位置從計(jì)算機(jī)上顯示。其格式為:printf("輸出格式符",輸出項(xiàng));當(dāng)輸出語(yǔ)句中包含普通字符時(shí),可以采用一下格式:printf("普通字符輸出格式符",輸出項(xiàng));注意:格式符的個(gè)數(shù)要與變量、常量或者表達(dá)式的個(gè)數(shù)一一對(duì)應(yīng)不可改變的常量在程序執(zhí)行過(guò)程中,值不發(fā)生改變的量稱(chēng)為常量。mtianyan:C語(yǔ)言的常量可以分為直接常量和符號(hào)常量。直接常量也稱(chēng)為字面量,是可以直接拿來(lái)使用,無(wú)需說(shuō)明的量,比如:整型常量:13、0、-13;實(shí)型常量:13.33、-24.4;字符常量:‘a(chǎn)’、‘M’字符串常量:”Iloveimooc!”在C語(yǔ)言中,可以用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常量,稱(chēng)之為符號(hào)常量。符號(hào)常量在使用之前必須先定義,其一般形式為:#define標(biāo)識(shí)符常量值#include#definePOCKETMONEY10//定義常量及常量值intmain(){//POCKETMONEY=12;//小明私自增加零花錢(qián)對(duì)嗎?printf("小明今天又得到%d元零花錢(qián)\n",POCKETMONEY);return0;}符號(hào)常量不可以被改變。自動(dòng)類(lèi)型轉(zhuǎn)換數(shù)據(jù)類(lèi)型存在自動(dòng)轉(zhuǎn)換的情況.自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類(lèi)型運(yùn)算時(shí),在編譯的時(shí)候自動(dòng)完成。char類(lèi)型數(shù)據(jù)轉(zhuǎn)換為int類(lèi)型數(shù)據(jù)遵循ASCII碼中的對(duì)應(yīng)值.注:字節(jié)小的可以向字節(jié)大的自動(dòng)轉(zhuǎn)換,但字節(jié)大的不能向字節(jié)小的自動(dòng)轉(zhuǎn)換char可以轉(zhuǎn)換為int,int可以轉(zhuǎn)換為double,char可以轉(zhuǎn)換為double。但是不可以反向。強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換是通過(guò)定義類(lèi)型轉(zhuǎn)換運(yùn)算來(lái)實(shí)現(xiàn)的。其一般形式為:(數(shù)據(jù)類(lèi)型)(表達(dá)式)其作用是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類(lèi)型說(shuō)明符所表示的類(lèi)型在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題:1)數(shù)據(jù)類(lèi)型和表達(dá)式都必須加括號(hào),如把(int)(x/2+y)寫(xiě)成(int)x/2+y則成了把x轉(zhuǎn)換成int型之后再除2再與y相加了。2)轉(zhuǎn)換后不會(huì)改變?cè)瓟?shù)據(jù)的類(lèi)型及變量值,只在本次運(yùn)算中臨時(shí)性轉(zhuǎn)換。3)強(qiáng)制轉(zhuǎn)換后的運(yùn)算結(jié)果不遵循四舍五入原則。運(yùn)算符號(hào)C語(yǔ)言中運(yùn)算符:※算術(shù)運(yùn)算符※賦值運(yùn)算符※關(guān)系運(yùn)算符※邏輯運(yùn)算符※三目運(yùn)算符1)算術(shù)運(yùn)算符C語(yǔ)言基本運(yùn)算符:除法運(yùn)算中注意:如果相除的兩個(gè)數(shù)都是整數(shù)的話,則結(jié)果也為整數(shù),小數(shù)部分省略,如8/3=2;而兩數(shù)中有一個(gè)為小數(shù),結(jié)果則為小數(shù),如:9.0/2=4.500000。mtianyan:取余運(yùn)算中注意:該運(yùn)算只適合用兩個(gè)整數(shù)進(jìn)行取余運(yùn)算,如:10%3=1;mtianyan:notes:而10.0%3則是錯(cuò)誤的;運(yùn)算后的符號(hào)取決于被模數(shù)的符號(hào),如(-10)%3=-1;而10%(-3)=1;mtianyan:%%表示這里就是一個(gè)%符.注:C語(yǔ)言中沒(méi)有乘方這個(gè)運(yùn)算符,也不能用×,÷等算術(shù)符號(hào)。2)自增與自減運(yùn)算符:自增運(yùn)算符為++,其功能是使變量的值自增1自減運(yùn)算符為--,其功能是使變量值自減1它們經(jīng)常使用在循環(huán)中。自增自減運(yùn)算符有以下幾種形式:3)賦值運(yùn)算符C語(yǔ)言中賦值運(yùn)算符分為簡(jiǎn)單賦值運(yùn)算符和復(fù)合賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算符=號(hào)了,下面講一下復(fù)合賦值運(yùn)算符:復(fù)合賦值運(yùn)算符就是在簡(jiǎn)單賦值符=之前加上其它運(yùn)算符構(gòu)成.例如+=、-=、*=、/=、%=分析:定義整型變量a并賦值為3,a+=5;這個(gè)算式就等價(jià)于a=a+5;將變量a和5相加之后再賦值給a注意:復(fù)合運(yùn)算符中運(yùn)算符和等號(hào)之間是不存在空格的。4)關(guān)系運(yùn)算符C語(yǔ)言中的關(guān)系運(yùn)算符:關(guān)系表達(dá)式的值是真和假,在C程序用整數(shù)1和0表示。注意:>=,=5&&7>5,運(yùn)算結(jié)果為真;或運(yùn)算||參與運(yùn)算的兩個(gè)變量只要有一個(gè)為真,結(jié)果就為真。兩個(gè)量都為假時(shí),結(jié)果為假。例如:5>=5||5>8,運(yùn)算結(jié)果為真;非運(yùn)算!參與運(yùn)算的變量為真時(shí),結(jié)果為假;參與運(yùn)算量為假時(shí),結(jié)果為真。例如:!(5>8),運(yùn)算結(jié)果為真。6)三目運(yùn)算符C語(yǔ)言中的三目運(yùn)算符:?:,其格式為:表達(dá)式1?表達(dá)式2:表達(dá)式3;執(zhí)行過(guò)程是:先判斷表達(dá)式1的值是否為真,如果是真的話執(zhí)行表達(dá)式2;如果是假的話執(zhí)行表達(dá)式3。#includeintmain(){//定義小編兜里的錢(qián)doublemoney=12.0;//定義打車(chē)回家的費(fèi)用doublecost=11.5;printf("小編能不能打車(chē)回家呢:");//輸出y小編就打車(chē)回家了,輸出n小編就不能打車(chē)回家printf("%c\n",money>=cost?'y':'n');return0;}運(yùn)算符大比拼之優(yōu)先級(jí)比較各種運(yùn)算符號(hào)的順序:優(yōu)先級(jí)別為1的優(yōu)先級(jí)最高,優(yōu)先級(jí)別為10的優(yōu)先級(jí)別最低。分支結(jié)構(gòu)之簡(jiǎn)單if語(yǔ)句C語(yǔ)言中的分支結(jié)構(gòu)語(yǔ)句中的if條件語(yǔ)句。簡(jiǎn)單if語(yǔ)句的基本結(jié)構(gòu)如下:if(表達(dá)式){執(zhí)行代碼塊;}其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行其后的語(yǔ)句,否則不執(zhí)行該語(yǔ)句。注意:if()后面沒(méi)有分號(hào),直接寫(xiě){}分支結(jié)構(gòu)之簡(jiǎn)單if-else語(yǔ)句簡(jiǎn)單的if-else語(yǔ)句的基本結(jié)構(gòu):語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行代碼塊1,否則執(zhí)行代碼塊2。注意:if()后面沒(méi)有分號(hào),直接寫(xiě){},else后面也沒(méi)有分號(hào),直接寫(xiě){}分支結(jié)構(gòu)之多重if-else語(yǔ)句C語(yǔ)言中多重if-else語(yǔ)句,其結(jié)構(gòu)如下:語(yǔ)義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行對(duì)應(yīng)代碼塊,否則執(zhí)行代碼塊n。注意:當(dāng)某一條件為真的時(shí)候,則不會(huì)向下執(zhí)行該分支結(jié)構(gòu)的其他語(yǔ)句。分支結(jié)構(gòu)之嵌套if-else語(yǔ)句C語(yǔ)言中嵌套if-else語(yǔ)句。嵌套if-else語(yǔ)句的意思,就是在if-else語(yǔ)句中,再寫(xiě)if-else語(yǔ)句。其一般形式為:循環(huán)結(jié)構(gòu)之while循環(huán)反復(fù)不停的執(zhí)行某個(gè)動(dòng)作就是江湖人稱(chēng)的循環(huán)。C語(yǔ)言中有三種循環(huán)結(jié)構(gòu),先看一下C語(yǔ)言while循環(huán)的結(jié)構(gòu)其中表達(dá)式表示循環(huán)條件,執(zhí)行代碼塊為循環(huán)體。while語(yǔ)句的語(yǔ)義是:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行循環(huán)體代碼塊。while語(yǔ)句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,當(dāng)表達(dá)式的值為假時(shí)不執(zhí)行循環(huán)體,反之則循環(huán)體一直執(zhí)行。一定要記著在循環(huán)體中改變循環(huán)變量的值,否則會(huì)出現(xiàn)死循環(huán)(無(wú)休止的執(zhí)行)。循環(huán)體如果包括有一個(gè)以上的語(yǔ)句,則必須用{}括起來(lái),組成復(fù)合語(yǔ)句。循環(huán)結(jié)構(gòu)之do-while循環(huán)C語(yǔ)言中的do-while循環(huán),一般形式如下:do-while循環(huán)語(yǔ)句的語(yǔ)義是:它先執(zhí)行循環(huán)中的執(zhí)行代碼塊,然后再判斷while中表達(dá)式是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)語(yǔ)句。注意:mtianyan:使用do-while結(jié)構(gòu)語(yǔ)句時(shí),while括號(hào)后必須有分號(hào)。循環(huán)結(jié)構(gòu)之for循環(huán)(一)c語(yǔ)言中for循環(huán)一般形式:它的執(zhí)行過(guò)程如下:執(zhí)行表達(dá)式1,對(duì)循環(huán)變量做初始化;判斷表達(dá)式2,若其值為真(非0),則執(zhí)行for循環(huán)體中執(zhí)行代碼塊,然后向下執(zhí)行;若其值為假(0),則結(jié)束循環(huán);執(zhí)行表達(dá)式3,(i++)等對(duì)于循環(huán)變量進(jìn)行操作的語(yǔ)句;執(zhí)行for循環(huán)中執(zhí)行代碼塊后執(zhí)行第二步;第一步初始化只會(huì)執(zhí)行一次。循環(huán)結(jié)束,程序繼續(xù)向下執(zhí)行。注意:for循環(huán)中的兩個(gè)分號(hào)一定要寫(xiě)循環(huán)結(jié)構(gòu)之for循環(huán)(二)在for循環(huán)中:表達(dá)式1是一個(gè)或多個(gè)賦值語(yǔ)句,它用來(lái)控制變量的初始值;表達(dá)式2是一個(gè)關(guān)系表達(dá)式,它決定什么時(shí)候退出循環(huán);表達(dá)式3是循環(huán)變量的步進(jìn)值,定義控制循環(huán)變量每循環(huán)一次后按什么方式變化。這三部分之間用分號(hào);分開(kāi)。使用for語(yǔ)句應(yīng)該注意:for循環(huán)中的“表達(dá)式1、2、3”均可不寫(xiě)為空,但兩個(gè)分號(hào)(;;)不能缺省。省略“表達(dá)式1(循環(huán)變量賦初值)”,表示不對(duì)循環(huán)變量賦初始值。省略“表達(dá)式2(循環(huán)條件)”,不做其它處理,循環(huán)一直執(zhí)行(死循環(huán))。省略“表達(dá)式3(循環(huán)變量增減量)”,不做其他處理,循環(huán)一直執(zhí)行(死循環(huán))。表達(dá)式1可以是設(shè)置循環(huán)變量的初值的賦值表達(dá)式,也可以是其他表達(dá)式。表達(dá)式2和表達(dá)式3可以是一個(gè)簡(jiǎn)單表達(dá)式也可以是多個(gè)表達(dá)式以逗號(hào)分割。表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可是數(shù)值表達(dá)式或字符表達(dá)式,只要其值非零,就執(zhí)行循環(huán)體。各表達(dá)式中的變量一定要在for循環(huán)之前定義。怎么獲得一個(gè)數(shù)的百位,十位和個(gè)位百位數(shù):num/100可以獲得,因?yàn)閕nt是整數(shù)型,小數(shù)部分會(huì)省略。比如765/100的結(jié)果是7十位數(shù):num%100/10。比如765%100先得到65,65/10得到6個(gè)位數(shù):num%10。765%10得到5循環(huán)結(jié)構(gòu)之三種循環(huán)比較while,do-while和for三種循環(huán)在具體的使用場(chǎng)合上是有區(qū)別的,如下:在知道循環(huán)次數(shù)的情況下更適合使用for循環(huán);在不知道循環(huán)次數(shù)的情況下適合使用while或者do-while循環(huán):如果有可能一次都不循環(huán)應(yīng)考慮使用while循環(huán);如果至少循環(huán)一次應(yīng)考慮使用do-while循環(huán)。但是從本質(zhì)上講,while,do-while和for循環(huán)之間是可以相互轉(zhuǎn)換的。循環(huán)結(jié)構(gòu)之多重循環(huán)多重循環(huán)就是在循環(huán)結(jié)構(gòu)的循環(huán)體中又出現(xiàn)循環(huán)結(jié)構(gòu)。在實(shí)際開(kāi)發(fā)中一般最多用到三層重循環(huán)。因?yàn)檠h(huán)層數(shù)越多,運(yùn)行時(shí)間越長(zhǎng),程序越復(fù)雜,所以一般用2-3層多重循環(huán)就可以了。另外不同循環(huán)之間也是可以嵌套的。多重循環(huán)在執(zhí)行的過(guò)程中,外層循環(huán)為父循環(huán),內(nèi)層循環(huán)為子循環(huán),父循環(huán)一次,子循環(huán)需要全部執(zhí)行完,直到跳出循環(huán)。父循環(huán)再進(jìn)入下一次,子循環(huán)繼續(xù)執(zhí)行...mtianyan:打印三角形星星堆#includeintmain(){inti,j,k;for(i=1;i=23||clock...