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