




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言教學(xué) C語言教學(xué)課件 C語言教學(xué) C語言教學(xué) C C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 計(jì)算機(jī)系統(tǒng) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 計(jì)算機(jī)硬件 計(jì)算機(jī)軟件 C語言概述 C語言發(fā)展史 C語言的特點(diǎn) C語言的編程環(huán)境及上機(jī)步驟 C語言教學(xué) C C 語言程序設(shè)計(jì)語言程序設(shè)計(jì) 數(shù)據(jù)類型 基本數(shù)據(jù)類型 構(gòu)造數(shù)據(jù)類型 結(jié)構(gòu)程序設(shè)計(jì) 順序結(jié)構(gòu)程序設(shè)計(jì) 選擇結(jié)構(gòu)程序設(shè)計(jì) 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 函數(shù)函數(shù) 文件文件 圖形圖形 C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 1946年在年在American 賓夕法尼亞大學(xué)誕生了世界上第一臺(tái)計(jì)算機(jī)賓夕法尼亞大學(xué)誕生了世界上第一臺(tái)計(jì)算機(jī) - ENIAC,從此以后計(jì)算機(jī)經(jīng)歷了以下四個(gè)過程從此以后
2、計(jì)算機(jī)經(jīng)歷了以下四個(gè)過程: 19461957 : 電子管計(jì)算機(jī)電子管計(jì)算機(jī) 19581964 : 晶體管計(jì)算機(jī)晶體管計(jì)算機(jī) 19651970 : 中中/小規(guī)模集成電路計(jì)算機(jī)小規(guī)模集成電路計(jì)算機(jī) 19711980 : 大規(guī)模及超大規(guī)模集成電路計(jì)算機(jī)大規(guī)模及超大規(guī)模集成電路計(jì)算機(jī) 在計(jì)算機(jī)發(fā)展史上幾家大公司做出了巨大的貢獻(xiàn)在計(jì)算機(jī)發(fā)展史上幾家大公司做出了巨大的貢獻(xiàn) IBM - 1981年生產(chǎn)出第一臺(tái)年生產(chǎn)出第一臺(tái)PC (Personal Computer) Inter Co. - 1976年推出了第一個(gè)年推出了第一個(gè)CPU 8080 , 成為成為8位位CPU 產(chǎn)業(yè)標(biāo)準(zhǔn)產(chǎn)業(yè)標(biāo)準(zhǔn) Microsoft
3、- 1982年首次推出風(fēng)靡世界的年首次推出風(fēng)靡世界的 MS-DOS 操作系統(tǒng)操作系統(tǒng) APPLE Compaq DELL C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 IBM在1981年生產(chǎn)的第一臺(tái)計(jì)算機(jī)IBMPC_XT C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 當(dāng)今的個(gè)人計(jì)算機(jī) C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 Inter公司的三巨頭:巴瑞特、摩爾、葛洛夫 C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 美國 Microsoft 公司的 前總裁Bill.Gates 與APPLE公司的 創(chuàng)始人喬布斯 C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 C語言教學(xué)
4、計(jì)算機(jī)發(fā)展史及發(fā)展方向 計(jì)算機(jī)發(fā)展方向 巨型化:用于軍事科學(xué)計(jì)算 微型化: HPC 多媒體:聲,圖,文,動(dòng)畫,音頻,視頻 智能化:模擬人的功能,識(shí)別聲音,文字,圖像,各種語言互譯,使計(jì) 算機(jī)具有推力聯(lián)想等功能. 網(wǎng)絡(luò)化:使世界成為一體,無種族,無貨幣,無國界. C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 C語言教學(xué) 計(jì)算機(jī)發(fā)展史及發(fā)展方向 CPU C語言教學(xué) 計(jì)算機(jī)系統(tǒng)計(jì)算機(jī)系統(tǒng) 何謂計(jì)算機(jī)何謂計(jì)算機(jī)?(Computer): 計(jì)算機(jī)是指由電子器件組合構(gòu)造 而成的,以數(shù)字方式對數(shù)據(jù)進(jìn)行計(jì)算處理的機(jī)器.是一種能夠按照人們預(yù) 先設(shè)計(jì)的程序自動(dòng)進(jìn)行高速計(jì)算和信息處理的工具.是人腦的一種延伸. 計(jì)算機(jī)系統(tǒng)由兩部
5、分組成 : 硬件硬件 , 軟件軟件 C語言教學(xué) 個(gè)人計(jì)算機(jī)(個(gè)人計(jì)算機(jī)(pc)組成組成 ASCII Printer Keyboard Mouse 主機(jī) 顯示器 鍵盤 鼠標(biāo) 打印機(jī) 標(biāo)準(zhǔn)輸入設(shè)備 標(biāo)準(zhǔn)輸出設(shè)備 stdin stdout C語言教學(xué) 計(jì)算機(jī)主機(jī)組成計(jì)算機(jī)主機(jī)組成 Data Floppy drive Optical drive Terminal server Hub 軟盤驅(qū)動(dòng)器 光盤驅(qū)動(dòng)器 硬盤 內(nèi)存 地址總線 數(shù)據(jù)總線 計(jì)算機(jī)分內(nèi)存、外存 兩部分,內(nèi)存為內(nèi)部 存儲(chǔ)單元(圖中的內(nèi)存) 外存包括:硬盤、 軟盤、光盤等 C語言教學(xué) 一個(gè)城市的結(jié)構(gòu) 城市中心街道 樓 宇 2 樓宇 1 小區(qū)
6、A 小區(qū) B 城市公路 信息載體 C語言教學(xué) 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 個(gè)人計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)大致分為以下三種: ENIAC結(jié)構(gòu) VONNEUMAMM(馮。諾伊曼)結(jié)構(gòu) HARVARD結(jié)構(gòu) 這里主要介紹一下 馮諾伊曼結(jié)構(gòu): 必須有一個(gè)存儲(chǔ)器。程序和數(shù)據(jù)都以二進(jìn)制代碼形式存 于存儲(chǔ)器中。從形式上看,指令與數(shù)據(jù)沒有區(qū)別。 必須有一個(gè)控制器。在它的控制下,指令依次從存儲(chǔ)器 中取出,然后對指令進(jìn)行解釋和執(zhí)行。每條指令均由操 作數(shù)、操作數(shù)地址和運(yùn)算結(jié)果地址組成。 必須有一個(gè)運(yùn)算器。用于完成算術(shù)、邏輯運(yùn)算。 必須有輸入、輸出設(shè)備。用來完成人-機(jī)通信。 C語言教學(xué) 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 取址 解釋 執(zhí)行 一個(gè)指令執(zhí)行周期 取址
7、 解釋 執(zhí)行 一個(gè)指令執(zhí)行周期 取址 解釋 執(zhí)行 一個(gè)指令執(zhí)行周期 到目前為止,大多數(shù)計(jì)算機(jī)都依此結(jié)構(gòu)來設(shè)計(jì)制造。 Von.Neumamm結(jié)構(gòu)確定了計(jì)算機(jī)的五個(gè)組成部分。并提出了“存儲(chǔ)程序” 這一概念,形成了傳統(tǒng)的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) C語言教學(xué) 馮諾伊曼結(jié)構(gòu)模型 控制器 運(yùn)算器 存儲(chǔ)器 輸入設(shè)備輸出設(shè)備 CPU C語言教學(xué) 內(nèi)存巡址原理 2000 2001 2002 200 3 2004 地址內(nèi)容 房間號(hào)房間號(hào)學(xué)生學(xué)生 CPU a 取地址為2000單元的內(nèi)容 a C語言教學(xué) 關(guān)于存儲(chǔ)的幾個(gè)概念關(guān)于存儲(chǔ)的幾個(gè)概念 位位( bit )( bit ) : 計(jì)算機(jī)內(nèi)部所有計(jì)算完全由二進(jìn)制表示.二進(jìn)制與十進(jìn)
8、 制相對應(yīng) : 十進(jìn)制(): (567)10 = 5 x 102 + 6 x 101 + 7 x 100 十進(jìn)制由 0,1,2,3,4,5,6,7,8,9 十個(gè)數(shù)字組成. 二進(jìn)制(): (101)2 = 1 x 22 + 0 x21 + 1 x 20 二進(jìn)制由 0 , 1 兩個(gè)數(shù)字組成. 十進(jìn)制中,7 - 個(gè)位, 6 - 十位, 5 - 百位 二進(jìn)制中, 1,0,1-各代表一位,由右往左數(shù),分別為 0位, 1位, 2位 表示為 b0, b1, b2 八進(jìn)制(): (567)8 = 5x82 + 6x81 + 6x80 其元素為:0,1,2,3,4,5,6,7 由三位二進(jìn)制位組成的數(shù)字. 十六進(jìn)
9、制(): (567)16 = 5x162 + 6x161 + 7x160 其元素為:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F C語言教學(xué) 關(guān)于存儲(chǔ)的幾個(gè)概念關(guān)于存儲(chǔ)的幾個(gè)概念 字節(jié)字節(jié) (byte) : 計(jì)算機(jī)一般采用8位二進(jìn)制位組成一個(gè)字節(jié) . (1011,0101)2 = 1x27 + 0 x26 + 1x25 + 1x24 + 0 x23 + 1x22 + 0 x21 + 1x20 = 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1 = (181)10 每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié)每個(gè)存儲(chǔ)單元存放一個(gè)字節(jié) 字字(word):兩個(gè)字節(jié)組成一個(gè)字兩個(gè)字節(jié)
10、組成一個(gè)字 C語言教學(xué) 關(guān)于存儲(chǔ)的幾個(gè)概念關(guān)于存儲(chǔ)的幾個(gè)概念 每個(gè)字節(jié)包含8bits二進(jìn)制位,即從0 x000 xff。對應(yīng)于十進(jìn)制的0255。 一個(gè)字(word)由兩個(gè)字節(jié)組成,即 : 0 x00000 xffff。對應(yīng)于十進(jìn)制 的065,536,-64K。 有符號(hào)數(shù)在計(jì)算機(jī)中以補(bǔ)碼形式存儲(chǔ)。每個(gè)字節(jié)的最高位為符號(hào)位,例如: 7 6 5 4 3 2 1 0 (1 0 1 1,0 1 1 1)2 反碼:0 的反碼為 1;1 的反碼為 0。例如:(1101,1010)2的反 碼為(0010,0101)2 補(bǔ)碼:正數(shù)的補(bǔ)碼是它本身;負(fù)數(shù)的補(bǔ)碼為該數(shù)的反碼加一。例如: (1101,1010)2 首先
11、它是負(fù)數(shù),因?yàn)?bit7=1 。它的真值為 (0010,0101)2+1 =(0010,0110)2 = (38)10,所以該數(shù) 代表的數(shù)據(jù)為(-38)10 符號(hào)位:=1代表負(fù)數(shù);=0代表正數(shù) C語言教學(xué) 關(guān)于存儲(chǔ)的幾個(gè)概念關(guān)于存儲(chǔ)的幾個(gè)概念 一個(gè)有符號(hào)數(shù)的字節(jié)代表的數(shù)字范圍為: 0 x000 x7f 為正數(shù)。對應(yīng)的十進(jìn)制數(shù)為 0127; 0 xff 0 x80 為負(fù)數(shù)。對應(yīng)與十進(jìn)制的 -1 -128。 0 x00 , 0 x01, ,0 x7f,0 x80,0 x81,0 xff 有 符號(hào)十六進(jìn)制數(shù) 0 , 1 , ,127,-128, -127, -1 對應(yīng)的十進(jìn)制數(shù) C語言教學(xué) 計(jì)算機(jī)軟
12、件計(jì)算機(jī)軟件 硬件 操 作 系 統(tǒng) 應(yīng) 用 軟 件 硬件與軟件的關(guān)系 頭顱 人的頭顱與思想的關(guān)系 文化、思想 C語言教學(xué) 軟件分類 軟件由兩種組成:操作系統(tǒng)軟件系統(tǒng)軟件 , 應(yīng)用軟件應(yīng)用軟件 操作系統(tǒng)軟件(operation system): 實(shí)時(shí)操作系統(tǒng) 分時(shí)操作系統(tǒng) 多道批處理操作系統(tǒng) 網(wǎng)絡(luò)操作系統(tǒng) 目前流行的操作系統(tǒng) DOS Windows98 , Windows95 , Windows NT ,Windows 2000 UNIX Linux OS/2 C語言教學(xué) 計(jì)算機(jī)解題過程計(jì)算機(jī)解題過程 物 理 對 象 數(shù) 學(xué) 模 型 近 似 模 型 編制程序 計(jì)算機(jī)計(jì)算 輸出結(jié)果 系統(tǒng)分析員完成
13、的 工作 程序員完成 的工作 計(jì)算機(jī)完成的 工作 C語言教學(xué) 計(jì)算機(jī)語言的分類 機(jī)器語言:二進(jìn)制控制指令 低級語言:匯編語言(Assemble Language) 與機(jī)器語言一一 對應(yīng) 中級語言:C語言 宏匯編語言 FORTH語言 高級語言:Ada 、PASCAL、BASIC、FORTRAN-DOS下開發(fā)下開發(fā) Visual Fox 、Visual BASIC、Visual C、DELPHI- - windows下開發(fā)。下開發(fā)。 JAVA、PHP、HTML、JAVA Scrip、Perl -網(wǎng)絡(luò)開發(fā)網(wǎng)絡(luò)開發(fā) C語言教學(xué) 源程序的產(chǎn)生和執(zhí)行 計(jì)算機(jī)只能識(shí)別機(jī)器語言(及二進(jìn)制代碼),例如: 但用二
14、進(jìn)制代碼編程難以記憶、檢錯(cuò)。故只能用高級語言編程。 所以計(jì)算機(jī)須完成一個(gè)翻譯過程:將高級語言翻譯成機(jī)器語言。 高級語言源程序翻譯機(jī)器代碼 翻譯有三種方法: 匯編程序:匯編語言源程序代碼與機(jī)器指令一一對應(yīng)。 編譯程序:按某種約定將源代碼翻譯為目標(biāo)代碼,通過連接 程序?qū)⒛繕?biāo)程序與所調(diào)用的標(biāo)準(zhǔn)函數(shù)庫連接為一體,- 執(zhí)行程序。 解釋程序:與編譯程序思想相似,但是一條一條翻譯,譯出 一句執(zhí)行一句。BASIC C語言教學(xué) C語言產(chǎn)生及特點(diǎn) 語言(Language):Word and the methods of combining them for communication 語言由基本單元 + 語法組成
15、。 C語言的基本單元為:基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型 C語言的語法為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu) C語言的產(chǎn)生: Bell實(shí)驗(yàn)室于70年代初期在B語言基礎(chǔ)上設(shè)計(jì)出來的。然而直到 70年代后期,隨著UNIX的普及才促進(jìn)了C語言的普及。 C語言的特點(diǎn): 語言簡潔,使用方便靈活。C語言關(guān)鍵字少,ANSI C 標(biāo)準(zhǔn)總共只有32 個(gè)關(guān)鍵字,9 種控制語句,壓縮了一切不必要的成分。C 語言的書寫形 式比較自由,表示方法簡潔。 C語言教學(xué) C語言產(chǎn)生及特點(diǎn) 可移植性好。相對于硬件依賴性很強(qiáng)的匯編語言而言,C語言通過編譯 來得到可執(zhí)行代碼,統(tǒng)計(jì)資料表明:C語言編譯程序80%的代碼是公 共的,故可以稍加修改即可
16、用于其它的計(jì)算機(jī)。 表達(dá)能力強(qiáng)。 表達(dá)方式靈活。 可進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)。 可直接操作計(jì)算機(jī)硬件。 生成的目標(biāo)代碼質(zhì)量高。僅比匯編語言生成的代碼效率低10%20%, 是其它高級語言無法匹敵的。 目前流行的C語言編譯器: MSC、Quick C- Microsoft Co. Borland C、Turbo C-Borland Co. Watcom C C語言教學(xué) C語言舉例 一個(gè)簡單的C語言的例子: main() printf(”Hello,World!”); main 為特殊函數(shù): 是C程序的入口函數(shù)。 每個(gè)C程序必須有main()函數(shù)。 每個(gè)C程序只能有一個(gè)main()函數(shù) 函數(shù)名 函數(shù)入口參
17、數(shù),()不能省略 函數(shù)體 必須成對出現(xiàn) 庫函數(shù)名 函數(shù)入口參數(shù) C語言教學(xué) 數(shù)據(jù)類型 C語言教學(xué) 數(shù)據(jù)類型 基本類型 構(gòu)造類型 指針類型 空類型 整形 字符型 實(shí)型(浮點(diǎn)型) 枚舉類型 單精度 雙精度 數(shù)組類型 結(jié)構(gòu)類型 共用體類型 C語言數(shù)據(jù)類型分為如下幾類: C語言教學(xué) 數(shù)據(jù)類型 C的數(shù)據(jù)類型與我們習(xí)慣的數(shù)據(jù)類型的比較: 自然數(shù) 小數(shù) 文字 0,1,6 1.23, 234.08, 3.23x103 ABCD.Z、abcd.z 漢字、各種符號(hào) 整型類型 符點(diǎn)類型 字符類型 C語言教學(xué) 數(shù)據(jù)類型 常量 : 在程序運(yùn)行過程中,不能改變的量。 整形常量:0,1,2 實(shí)型常量:3.2,1.98 字符
18、常量:a,b,z 字符串常量:“abcd” C語言支持符號(hào)常量: #define M 12 變量:在程序運(yùn)行過程中,能改變的量。 變量包括三個(gè)方面: 變量的定義。 定義語法為:變量類型關(guān)鍵字 變量名表; 如定義一個(gè)整型變量:int m; 變量的引用。以變量名來引用。 變量的初始化。int m = 10; C語言教學(xué) 數(shù)據(jù)類型 整形變量的分類: 基本整形:int 短整形:short int / short 長整形:long int /long 有符號(hào)類型:signed 無符號(hào)類型:unsigned C語言整形變量的列表如下: int m = 10;變量m被分配在內(nèi)存中,內(nèi)存中占 2個(gè)字 節(jié), 有
19、一個(gè)與之相對應(yīng)的地址。 實(shí)型變量:float tm;double mm; 內(nèi)存中占4/8個(gè) 字節(jié) 字符變量:char ch; 內(nèi)存中占1個(gè)字節(jié) 字符串變量:char mb; 內(nèi)存中占n個(gè)字節(jié) 低位字節(jié) 高位字節(jié) 2000 2001 0 x00 0 x0a C語言教學(xué) 數(shù)據(jù)類型 類型比特?cái)?shù)取值范圍 int16-32768 32767 unsigned int160 65536 short 16-32768 32767 unsigned short 160 65536 long 32 -2147483648 2147483647 unsigned long320 4294967295 注:無uns
20、igned則默認(rèn)為signed;long / short 后不跟任何類 型定義,則默認(rèn)為int。 C語言教學(xué) 數(shù)據(jù)類型 實(shí)型變量分類表: 類型比特?cái)?shù)取值范圍有效數(shù)字 float3210-37103867 double6410-307103081516 long double12810-49311049321819 C語言教學(xué) 數(shù)據(jù)類型 字符型數(shù)據(jù): 普通字符常量是用單引號(hào)括起來的一個(gè)字符。a,A, 特殊字符常量: n-換行 t-水平制表 b-退格 r-回車 f-換頁 -反斜杠字符 -帶單引號(hào)字符 ”-雙引號(hào)字符 C語言教學(xué) 數(shù)據(jù)類型 字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式: 將一個(gè)字符常量放到一個(gè)字符變量
21、中,實(shí)際上是將該 字符的ASCII代碼放到存儲(chǔ)單元中。 每一個(gè)字符都對應(yīng)一個(gè)ASCII。ASCII規(guī)定了128個(gè)字 符。例如: 字符09 - 0 x30, . , 0 x39 字符az - 0 x61, . ,0 x7A 字符AZ - 0 x41, . ,0 x5A C語言教學(xué) 數(shù)據(jù)類型 變量賦初值有兩種辦法: 在定義變量的同時(shí)賦初值。 如:int a=3; float f=4.367; char ch=a; 在程序運(yùn)行中賦值。 如:int a; a=3; C語言教學(xué) 類型轉(zhuǎn)換 類型轉(zhuǎn)換: 自動(dòng)類型轉(zhuǎn)換:C編譯器將所有操作數(shù)向具有最大尺寸的操作數(shù)類型上 自動(dòng)轉(zhuǎn)換。轉(zhuǎn)換方向如下圖所示: doub
22、lefloat long unsignedintchar,short 精度低 精度高 所占內(nèi)存單元數(shù) C語言教學(xué) 類型轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換: (type)表達(dá)式 例如:int a; float f=3.12; a = (int) f; a = (int)( 3.1415926 * 3.0 ); 注:因有類型轉(zhuǎn)換的存在,故而1/2 = 0;1/2.0 = 0.5; 在編程中一定要注意其中的差別。 C語言教學(xué) 運(yùn)算符列表 算術(shù)運(yùn)算符:+,-,*,/,% 關(guān)系運(yùn)算符:, =, =, != 邏輯運(yùn)算符:!, ( x = 2 ) 因?yàn)?+ 運(yùn)算符在變量 x 的后面,為后增運(yùn)算,所以 先訪問 x 再 + 1
23、,該算式可以分解為如下幾步: x = x + x; x = 2 + 2 = 4; x+; x = x + 1 = 4 + 1 = 5; x+; x = x + 1 = 5 + 1 = 6; 運(yùn)算結(jié)果為 x = 6; C語言教學(xué) 自增(減)運(yùn)算 若上例改為如下: y = (x+) +( x+); 可以分解為:; ; ; 例:()(); 可以分解為:; ; ; C語言教學(xué) 運(yùn)算符的優(yōu)先順序 1(), ,-,. 2 !, ,+,-, - ,*, initgraphics( C語言教學(xué) 圖形函數(shù) 運(yùn)用圖形庫函數(shù): 畫線函數(shù):line(x,y,xi,yi); 畫圓函數(shù):circle(x,y,radiu)
24、; 畫矩形函數(shù):rectangle(x,y,xi,yi); 設(shè)顏色:setcolor(顏色值); 設(shè)填充模式:setfillstyle(); C語言教學(xué) 選擇結(jié)構(gòu)程序設(shè)計(jì) C語言提供了三種形式的條件語句: 單路選擇:if(表達(dá)式) 語句 A; 雙路選擇:if(expression)語句 A; else 語句 B; 多路選擇:switch(expression) case 常量1:語句 A; case 常量2:語句 B; default:語句 C; C語言教學(xué) 選擇結(jié)構(gòu)的流程圖表示法 用流程圖表示三種選擇結(jié)構(gòu): 表達(dá)式 真 假 語句 A 單路選擇 表達(dá)式 語句 A語句 B 真假 雙路選擇 C語言
25、教學(xué) 選擇結(jié)構(gòu)的流程圖表示法 表達(dá)式 . .=c1=c2=c3=c4=cn 語句 A語句 B語句 C語句 D語句 N 多路選擇 C語言教學(xué) 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) C語言有四種循環(huán)方法: if ( ) goto while(表達(dá)式) 語句; (或 復(fù)合語句 ) do 語句 ; ( 或 復(fù)合語句 ) while(表達(dá)式表達(dá)式); for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語句; 或 復(fù)合語句 C語言教學(xué) 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) for 循環(huán)有以下的變體: for( ; ; ) 表達(dá)式1,表達(dá)式2,表達(dá)式3皆可省略,但 ( ) 與 ; 不能省略. for(i=1,j=10; i循環(huán)的初始條件. 循環(huán)的終止條
26、件. 循環(huán)次數(shù). C語言教學(xué) 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) ifgoto 此循環(huán)結(jié)構(gòu)不宜于結(jié)構(gòu)程序設(shè)計(jì),在C程序設(shè)計(jì)中必須避免使 用. do -循環(huán)的起始點(diǎn). 計(jì)數(shù)器-記錄循環(huán)次數(shù) while(表達(dá)式)-判斷循環(huán)的終止條件,表達(dá)式=TRUE, 則繼續(xù)循環(huán);否則,退出循環(huán). while(表達(dá)式)-即為起始點(diǎn),又為判斷循環(huán)的終止條件.當(dāng)表達(dá) 式=TRUE,則繼續(xù)循環(huán);否則,退出循環(huán). C語言教學(xué) 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) For(表達(dá)式1; 表達(dá)式2 ;表達(dá)式3) 循環(huán)起始條件循環(huán)結(jié)束條件循環(huán)增量 C語言教學(xué) 循環(huán)嵌套結(jié)構(gòu) 循環(huán)嵌套:大循環(huán)中包含小循環(huán) for(i=0;i10;i+) for(j=0;j10;j+)
27、循環(huán)體 大循環(huán) 小循環(huán) C語言教學(xué) 循環(huán)嵌套結(jié)構(gòu) 循環(huán)嵌套的執(zhí)行過程: 先執(zhí)行內(nèi)層循環(huán),再執(zhí)行外層循環(huán).如上例所示, 當(dāng) i=0 時(shí): 內(nèi)層循環(huán)執(zhí)行 10 次; 當(dāng) i=1 時(shí): 內(nèi)層循環(huán)執(zhí)行 10 次; . 當(dāng) i=10 時(shí): 內(nèi)層循環(huán)執(zhí)行 10 次; 因此,內(nèi)層循環(huán)共被執(zhí)行 10 x 10 = 100 次 C語言教學(xué) 循環(huán)嵌套結(jié)構(gòu) 循環(huán)嵌套的形式: 外層循環(huán) 內(nèi)層循環(huán) 內(nèi)層循環(huán) 內(nèi)層循環(huán) C語言教學(xué) EXAMPLE 某人在存款賬號(hào)上存入人民幣1000.00元,年利率為5%。假定所有的利 息都存入該賬戶上,計(jì)算并打印出10年后其賬戶上的存款數(shù)。存款數(shù)用 如下公式計(jì)算: a=p*(1+r)n
28、p-初始投資值(本金) r-年利率 n-年數(shù) a-n年后的存款數(shù) C語言教學(xué) EXAMPLE #include main() float p,r,n,a; printf(“請輸入本金:”); scanf(“%f”, printf(“請輸入年利率:”); scanf(“%f”, printf(“請輸入計(jì)算年份:”); scanf(“%f”, a = p*pow(1+r, n); printf(“年的本金利息總和為:”, n, a); C語言教學(xué) 上機(jī)作業(yè) 公司每星期都要給雇員(包括經(jīng)理、小時(shí)工、 銷售員、計(jì)件工)發(fā)薪水。其中,小時(shí)工在 頭40個(gè)小時(shí)按規(guī)定工時(shí)的工資10元/小時(shí)付 薪水,超過的工時(shí)
29、按規(guī)定工時(shí)工資的1.5倍付 薪;銷售員的薪水是250元/每周,再加上本 周銷售額的5.7%的提成;計(jì)件工每周的工資是 一周生產(chǎn)的產(chǎn)品數(shù)乘以每件產(chǎn)品的報(bào)酬,該公 司內(nèi)的每個(gè)計(jì)件工只生產(chǎn)一種產(chǎn)品(10元/每 件)。編寫一個(gè)發(fā)放薪水的程序。 C語言教學(xué) FUNCTION Moe Curly Larry C語言教學(xué) 數(shù)學(xué)函數(shù)(1) ( )yf x 函數(shù)名 C語言教學(xué) 數(shù)學(xué)函數(shù)(2) 2 235yxx nm zaxbyc 一個(gè)自變量,一個(gè)因變量 二個(gè)自變量,一個(gè)因變量 C語言教學(xué) 數(shù)學(xué)函數(shù)(3) 1 2 1 yx dx cos()yt 2 4ybac lim( ) x yf x n n n n d x
30、ya dt () m m yf x C語言教學(xué) 數(shù)學(xué)函數(shù)(4) 11234 21234 31234 41234 2538 16610 8524 32539 yxxxx yxxxx yxxxx yxxxx C語言教學(xué) 數(shù)學(xué)函數(shù)(5) 11 22 33 44 2538 16610 8524 32539 yx yx yx yx YAX 自變量因變量 C語言教學(xué) 數(shù)學(xué)函數(shù)(6) ( )yf x 一個(gè)變量 二個(gè)變量 N個(gè)變量 一個(gè)變量 二個(gè)變量 N個(gè)變量 自變量 與因變 量的關(guān) 系 C語言教學(xué) 數(shù)學(xué)函數(shù)(7) 集合A 關(guān)系 集合B C語言教學(xué) 函數(shù)(FUNCTION) 函數(shù)(Function):Func
31、tions break large computing tasks into smaller ones,and enable people to build on what others have done instead of starting over from scratch. 函數(shù)是將大程序分割為小塊的基本單元。 說明: L一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)組成。 L一個(gè)C程序由一個(gè)或多個(gè)源程序文件組成。 LC程序的執(zhí)行從main函數(shù)開始,調(diào)用其他函數(shù)后流程回到 main函數(shù),在main函數(shù)中結(jié)束整個(gè)程序運(yùn)行。 L所有函數(shù)都是平行的,即函數(shù)定義時(shí)是互相獨(dú)立的,一個(gè) 函數(shù)并不從屬于另一個(gè)函數(shù)
32、。 C語言教學(xué) 函數(shù)分類(FUNCTION) B標(biāo)準(zhǔn)函數(shù),即庫函數(shù)。 B用戶自定義函數(shù)。 L從函數(shù)的形式上看: B無參函數(shù)。 B有參函數(shù)。 y函數(shù)定義形式 無參函數(shù): type FunctionName() 數(shù)據(jù)類型 函數(shù)名 括號(hào)內(nèi)為空表示為無參函數(shù) ()不能省略 函數(shù)體 C語言教學(xué) 函數(shù)(FUNCTION) 有參函數(shù): type FunctionName(parameter) 參數(shù)以“,”區(qū)分每個(gè)參數(shù), 每個(gè)參數(shù)順序不限 對形參的聲明有兩種方式:古典型、現(xiàn)代型: /- 古典型 -/ int max( a, b ) int a,b; . . C語言教學(xué) 函數(shù)(FUNCTION) /-現(xiàn)代型-/
33、 int max( int a, int b ) . . 函數(shù)參數(shù)與函數(shù)值: 形參形參( 形式參數(shù)形式參數(shù) ):在定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量 名稱為“形式參數(shù)”. 實(shí)參( 實(shí)際參數(shù) ):在主調(diào)函數(shù)中調(diào)用一個(gè)函數(shù)值,函數(shù)名后 面括號(hào)中的參數(shù)(或表達(dá)式)稱為“實(shí)參”. C語言教學(xué) 函數(shù)(FUNCTION) 在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時(shí),他們并不占用內(nèi)存空間,只有在發(fā)生 函數(shù)調(diào)用時(shí),形參才被分配內(nèi)存,在函數(shù)調(diào)用結(jié)束后,形參所占的內(nèi)存單元也被釋放。 實(shí)參可以是常量、變量、表達(dá)式,但要求他們有確切的值。 在被定義的函數(shù)中,必須指定形參的類型。 實(shí)參與形參的類型應(yīng)相同或賦值兼容。 實(shí)參
34、變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單項(xiàng)傳遞,只能由實(shí)參傳給形參,而 不能由形參傳回來給實(shí)參。 C語言教學(xué) 函數(shù)的返回值 通過函數(shù)調(diào)用使主調(diào)函數(shù)能得到一個(gè)確定的 值,這就是函數(shù)的返回值。 函數(shù)的返回值是通過函數(shù)中的 return 語句獲得的。 Max(int x,int y) . . return z; 函數(shù)的返回值類型在函數(shù)定義時(shí)指定。 C語言教學(xué) 函數(shù)返回值 int max(float x,float y) char letter(char c1,char c2) 如果函數(shù)名前沒有數(shù)據(jù)類型,一律自動(dòng)按整型處理。 如果函數(shù)值類型和 return 語句中的表達(dá)式的值不一致,則以函數(shù)類型為準(zhǔn)
35、。 為了明確表示“不帶回參數(shù)”,可以用“void”表示“無類型”。 函數(shù)值為整型 函數(shù)值為字符型 C語言教學(xué) 函數(shù)的調(diào)用 函數(shù)調(diào)用的一般形式: 函數(shù)名(函數(shù)名( 實(shí)參表列實(shí)參表列 );); 如果調(diào)用無參函數(shù),“實(shí)參列表”可以沒有,但() 不能省略。 如果實(shí)參表列包含多個(gè)參數(shù),各參數(shù)間以“,”隔 開。 實(shí)參與型參按順序?qū)?yīng)。 函數(shù)調(diào)用方式: 函數(shù)語句 printstar(); C語言教學(xué) 函數(shù)的調(diào)用 函數(shù)表達(dá)式 c = 2*max(a,b); 函數(shù)參數(shù) m = max(a,max(b,c); C語言教學(xué) 函數(shù)的聲明和函數(shù)原型 在一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù)須具備以下條件: 被調(diào)用函數(shù)必須是已經(jīng)存在的
36、函數(shù)(庫函數(shù)或用戶自己定 義的函數(shù))。 如果使用庫函數(shù),應(yīng)在本文件的開頭包含有關(guān)庫函數(shù)的信 息 #includestdio.h 如果使用用戶自己定義的函數(shù),而且該函數(shù)與調(diào)用它的函數(shù) (即主調(diào)函數(shù)) 在同一個(gè)文件中,一般還應(yīng)該在主調(diào)函數(shù)中對 被調(diào)函數(shù)作聲明(declaration)。 float add(float a,float b); 以上函數(shù)聲明稱為函數(shù)原型(function prototype) C語言教學(xué) 函數(shù)的聲明和函數(shù)原型 上面的函數(shù)聲明形參名可以省略,如以下: float add(float,float); C語言教學(xué) 函數(shù)的嵌套調(diào)用 C語言的函數(shù)定義都是互相平行、獨(dú)立的,即在定
37、義函數(shù)時(shí),一個(gè)函數(shù) 內(nèi)不能包含另一個(gè)函數(shù)。也就是說C語言不能嵌套定義函數(shù)。 C語言可以嵌套調(diào)用函數(shù)。即在調(diào)用一個(gè)函數(shù)的過程中,又調(diào)用另一個(gè) 函數(shù)。 C語言教學(xué) 函數(shù)的嵌套調(diào)用 Main函數(shù) 調(diào)用a函數(shù) a函數(shù) 調(diào)用b函數(shù) b函數(shù) 結(jié)束 C語言教學(xué) 變量 變量按變量在函數(shù)中定義的位置不同分為: 局部變量(Local variable):在一個(gè)函數(shù)內(nèi)部定義的變量, 只有在本函數(shù)內(nèi)部才能使用這些變量。 全局變量(Global variable):在函數(shù)外部定義的變量, 可以為本文件中其他函數(shù)所共用。 float f1( int a ) int x,b,c; x,b,c為局部變量 只在函數(shù) f1內(nèi)部
38、有效,離開本函數(shù) x,b,c自動(dòng)消亡。 C語言教學(xué) 局部變量 說明: v局部變量在函數(shù)被調(diào)用時(shí)由系統(tǒng)為變量申請內(nèi) 存,變量開始生存;當(dāng)函數(shù)結(jié)束時(shí),變量被釋放, 變量消亡。 v形式參數(shù)為局部變量。 v不同的函數(shù)中可以使用相同名字的變量,他們代表不同的對象,互不干擾。 vmain函數(shù)中定義的變量只在main函數(shù)中有效。 C語言教學(xué) 全局變量 變量a、b、c、m、n都 是全局變量,但作用域 不同。函數(shù)3與函數(shù)4 可以用變量a、b、c、 m、n;而函數(shù)1與函 數(shù)2只能使用變量a、b、 c。原因是外部變量定 義的位置不同 函數(shù)1 函數(shù)2 函數(shù)3 函數(shù)4 int a,b,c; int m,n; 全局變量m
39、,n 的作用范圍 全局變量a,b,c 的作用范圍 C語言教學(xué) 全局變量 說明: v同一個(gè)文件中的所有函數(shù)都能引用全局變量,如果在一個(gè) 函數(shù)中改變了全局變量的值,均會(huì)影響到其他函數(shù),因此, 可以用來完成函數(shù)之間的參數(shù)傳遞。 v建議在不必要時(shí)不要使用全局變量。原因如下: 全局變量在程序的全部執(zhí)行過程中占用內(nèi)存。 使函數(shù)的通用性降低了。 全局變量過多,會(huì)降低程序的清晰性。 如果在同一個(gè)源文件中,外部變量與局部變量同名,則在局部變量作用范圍內(nèi),外部變量被屏蔽,不起作用。 C語言教學(xué) 變量的例子 Int a=3,b=5; max(int a,int b) return ab?a:b; main() in
40、t a = 8; printf(”%d”,max(a,b); a、b為全局變量 a、b為局部變量 A為局部變量 運(yùn)行結(jié)果為:8 C語言教學(xué) 變量的存儲(chǔ)類 從變量值的存在時(shí)間(即生存期)角度來看,可以分為 靜態(tài)存儲(chǔ)方式(static ):在程序運(yùn)行期間分配固定的存儲(chǔ)空間的方式。 動(dòng)態(tài)存儲(chǔ)方式(dynamic):在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)分配存儲(chǔ)空 間的方式。 C語言教學(xué) 內(nèi)存空間的分配 在內(nèi)存中,供用戶使用的存儲(chǔ)空間可以分為三部分: 程序區(qū) 靜態(tài)存儲(chǔ)區(qū) 動(dòng)態(tài)存儲(chǔ)區(qū) 存儲(chǔ)程序 全局變量 靜態(tài)局部變量 函數(shù)的形參 自動(dòng)變量 函數(shù)調(diào)用時(shí)的現(xiàn)場保護(hù)和返回地址 C語言教學(xué) 變量的存儲(chǔ)類 在C語言中每一
41、個(gè)變量和函數(shù)都有兩個(gè)屬性:數(shù)據(jù) 類型、數(shù)據(jù)的存儲(chǔ)類,因而標(biāo)準(zhǔn)的變量或函數(shù)定義 應(yīng)為: 存儲(chǔ)類 數(shù)據(jù)類型 變量名; 存儲(chǔ)類 數(shù)據(jù)類型 變量名(形參); C語言的變量存儲(chǔ)類包括以下四類 自動(dòng)的(auto); 靜態(tài)的(static); 寄存器的(register); 外部的 (extern); C語言教學(xué) AUTO變量 函數(shù)中的局部變量,如不特別聲明為static變量,都是動(dòng) 態(tài)地分配存儲(chǔ)空間的。auto關(guān)鍵字可以省略,即如果變 量、函數(shù)的前面沒有說明變量的存儲(chǔ)類,則默認(rèn)該變量、 函數(shù)的值為auto類型。 C語言教學(xué) STATIC變量 靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)類別。在整個(gè)程序 運(yùn)行期間內(nèi)存不釋放。
42、對靜態(tài)局部變量是在編譯是賦初值的,即只賦 一次初值,在程序運(yùn)行時(shí)他已有初值。以后每 次調(diào)用函數(shù)時(shí)不再重新賦初值,而只是保留上 次函數(shù)調(diào)用的結(jié)果。 如果在定義局部變量時(shí)不賦初值,編譯是自動(dòng) 被賦為0。 雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后依然存在, 但其他函數(shù)不能引用他。 C語言教學(xué) REGISTER變量 放在CPU內(nèi)部寄存器的變量,register變量的優(yōu)點(diǎn)為運(yùn)算速度快。計(jì)算 機(jī)中內(nèi)存有兩種類型,如圖所示: CPU 寄存器 內(nèi)存 C語言教學(xué) REGISTER變量 只有局部自動(dòng)變量和形式參數(shù)可以作為register變量,其他 (Global)不行。 計(jì)算機(jī)系統(tǒng)中register數(shù)目有限,不能無限制定
43、義register變 量。 局部靜態(tài)變量不能定義為register變量。 C語言教學(xué) EXTERN變量 extern變量為外部變量。extern變量為對已經(jīng)定義的變量進(jìn)行 外部說明。所謂的外部,是相對于同一個(gè)源文件中函數(shù)的 外部,或本文件外其他源文件中的變量而言的。 C語言教學(xué) EXTERN變量 函數(shù)1 extern int a,b 函數(shù)2 函數(shù)3 int a,b; int 類型變量 a,b為全局 變量,其作用域?yàn)楹瘮?shù)2與 函數(shù)3,函數(shù)1要想訪問 a,b則必須在函數(shù)中聲明 為外部變量 C語言教學(xué) EXTERN變量 若一個(gè)程序中包含多 個(gè)文件,一個(gè)文件I 中的全局變量對另一 個(gè)文件II來講則是外
44、 部變量,若欲在文 件II中訪問文件I 的全局變量,必須在 文件II中對所要引用 的變量進(jìn)行外部聲明。 文件-I int a,b; 文件-II extern int a,b; C語言教學(xué) ARRAY C語言教學(xué) 數(shù)組(ARRAY) 例:將a,b,c三個(gè)數(shù)按由大到小的順序排列. 解須分為以下三步: if (ab) t=a; a=b; b=t; if (ac) t=a; a=c; c=t; if (bc) t=b; b=c; c=t; 是否可以將相同的部分用循環(huán)來實(shí)現(xiàn)? 設(shè)a,b,c三個(gè)數(shù)用 x i表示,令x1=a,x2=b,x3=c 上面的三步可以表示為: if(xix(i+1) t=xi; x
45、i=x(i+1); x(i+1)=t; 數(shù)組 C語言教學(xué) 定義數(shù)組(ARRAY) 數(shù)組是按順序存儲(chǔ)的一組相同類型的數(shù)據(jù)。 數(shù)組的定義: 類型 數(shù)組名下標(biāo)1下標(biāo)2.下標(biāo)n 當(dāng)有一個(gè)下標(biāo)時(shí)為一維數(shù)組 當(dāng)有二個(gè)下標(biāo)時(shí)為二維數(shù)組 當(dāng)有n個(gè)下標(biāo)時(shí)為n維數(shù)組 數(shù)組需注意的幾個(gè)問題: 數(shù)組所占的內(nèi)存單元數(shù) = 其中N代表第 i 位數(shù)組元素個(gè)數(shù) 數(shù)據(jù)類型( 1 0 sizeofN n i i C語言教學(xué) 數(shù)組說明(ARRAY) 例如:int Matrix34; 該二維數(shù)組所占內(nèi)存空間 = 3 x 4 x sizeof(int) = 3 x 4 x 2 = 24bytes 每個(gè)數(shù)組下標(biāo)范圍由 0 n-1。 例如
46、: int Arry20; 數(shù)組 Arry 由20個(gè)整形數(shù)組成,第1個(gè)元素為 Arry0,.,最后一 個(gè)元素為 Arry19 一個(gè)數(shù)組元素實(shí)際上就是一個(gè)變量,代表一個(gè)內(nèi)存單元。 C語言規(guī)定一個(gè)數(shù)組不能整體引用,每次只能引用數(shù)組的一個(gè)元素。 C語言程序運(yùn)行時(shí),系統(tǒng)不自動(dòng)檢查數(shù)組元素的下標(biāo)是否越界,而數(shù)組 的越界會(huì)造成系統(tǒng)的崩潰。因此編程者必須注意數(shù)組的界限。因此編程者必須注意數(shù)組的界限。 C語言的數(shù)組是靜態(tài)分配內(nèi)存空間的,不允許對其進(jìn)行動(dòng)態(tài)定義語言的數(shù)組是靜態(tài)分配內(nèi)存空間的,不允許對其進(jìn)行動(dòng)態(tài)定義。 數(shù)組元素在內(nèi)存中的分配方式 C語言教學(xué) 一、二維數(shù)組(ARRAY) 例如:例如:char ch1
47、0; Ch0Ch1Ch2Ch3Ch4Ch5Ch6Ch7Ch8Ch9 二維數(shù)組: 例如:char tm25; Ch00Ch01Ch02Ch03Ch04 Ch10Ch11Ch12Ch13Ch14 三維數(shù)組: 例如:char tm232; C語言教學(xué) 數(shù)組初始化(ARRAY) Ch00 0 Ch00 1 Ch01 0 Ch01 1 Ch10 0 Ch10 1 Ch11 0 Ch11 1 Ch02 0 Ch02 1 Ch12 0 Ch12 1 數(shù)組初始化: int a8 = 1,2,3,4,5,6,7,8; int a8 = 1,2,3; *當(dāng)賦初值個(gè)數(shù)少于數(shù)組元素的個(gè)數(shù)時(shí),將自動(dòng)為后面的元素賦 0,
48、 如第二例:a0=1,a1=2,a2=3,a3=0,a4=0, a5=0,a6=0,a7=0。 *當(dāng)賦初值個(gè)數(shù)多于數(shù)組元素個(gè)數(shù)時(shí),系統(tǒng)編譯出錯(cuò)。 C語言教學(xué) 數(shù)組的引用(ARRAY) C語言規(guī)定只能單個(gè)引用數(shù)組元素,而不能整個(gè)引用數(shù)組. 例: int a10 ; 定義一個(gè)整型數(shù)組,由10個(gè)元素組成。 for(i=0;i10; i+) ai = 0; C語言教學(xué) 字符數(shù)組 字符數(shù)組:由字符組成的數(shù)組。 字符數(shù)組的定義與引用前面的數(shù)組相同 初始化方式分為兩種: char ch=a,b,c; char ch=“I am happy”; C語言教學(xué) 字符串(ARRAY) 字符串結(jié)束標(biāo)志: 0 字符串處
49、理函數(shù): puts ( 字符數(shù)組 ); gets ( 字符數(shù)組 ); strcat ( *dest, *source ); strcpy ( *dest, *source ); strcmp ( *str1, *str2); 上述函數(shù)的原型說明在 中 C語言教學(xué) EXAMPLES 數(shù)組排序:將無序數(shù)列=有序數(shù)列. 將 21, 3, 6, 2, 60, 12, 56, 8數(shù)列由小到大排序. 排序結(jié)果為 2,3,6,8,12,21,56,60. 定義一個(gè)數(shù)組m8=21, 3, 6, 2, 60, 12, 56, 8; 選擇排序方法: J普通法分類 J冒泡法分類 (bubble sort); J插入
50、法分類 (insertion sort); J選擇法分類 (selection sort); C語言教學(xué) EXAMPLES 普通法: 21 3 6 2601256 8 0 1 2 3 4 5 6 7 321 6 2601256 8 221 6 3601256 8 621 3601256 8 C語言教學(xué) EXAMPLES 621 3601256 8 321 6601256 8 621601256 8 12602156 8 860215612 C語言教學(xué) EXAMPLES 860215612 21605612 12605621 566021 216056 5660 C語言教學(xué) EXAMPLES (
51、程序如下: int a8=21,3,6,2,60,12,56,8; main() int i, j, temp; for(i=0;i8;i+) for(j=i+1;j8;j+) if( ajai ) temp = ai; ai = aj; aj = temp; C語言教學(xué) EXAMPLES 冒泡法排序 21 3 6 2601256 8 0 1 2 3 4 5 6 7 321 6 2601256 8 3 621 2601256 8 3 6 221601256 8 C語言教學(xué) EXAMPLE 3 6 221601256 8 3 6 221126056 8 3 6 221125660 8 3 6 2
52、211256 860 3 6 2211256 8 C語言教學(xué) EXAMPLE 3 6 2211256 8 3 2 6211256 8 3 2 6211256 8 3 2 6122156 8 3 2 6122156 8 C語言教學(xué) EXAMPLE 3 2 6122156 8 3 2 61221 856 C語言教學(xué) EXAMPLE (程序如下: int a8=21,3,6,2,60,12,56,8; main() int i, j, temp; for(i=0;i8;i+) for(j=0; jaj+1 ) temp = aj; aj+1 = aj; aj+1 = temp; C語言教學(xué) EXAM
53、PLES 2 3 660 21 把被分類的記錄逐個(gè)取出,插在適當(dāng)?shù)奈恢?。?dāng)?shù)?i 遍整理 時(shí),a1,a2,.,ai-1已經(jīng)是排好序的;取出第 i 個(gè)記 錄ai,在整理好的序列中,為ai找到一個(gè)適當(dāng)?shù)奈恢?j。 為了便于控制循環(huán)結(jié)束,我們引入數(shù)組元素a0,使其內(nèi) 容小于a1,.,an中的任意一內(nèi)容,a0= - C語言教學(xué) EXAMPLE (程序如下: int a9=0,21,3,6,2,60,12,56,8; main() int i, j, temp; a0 = -1; for(i=1;iaj-1 ) temp = aj; aj = aj-1; aj-1 = aj; j = j -1; C語言
54、教學(xué) EXAMPLE 選擇法排序: int a8=21,3,6,2,60,12,56,8; main() int i,j,k,temp; for(i=0;i7;i+) k=i; for(j=i+1;j8;j+) if( ajak ) k=j; if(k!=j) temp = ai; ai = ak; ak = temp; C語言教學(xué) 數(shù)組實(shí)例 投擲兩個(gè)骰子,計(jì)算投擲出的兩個(gè)值的和. 注:因?yàn)槊?個(gè)骰子投擲出的值都在16之間,因此兩個(gè)值的和在212 之間.編一個(gè)程序,在程序中把兩個(gè)骰子各擲3600次,用一維 數(shù)組記錄每一種可能值出現(xiàn)的次數(shù),并計(jì)算出現(xiàn)的概率. 234567 345678 4567
55、89 5678910 67891011 789101112 1 2 3 4 5 6 1 2 4 3 5 6 投擲兩個(gè)骰子可能出現(xiàn)的36種結(jié)果 C語言教學(xué) 數(shù)組實(shí)例 首先要產(chǎn)生一個(gè)16之間的隨機(jī)數(shù).Turbo C中有 一個(gè)函數(shù)可以產(chǎn)生隨機(jī)數(shù): random(); 但需要引入兩個(gè)頭文件 #include #include C語言教學(xué) 上機(jī)作業(yè) 40個(gè)學(xué)生被邀請來給自助餐廳的食品打分,分?jǐn)?shù)為從110的10個(gè)等級 (1意味著最低分,10表示最高分),在數(shù)組中設(shè)置這40個(gè)值,然后統(tǒng)計(jì)調(diào)查 結(jié)果。并用*打印出直方圖。 ElementvalueHistogram 1 5 * 2 10 * 3 7 * . C
56、語言教學(xué) POINTERS C語言教學(xué) 指針(POINTER) 指針就是地址.(A pointer is a variable that contains the address of a variable.)-可以理解為: 指針是一個(gè)變量,該變 量存放一個(gè)地址,此地址為某一個(gè)變量的地址 1232000 內(nèi)存單元的內(nèi)容內(nèi)存單元的地址 ab 變量名 訪問某一個(gè)內(nèi)存的辦法有兩種: 1.通過變量名可以直接訪問到內(nèi)存中的內(nèi)容. 2.通過內(nèi)存單元的地址訪問內(nèi)存單元. C語言教學(xué) 定義指針(POINTER) 如何用指針訪問內(nèi)存單元? 定義一個(gè)指針變量,類型與所訪問的數(shù)據(jù)類型一致. 數(shù)據(jù)類型 *變量名; 例
57、如:int *p; 表示 p是一個(gè)指針變量。 p指向一個(gè)整型變量 p只能賦地址值。 簡單數(shù)據(jù)類型 復(fù)雜數(shù)據(jù)類型 自定義 表示定義的變量 為指針型變量 C語言教學(xué) 指針指向變量(POINTER) 將已經(jīng)定義的指針與某一變量相關(guān)。 例如:int a=10; p = -將整型變量a的地址賦予指針 變量p. 執(zhí)行前, p=0 x2361243, a=10. 執(zhí)行后, p=2000, a=10. 10 a 2000 p C語言教學(xué) 指針訪問變量(POINTER) 通過指針訪問內(nèi)存的內(nèi)容. 例如: int b; b = *p;-將地址為2000的內(nèi)容賦予整型變量b。 指針的注意事項(xiàng): 定義后的指針變量必須
58、賦予地址。 給指針賦常數(shù)值時(shí),必須清楚所賦地址處的數(shù)據(jù)用途。 指針只能進(jìn)行四種運(yùn)算:+、-、+、-。 b = 10; C語言教學(xué) 指針的存儲(chǔ)(POINTER) 指針在內(nèi)存中的存儲(chǔ)。 指針既然是一個(gè)變量,內(nèi)存中必然占據(jù)一部分內(nèi) 存單元。假定一個(gè)指針變量占據(jù)2bytes的內(nèi)存單 元。 則上面的三個(gè)例子組合到一起,執(zhí)行過程如下: int a=10,b;-step 1 int *p;-step 2 p = -step 3 b = *p; -step 4 C語言教學(xué) a 1 0 34143 2000 2002b 指針模擬演示(POINTER) step 1: int a=10, b; step 2: i
59、nt *p; . . 0 x96213 5000 為整型變量a、b分別分配內(nèi)存單元, 將變量a的內(nèi)存單元賦10 為指針變量p分配一內(nèi) 存單元,地址為 5000。 step 3: p = 2000 2000 step 4: b = *p; 10 10 C語言教學(xué) 指針運(yùn)算: int *p,a10=1,2,3,4,5,6,7,8; p = a;將指針p指向 數(shù)組a *p+; *p-;相當(dāng)于*p; p+; *(p+);*(p-); (*p) +;(*p) -; *+p;+*p; 注: p+1 代表指針指向下一個(gè)數(shù)據(jù)類型,指針移動(dòng) 的 寬度為: p+1 - p+sizeof(type) C語言教學(xué) 指
60、針(POINTER)與數(shù)組(ARRAY)的 關(guān)系 指針與數(shù)組的關(guān)系分為三種: 指針與一維數(shù)組的關(guān)系。 指針與多維數(shù)組的關(guān)系。 指針與字符數(shù)組的關(guān)系。 指針與一維數(shù)組的關(guān)系。 定義一個(gè)指向數(shù)組元素的指針: int a10=1,2,3,4,5,6,7,8,9,0; int *p; p = 指向數(shù)組的第0個(gè)元素。 p = a; 指向數(shù)組的首地址。 C語言教學(xué) 指針(POINTER)與一維數(shù)組(ARRAY)的關(guān) 系 數(shù)組元素與地址: 1 2 3 4 5 6 7 8 9 0 2000 2008 2010 2012 2014 2016 2018 2002 2004 2006 a0 a3 a4 a5 a6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班級班委會(huì)的建設(shè)與培養(yǎng)計(jì)劃
- 企業(yè)安全文化建設(shè)與保安工作關(guān)系計(jì)劃
- 工作計(jì)劃與目標(biāo)達(dá)成的關(guān)系
- 生物催化過程優(yōu)化與控制的原則
- 2025年內(nèi)螺紋銅管項(xiàng)目合作計(jì)劃書
- 餐飲行業(yè)供應(yīng)鏈優(yōu)化解決方案協(xié)議
- Soyasaponin-Aa-Standard-生命科學(xué)試劑-MCE
- 2-Hydroxy-atrazine-Standard-生命科學(xué)試劑-MCE
- 私人醫(yī)生健康管理服務(wù)合同
- 小學(xué)高年級語文寫作技巧征文
- 杭州市淳安縣國有企業(yè)招聘筆試真題2024
- 安徽省蕪湖市2024-2025學(xué)年第一學(xué)期期末考試七年級語文試卷(含答案)
- 2024年花盆市場分析現(xiàn)狀
- 2025山東省退役軍人事務(wù)廳所屬事業(yè)單位招聘人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年道路貨運(yùn)駕駛員從業(yè)資格證模擬考試題
- 數(shù)學(xué)-安徽省皖南八校2025屆高三上學(xué)期12月第二次大聯(lián)考試題和答案
- 退市新規(guī)解讀-上海證券交易所、大同證券
- 教育部中國特色學(xué)徒制課題:現(xiàn)代職業(yè)教育體系建設(shè)背景下中國特色學(xué)徒制治理體系與資源配置研究
- 融資報(bào)告范文模板
- 桃李面包盈利能力探析案例11000字
- 護(hù)理工作十四五規(guī)劃
評論
0/150
提交評論