c語言-day第一章入門_第1頁
c語言-day第一章入門_第2頁
c語言-day第一章入門_第3頁
c語言-day第一章入門_第4頁
c語言-day第一章入門_第5頁
免費預(yù)覽已結(jié)束,剩余15頁可下載查看

下載本文檔

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

文檔簡介

1、第一章: 一) )機器語言匯編語言高級語言結(jié)構(gòu)化語言象語言 語言由早期的編程語言 第一章: 一) )機器語言匯編語言高級語言結(jié)構(gòu)化語言象語言 語言由早期的編程語言 語言之父: 語言標準的發(fā)展 年 年 年 即從 語言標準:日, 正 ,即 3)gcc -std=C 語言的特點 可移植性不好相對語言的應(yīng)用引擎數(shù)據(jù)庫引擎面向過程的程序設(shè)計數(shù)據(jù)結(jié)構(gòu)算數(shù)據(jù)結(jié)構(gòu):算法的五大特點:)有窮性)確定性)輸入)輸出)偽代碼和流程圖的作用。流程圖各符號的意義和畫 ,以函數(shù) 操作系統(tǒng)除了內(nèi)核之外,還需要很多其他的工具,比如 工具鏈GNU 工具鏈 (GNU Toolchain)+等)、GNU Binutils(比如:ar

2、、objdumpGNU make (進行詞法、語法檢查,編譯成匯編代碼等 不的二進制代碼可以用 進行反匯編 匯編結(jié)束即停 打開所有警 不的二進制代碼可以用 進行反匯編 匯編結(jié)束即停 打開所有警 指定庫文件 交叉編1)交叉編譯pilation)上(PC)X86PC3) 頭文件和源文件為什么要分開 c 語言中頭文件中一般定義了函數(shù)的 從業(yè)務(wù)擴展性上看:頭文件提供接口,頭文件中放函數(shù)的 ,函數(shù)由源文件實現(xiàn),接口 分開,這在面對業(yè)務(wù)變更頻繁的需求中技術(shù)實現(xiàn)的好處是顯明、結(jié)構(gòu)體定義、宏就都可以充當這部分的模塊與模塊間、業(yè)務(wù)功能 間的接這正是基于組件編程的 。二)在當前目錄下有 和 二)在當前目錄下有 和

3、 運 也可以通過 變量設(shè)置頭 如: (與效果一樣可以通過 命令分析某執(zhí)行程序所依賴的庫文件要方法 方法 方法 或 把自己應(yīng)用程序使 然后用 命令使配置文件生效當然也可以重啟動態(tài)庫的使用相關(guān)接口 3) 的作用?簡單 文件的的命令執(zhí)行 帶來的好處就是“自動化編譯”,一旦寫好,只需要一個 開發(fā)的效率。 是一個工具,是一個解釋令工具。makefile令腳 工具最主要也是最基本的功能就是通過 文件來描述源 編譯工作。而 文件需要按照某種語法進 的使用:使用 調(diào)試程序,需要 編譯時加 選項,然 的常用選項指定要調(diào)試程序: 退出: 查看源代碼設(shè)置命令行參數(shù):查看命令行參數(shù): 設(shè)置斷點查看斷點: 執(zhí)行到下一斷

4、點處向下執(zhí)行一步(遇到函數(shù)調(diào)用,進入到被調(diào)函數(shù): 設(shè)置變量值: 跳出函數(shù): 編寫 文件,通過 命令自動化編譯執(zhí) 調(diào)試工具的使一)基本數(shù)據(jù)類型中:整型、浮點型、指針類型、聚合類型(數(shù)組和結(jié)構(gòu)體)整型 種:字符型、短整型、整型、長整型種:字符型、有符號字符型、無符號字符型、無符號 至少和 一樣長, 至少和 一樣長, 一樣長寬字符類型: 是 的字符數(shù)據(jù)類型,是一種擴展 程序的實現(xiàn)中, 數(shù)據(jù)類型一 位,但不同的 或 字符數(shù)遠超 型。常用進制的字母表示進制以 結(jié)如 可以以 以 結(jié)以 開頭 如 表示十進制整型數(shù)在計算機中的二進制表示如整數(shù)二進制表示為反加 無符號整數(shù)最大值:所有的二進制位都是無符號整數(shù)最小

5、值:所有的二進制位都是,即為關(guān)于有符號整數(shù)的最大值和最小為符號位,正數(shù)符號位為,負數(shù)符號位為,所以為,其它位都是有符號整數(shù)最小值:為,其它位都是有符號最大值浮點數(shù)在計算機中的表示IEEEV=(-1)S * 1.M * 符號位:ss=0,Vs=1,V尾數(shù): M1,2。(尾數(shù))指數(shù): 2E(E2S1E8M23* 1.M * 2(E-轉(zhuǎn)成數(shù)值即為:V=(-double:V=(-1)S * 1.M 2(E-1023) 16.52的權(quán)是 2 的負數(shù)冪,例如二進制小數(shù) 101.11 表示數(shù)字則是:1*22+0*21+1*20+1*2-1+1*2-2=5.75 所以 16.5 的 二進制為04+127 =

6、floatfloat7(223 107),所以整數(shù)部分占的位數(shù)越多,小數(shù)部分 的精度就越低。 floatdouble8. 1)把任意的地址直接賦給一個指針,比*p = 的2)ff2c)3)04+127 = floatfloat7(223 107),所以整數(shù)部分占的位數(shù)越多,小數(shù)部分 的精度就越低。 floatdouble8. 1)把任意的地址直接賦給一個指針,比*p = 的2)ff2c)3) 指針變量一般涉及到兩個值: 指針變量本身和指針所指向的變量910const *pa)*constpa*constpa 11. 無類型指針和空指針無類型指針: void*p空指針*p= NULL此時的含義與

7、*pNULL中NULL的區(qū)別,NULL其實就是一個宏定義符號,可以查看/usr/include/linux/stddef.h 中的宏定義)*pNULL;此時NULL 表示空指針, #defineNULLvoid*)0)*p= (此時NULL 0, #defineNULL 所以說NULL 0 12枚舉類型enum 的使用和注意641s11E,剩52 位為有效數(shù)字Mtypedef 和#define 1)typedef; typedef PCHARa,b,相當于char*a, btypedef 和#define 1)typedef; typedef PCHARa,b,相當于char*a, b, 即c

8、har*acharbcharc;相當于 char*a; char*b; char*c; n = 5 的區(qū)別CHARPa,b,#defineN 5 和 #define const #define const #define定義的符號和宏存在于程序的代碼段,在實際使用中只是一個const const gdb const 變量調(diào)試而不能對#defineconst 一般修飾函數(shù)的參數(shù),可以防止被意外的修改,提高程序的健作用域(scope)1)文件作用域:(在本文件中任何地方都可以使用函數(shù)作用域:(). 4)的變量則不能在1)屬性函數(shù)體內(nèi)的局部變量 無(任何2)屬性,屬性(可以在其他文件中使用a = 1

9、0;:a; (a 是在其他地方定義過,拿過來使用即可。即:使用其它地方定義過的變量在默認具有外屬性的標識符(變量或函數(shù))前面加上 ic 屬性(store 程序運行時變量,屬性(可以在其他文件中使用a = 10;:a; (a 是在其他地方定義過,拿過來使用即可。即:使用其它地方定義過的變量在默認具有外屬性的標識符(變量或函數(shù))前面加上 ic 屬性(store 程序運行時變量程序員進行動態(tài)內(nèi)存分配獲得的內(nèi)存空間(malloc/calloc/realloc),register 二)c 屬性(gdb 各變量的地址,清楚棧區(qū)、堆區(qū)、全局數(shù)據(jù)區(qū)、文本區(qū)的大致地址空間分布ic 用于代碼塊ic sa= a 2

10、. 自增/a= b=a+; c= 三 )1c 編寫 語言程序, 通過移位操作計算無符號整型的最大值編寫 語言程序,通過移位操作計算有符號整編寫 語言程序, 通過移位操作計算無符號整型的最大值編寫 語言程序,通過移位操作計算有符號整型的最大值和有符整型的最小值 查看 中的符號定義打印本機規(guī)定的各數(shù)據(jù)類型 最大值和最小值。參考定義如下 和 兩個變量 請問 的值是多少 能表示的最大數(shù)是,而為會溢出 所以 的值為 的二進制表示: 溢出后則為 即浮點型比較常見問) 程序,判斷 和 的大if(x-編寫語言程序,有判斷是否與相根據(jù): bs(x-0.1)=0.000001)0.1有如下 語言程序 請問程序執(zhí)行

11、后、 值分別如下: 一般情況下: 后無論多少項相加,是計算完表達式后,再自加 前都是先自加,之后再計算表達式當然 不同的編譯器可能有不同的詞法分析規(guī)則,所以不同的編譯器執(zhí)行結(jié) 查看本機上的執(zhí)行結(jié)果, 字節(jié)序問題查看本機結(jié)果形成的過程編寫 語言程序,利用指針操作驗證本機字UDP/TCP/IP一)輸入兩個正整數(shù)m 和n,求其最大公約數(shù)和最小公倍編寫函數(shù)UDP/TCP/IP一)輸入兩個正整數(shù)m 和n,求其最大公約數(shù)和最小公倍編寫函數(shù),利用循環(huán)編寫函數(shù)輸出任何類型數(shù)的二進制形式( 算方式 得出的浮點數(shù)二進制結(jié)果一致:比如二進制表示為0將以上 循環(huán)的基礎(chǔ)練習(xí)題均改用 循環(huán)和 循環(huán)實 1、2、3、4個數(shù)字

12、,能組成多少個互不相同且無重復(fù)數(shù)字的三位數(shù)?并一球從100米高1010左移的時候沒有邏輯左移和算術(shù)左移之分,都是往右邊低位補)邏輯右移:不管正負數(shù),往左邊補算術(shù)右移:正數(shù)還是一樣,符號位是,往左邊補負數(shù)由于符號位是,往左邊 和 關(guān)鍵字的作用補最短的循環(huán)放在最外層,減少 跨切循環(huán)層的次數(shù),提高運行效率。 goto 語句也稱為無條件轉(zhuǎn)移語句,goto 語句通常與條件語句配合使用??捎脕韺崿F(xiàn)條件轉(zhuǎn)移, 循環(huán),跳出循環(huán)體等功能。一般情況下,在結(jié)構(gòu)化程goto程序都產(chǎn)生 。goto gotogotogoto二). 越界信息:”out of2一)sizeof 邏輯操作符(& 二). 越界信息:”out o

13、f2一)sizeof 邏輯操作符(& |)(operator/src/logic_test.c) 如: 0 x0001b?a:b) 即c=a; c = b; a = b;b = a;a = b; a=10; a = a + 3.14 3.14 double double 型,則右邊的double轉(zhuǎn)13當 if-else 分支比較多的時候,最好用 switch-case 能夠提高運行效率和代碼的可讀性。但是注意:switch-case 后跟的條件 只能是整型(字符型,短比如: “ 被截輸出比如: “ 被截輸出 則此時只做了一次顯示類型轉(zhuǎn)二)編寫 語言程序,用戶輸入 進制格式表示的文件權(quán)限三位數(shù),

14、請判斷該位數(shù)表示的讀、寫、執(zhí)行權(quán)限。執(zhí)行)編寫函數(shù)編寫函數(shù) ,將型數(shù)的第 位置型數(shù)的第 為清一) 語言中有兩種聚合數(shù)據(jù)類型,數(shù)組和結(jié)構(gòu)體,數(shù)組中所有元素類型一致,對數(shù)組名 操作,取的是數(shù)組中所有元素的總字節(jié)數(shù)之和 語言中數(shù)組大小是在編譯時就可知并確定的,編譯器會為數(shù)組預(yù)留內(nèi)存空 。注意數(shù)將數(shù)組 賦值給數(shù)組,需要每個元素都進行賦值 該程序執(zhí)行結(jié)果是一個死循環(huán),因為數(shù)組越界,會把 的值 蓋掉所以 加到最后 該程序執(zhí)行結(jié)果是一個死循環(huán),因為數(shù)組越界,會把 的值 蓋掉所以 加到最后總會是,則循環(huán)會不斷 左值和右值的賦值符號的左右兩邊例如:a = b + 25;a結(jié)果值的地點,b25b25a; 原先用作

15、ab + 25b + 25 此時是左值此時 是右有 數(shù)組,則 和 和 到 區(qū)別?數(shù)組名,是一個指針常量,不能改變它的值 一般不能做左值即除 可以作為右值:即利用指針的間,表示數(shù)組首元素的地數(shù)組時 表示整個數(shù)組的首地址所以會造成用 和 去進行元素偏移時偏移大小不 結(jié)果是: 二)給出一個含有 個元素的整型數(shù)組,其中只有一個元素出現(xiàn)奇數(shù)次出這個元素。2n n/2,求這個元素。 3 求兩個含有 n 個整型元素的有序非降序數(shù)組的共同元素。42 (array/src/ array_outbin.c) 5利用數(shù)組,實現(xiàn)棧出這個元素。2n n/2,求這個元素。 3 求兩個含有 n 個整型元素的有序非降序數(shù)組的

16、共同元素。42 (array/src/ array_outbin.c) 5利用數(shù)組,實現(xiàn)棧(先進后出)(array/include/stack.h,array/src/ElementType push(ElementType e);ElementType top(void); size_t size(void);/*彈出棧頂元素獲取棧頂元素/*/*判斷是否棧滿2 2 取余的方式將某整形數(shù)轉(zhuǎn)(array/include/queue.harray/srcqueue.c)ElementTypeenqueue(ElementTypee); ElementType dequeue(void); Elem

17、entType cpqueue(void);size_t size(void); /*元素入隊隊首元素87 7 (array/include/queue.harray/srcloop_queue.c) 1)(array/src/ insert_sort.c) 4)11(array/src/ bubble_sort.c) 找 出 一 個 非 遞 減 序 列 中 絕 對 值 最 小 的 (參考 時間復(fù)雜度空間復(fù)雜度二維數(shù)組一1. a34 = 1,2,3,5,6,7,9,10,11,b34 = 1,2,3,4,二維數(shù)組一1. a34 = 1,2,3,5,6,7,9,10,11,b34 = 1,2,3

18、,4,5,6,7,8,9,10,11,c4 = 1,2,3,4,5, 6,7,8,9,10,11,2. 。3. 方式直接利用下,比如一個有n 行m 列的0-n-10-m-1a02。關(guān)于二維數(shù)組名a 的真實含義,可以類比一維數(shù)組:比a34 = 1,2,3,5,6,7,9,10,11,a0 &a00: 0 0 列該元素的地址a+1 的值與&a10&a+1 的值與&a24值相等 &a00+1的值與&a01值相等到a11可以有以下三種方式:直接利用下標: a11要/注意:a+1 后必須要通過指針的顯示類a 1)址p,以及元素總個數(shù):voidout( for(i= 0;i n;f(%dn,2)址p,以及

19、行數(shù)row 和列數(shù)void第i 行第j 列的時候則為如下方式for(i=0;irow;for(j=0;jcol;1)址p,以及元素總個數(shù):voidout( for(i= 0;i n;f(%dn,2)址p,以及行數(shù)row 和列數(shù)void第i 行第j 列的時候則為如下方式for(i=0;irow;for(j=0;jcol;3) void第i 行和第j 列的時候則for(i=0;irow;for(j= 0;j 4;/下面三種方式都可以(3 中總結(jié)的三種方式,i,j,i,j,i,j,以上voidrow)等價于void(*p)數(shù)組指針元素類型 指針數(shù)組: 二)1a23 = (1,2),(3,4),(5,

20、則*p= f(%dn,a23= 2二)1a23 = (1,2),(3,4),(5,則*p= f(%dn,a23= 2p = 所以結(jié)果為: &a42-&p42 等于多少?&a42 &a00+)+ ) + )&p42&a00+相隔了多少個元素,所以最后結(jié)果是: 431111211661數(shù),判斷數(shù)組中是否含有該整數(shù)。利用二維數(shù)組實現(xiàn)哈希表散列表 數(shù),判斷數(shù)組中是否含有該整數(shù)。利用二維數(shù)組實現(xiàn)哈希表散列表 往表中放入一個元素 查找某個元素在表 刪除某個 素表的總的元素個數(shù)判斷表是否滿查詢表中所有元素 引號” ”括起來由于 語言中沒有字符串類型所以表示字符串可以用字符數(shù)組或字符串量: 語言中規(guī)定字符串以結(jié)尾字符數(shù)組: 字符串常量: 注意分別用 操作符和 函數(shù)去取得 值,并比較字符串長度獲取函數(shù) 遇到結(jié)束指針數(shù)組 比如: “ ” “5要求打印后順序為:1163217231213642212 ,8 ,6 ,4 ,3 ,8 ,7, 二級指針指向指針的指針保存另一個指針變量地址的指針變量語法: 如: 一 二級指針指向指針的指針保存另一個指針變量地址的指針變量語法: 如: 一級指針 中保存著變量 的地二級指針 中保存著變量 的地關(guān)于語言 比如: 則打印輸出、(表示所有位置參數(shù)的個數(shù)包括程序名稱本身 (表示 字符串的指針(表示 字符串的指針常用的字符串輸入輸出函、 格

溫馨提示

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

評論

0/150

提交評論