版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
從零開始學(xué)C語言(第2版)注:因內(nèi)容過長上傳受限制,本文檔只顯示部分內(nèi)容,完整版文檔請下載此文檔后留言謝謝。目錄\h第1篇C語言入門\h第1章C語言入門基礎(chǔ)(教學(xué)視頻:58分鐘)\h1.1計算機語言的演變\h1.1.1機器語言\h1.1.2匯編語言\h1.1.3高級語言\h1.1.4面向?qū)ο蠡蛎嫦騿栴}的高級語言\h1.2數(shù)制、數(shù)制轉(zhuǎn)換與存儲\h1.2.1數(shù)制\h1.2.2數(shù)制的轉(zhuǎn)換\h1.2.3計算機中數(shù)據(jù)的存儲\h1.3程序設(shè)計思想——算法\h1.3.1算法的概念\h1.3.2算法的特點\h1.3.3算法的表示方法\h1.3.4算法分析\h1.4C語言的發(fā)展簡史和特點\h1.4.1C語言的誕生與發(fā)展\h1.4.2C語言的特點\h1.5本章小結(jié)\h1.6習(xí)題\h第2章認(rèn)識C語言程序(教學(xué)視頻:30分鐘)\h2.1C語言程序的結(jié)構(gòu)特征\h2.2C語言程序的書寫風(fēng)格\h2.3C語言程序的開發(fā)過程\h2.4VisualC++集成開發(fā)環(huán)境\h2.4.1熟悉VisualC++6.0集成開發(fā)環(huán)境\h2.4.2C語言在VisualC++6.0的開發(fā)過程\h2.5用VisualC++6.0運行一個C程序\h2.6本章小結(jié)\h2.7習(xí)題\h第2篇C語言基礎(chǔ)\h第3章常量、變量與標(biāo)識符(教學(xué)視頻:17分鐘)\h3.1標(biāo)識符\h3.1.1標(biāo)識符的命名\h3.1.2保留字\h3.2常量\h3.2.1直接常量\h3.2.2符號常量\h3.3變量\h3.3.1變量的定義\h3.3.2變量初始化的方法\h3.4變量的初始化\h3.5本章小結(jié)\h3.6習(xí)題\h第4章數(shù)據(jù)類型(教學(xué)視頻:28分鐘)\h4.1C語言中的數(shù)據(jù)類型\h4.1.1基本數(shù)據(jù)類型\h4.1.2構(gòu)造數(shù)據(jù)類型\h4.1.3指針數(shù)據(jù)類型\h4.1.4空類型\h4.2整型數(shù)據(jù)\h4.2.1整型常量\h4.2.2整型變量\h4.3實數(shù)型數(shù)據(jù)\h4.3.1實數(shù)型常量\h4.3.2實數(shù)型變量\h4.4字符型數(shù)據(jù)\h4.4.1字符型常量\h4.4.2字符型變量\h4.5數(shù)值型數(shù)據(jù)間的混合運算\h4.5.1自動類型轉(zhuǎn)換\h4.5.2強制類型轉(zhuǎn)換\h4.6本章小結(jié)\h4.7習(xí)題\h第5章運算符及其表達(dá)式(教學(xué)視頻:57分鐘)\h5.1算術(shù)運算符及算術(shù)表達(dá)式\h5.1.1算術(shù)運算符\h5.1.2算術(shù)表達(dá)式\h5.2賦值運算符及賦值表達(dá)式\h5.2.1賦值運算符\h5.2.2賦值表達(dá)式\h5.3關(guān)系運算符及關(guān)系表達(dá)式\h5.3.1關(guān)系運算符\h5.3.2關(guān)系表達(dá)式\h5.4邏輯運算符及邏輯表達(dá)式\h5.4.1邏輯運算符\h5.4.2邏輯運算規(guī)則\h5.4.3邏輯表達(dá)式\h5.5條件運算符及條件表達(dá)式\h5.5.1條件運算符\h5.5.2條件表達(dá)式\h5.6逗號運算符及逗號表達(dá)式\h5.6.1逗號運算符\h5.6.2逗號表達(dá)式\h5.7位運算符\h5.7.1位邏輯運算符\h5.7.2移位運算符\h5.7.3位自反賦值運算符\h5.8位運算符\h5.9本章小結(jié)\h5.10習(xí)題\h第6章輸入與輸出(教學(xué)視頻:65分鐘)\h6.1C語句概述\h6.1.1流程控制語句\h6.1.2函數(shù)調(diào)用語句\h6.1.3表達(dá)式語句\h6.1.4空語句\h6.1.5復(fù)合語句\h6.2輸入與輸出函數(shù)\h6.2.1格式輸出函數(shù)\h6.2.2格式輸入函數(shù)\h6.2.3字符輸入與字符輸出函數(shù)\h6.3整型數(shù)據(jù)的輸入與輸出\h6.3.1整型數(shù)據(jù)的輸出\h6.3.2整型數(shù)據(jù)的輸入\h6.4浮點型數(shù)據(jù)的輸入與輸出\h6.5本章小結(jié)\h6.6習(xí)題\h第7章順序結(jié)構(gòu)與選擇結(jié)構(gòu)(教學(xué)視頻:35分鐘)\h7.1順序結(jié)構(gòu)程序設(shè)計\h7.2選擇結(jié)構(gòu)程序設(shè)計\h7.2.1if語句\h7.2.2switch語句\h7.3應(yīng)用舉例\h7.4本章小結(jié)\h7.5習(xí)題\h第8章循環(huán)結(jié)構(gòu)程序設(shè)計(教學(xué)視頻:54分鐘)\h8.1while語句\h8.2do…while語句\h8.3for語句\h8.3.1for循環(huán)結(jié)構(gòu)\h8.3.2for循環(huán)語句的嵌套\h8.4總結(jié)應(yīng)用\h8.4.1幾種循環(huán)的比較\h8.4.2循環(huán)語句的嵌套\h8.4.3應(yīng)用舉例\h8.5本章小結(jié)\h8.6習(xí)題\h第9章結(jié)構(gòu)語句的轉(zhuǎn)移(教學(xué)視頻:13分鐘)\h9.1break語句\h9.2跳出循環(huán)結(jié)構(gòu)\h9.2.1問題1\h9.2.2問題2\h9.3continue語句\h9.4goto語句\h9.5本章小結(jié)\h9.6習(xí)題\h第3篇C語言進(jìn)階\h第10章數(shù)組(教學(xué)視頻:78分鐘)\h10.1數(shù)組的概述\h10.2一維數(shù)組\h10.2.1一維數(shù)組的定義\h10.2.2一維數(shù)組的初始化\h10.2.3一維數(shù)組的引用\h10.2.4一維數(shù)組的程序舉例\h10.3二維數(shù)組\h10.3.1二維數(shù)組的定義\h10.3.2二維數(shù)組的初始化\h10.3.3二維數(shù)組的引用\h10.3.4數(shù)組的程序舉例\h10.4本章小結(jié)\h10.5習(xí)題\h第11章字符數(shù)組(教學(xué)視頻:45分鐘)\h11.1字符數(shù)組的定義\h11.2字符數(shù)組的初始化\h11.3字符數(shù)組的引用\h11.4字符數(shù)組與字符串的關(guān)系\h11.5字符數(shù)組的輸入與輸出\h11.6字符串處理函數(shù)\h11.6.1輸入字符串函數(shù)gets\h11.6.2輸出字符串函數(shù)puts\h11.6.3字符串測長度函數(shù)strlen\h11.6.4字符串比較函數(shù)strcmp\h11.6.5字符串復(fù)制函數(shù)strcpy和strncpy\h11.6.6字符串連接函數(shù)strcat\h11.7應(yīng)用舉例\h11.8本章小結(jié)\h11.9習(xí)題\h第12章函數(shù)(教學(xué)視頻:43分鐘)\h12.1函數(shù)的初步認(rèn)識\h12.2函數(shù)定義\h12.2.1無參函數(shù)定義\h12.2.2有參函數(shù)定義\h12.2.3空函數(shù)定義\h12.3函數(shù)參數(shù)及返回值\h12.3.1函數(shù)的參數(shù)\h12.3.2函數(shù)的返回值\h12.4函數(shù)的參數(shù)傳遞\h12.4.1函數(shù)參數(shù)的數(shù)值傳遞\h12.4.2函數(shù)參數(shù)的地址傳遞\h12.5應(yīng)用舉例\h12.6本章小結(jié)\h12.7習(xí)題\h第13章函數(shù)的調(diào)用(教學(xué)視頻:75分鐘)\h13.1函數(shù)調(diào)用的一般形式\h13.2函數(shù)調(diào)用的形式\h13.3被調(diào)用函數(shù)的聲明與函數(shù)原型\h13.4函數(shù)的嵌套調(diào)用和遞歸調(diào)用\h13.4.1函數(shù)的嵌套調(diào)用\h13.4.2函數(shù)的遞歸調(diào)用\h13.5變量作用域\h13.5.1變量作用域和生存期\h13.5.2局部變量和全局變量\h13.5.3變量存儲類別\h13.6編譯預(yù)處理\h13.6.1宏定義\h13.6.2文件包含處理\h13.6.3條件編譯\h13.7本章小結(jié)\h13.8習(xí)題\h第14章指針操作(教學(xué)視頻:67分鐘)\h14.1指針與地址\h14.2指針和指針變量\h14.2.1指針變量的定義\h14.2.2指針變量的引用\h14.2.3指針的運算\h14.3指針和數(shù)組\h14.3.1數(shù)組的指針和指向數(shù)組的指針變量\h14.3.2指針數(shù)組和指向指針的指針\h14.3.3指向字符串的指針\h14.3.4數(shù)組名作為函數(shù)參數(shù)\h14.4指針和函數(shù)\h14.4.1函數(shù)的指針和指向函數(shù)的指針變量\h14.4.2用指向函數(shù)的指針作為函數(shù)參數(shù)\h14.4.3指針數(shù)組作為函數(shù)參數(shù)\h14.4.4返回指針值的函數(shù)\h14.4.5字符串指針作為函數(shù)參數(shù)\h14.5本章小結(jié)\h14.6習(xí)題\h第15章結(jié)構(gòu)體(教學(xué)視頻:77分鐘)\h15.1結(jié)構(gòu)體類型定義\h15.1.1結(jié)構(gòu)體類型的說明\h15.1.2結(jié)構(gòu)體類型的定義\h15.2結(jié)構(gòu)體變量的定義與引用\h15.2.1結(jié)構(gòu)體變量的定義與初始化\h15.2.2結(jié)構(gòu)體變量的引用\h15.3結(jié)構(gòu)數(shù)組\h15.3.1結(jié)構(gòu)數(shù)組的定義\h15.3.2結(jié)構(gòu)數(shù)組的引用\h15.4結(jié)構(gòu)體指針\h15.4.1結(jié)構(gòu)體指針變量的定義\h15.4.2結(jié)構(gòu)體指針變量的引用\h15.5鏈表\h15.5.1鏈表概述\h15.5.2單鏈表建立\h15.5.3單鏈表簡單操作\h15.6本章小結(jié)\h15.7習(xí)題\h第16章共用體(教學(xué)視頻:43分鐘)\h16.1共用體類型定義\h16.1.1定義共用體\h16.1.2共用體的存儲\h16.2共用體類型變量、數(shù)組和指針變量的定義\h16.2.1先定義共用體,再定義共用體變量、數(shù)組及指針變量\h16.2.2定義共用體的同時定義共用體變量、數(shù)組及指針變量\h16.2.3定義共用體變量、數(shù)組及指針變量時省略共用體名\h16.3共用體類型變量、數(shù)組和指針變量的引用\h16.4共用體應(yīng)用舉例\h16.5枚舉類型\h16.5.1枚舉類型的定義\h16.5.2枚舉類型變量的賦值和引用\h16.6用typedef定義數(shù)據(jù)類型\h16.7本章小結(jié)\h16.8習(xí)題\h第17章文件(教學(xué)視頻:58分鐘)\h17.1文件概述\h17.1.1文件名\h17.1.2文件的類型\h17.2文件類型指針\h17.3文件的打開與關(guān)閉\h17.3.1文件打開函數(shù)fopen()\h17.3.2文件關(guān)閉函數(shù)fclose()\h17.4文件的讀寫操作\h17.4.1字符讀寫函數(shù)\h17.4.2字符串讀寫函數(shù)\h17.4.3數(shù)據(jù)塊讀寫函數(shù)\h17.4.4格式數(shù)據(jù)讀寫函數(shù)\h17.5文件的定位\h17.5.1文件頭定位函數(shù)rewind()\h17.5.2文件隨機定位函數(shù)fseek()\h17.5.3測試當(dāng)前位置函數(shù)ftell()\h17.6文件的檢測\h17.6.1文件末尾檢測函數(shù)feof()\h17.6.2文件讀寫出錯檢測函數(shù)ferror()\h17.6.3清除文件末尾和出錯標(biāo)志函數(shù)clearerr()\h17.7本章小結(jié)\h17.8習(xí)題\h第4篇案例實戰(zhàn)\h第18章學(xué)生成績管理系統(tǒng)設(shè)計(教學(xué)視頻:18分鐘)\h18.1學(xué)生成績管理系統(tǒng)功能\h18.2功能模塊的描述\h18.2.1數(shù)據(jù)結(jié)構(gòu)\h18.2.2main()主函數(shù)\h18.2.3score*creatlink()創(chuàng)建動態(tài)鏈表\h18.2.4voidprint(score*head)顯示學(xué)生信息\h18.2.5score*add(score*head,score*stu)向鏈表中添加學(xué)生數(shù)據(jù)\h18.2.6score*search(score*head)查詢學(xué)生成績\h18.2.7score*dele(score*head)刪除數(shù)據(jù)\h18.2.8score*sortdata(score*head)對數(shù)據(jù)進(jìn)行排序\h18.2.9save(score*p1)保存數(shù)據(jù)\h18.2.10score*load(score*head)從文件中讀取數(shù)據(jù)\h18.2.11score*statistics(score*head)成績統(tǒng)計\h18.2.12intmenu(intk)菜單\h18.2.13用到的頭文件和全局變量\h18.3程序代碼\h18.3.1主函數(shù)main()代碼\h18.3.2創(chuàng)建鏈表函數(shù)creatlink()\h18.3.3顯示學(xué)生信息函數(shù)print()\h18.3.4向鏈表中添加學(xué)生數(shù)據(jù)函數(shù)add()\h18.3.5查詢學(xué)生成績函數(shù)search\h18.3.6刪除數(shù)據(jù)函數(shù)dele\h18.3.7對數(shù)據(jù)進(jìn)行排序函數(shù)sortdata()\h18.3.8保存數(shù)據(jù)函數(shù)save()\h18.3.9從文件中讀取數(shù)據(jù)函數(shù)loadfile()\h18.3.10成績統(tǒng)計函數(shù)statistics()\h18.4程序運行\(zhòng)h18.4.1編輯學(xué)生成績\h18.4.2顯示學(xué)生成績\h18.4.3保存學(xué)生成績信息\h18.4.4查詢學(xué)生的成績\h18.4.5添加學(xué)生的成績\h18.4.6刪除學(xué)生的成績\h18.4.7學(xué)生成績排序\h18.4.8從文件中讀取學(xué)生的成績\h18.4.9統(tǒng)計學(xué)生的成績\h18.5本章小結(jié)\h附錄AASCII字符集\h附錄B運算符的優(yōu)先級與結(jié)合性\h附錄CC語言常用庫函數(shù)\h附錄D安裝VisualC++6.0集成開發(fā)環(huán)境第1篇C語言入門第1章C語言入門基礎(chǔ)C語言作為國際上流行的計算機高級語言,能實現(xiàn)多種功能。為使讀者能夠?qū)語言有一個全面的認(rèn)識,本章在介紹C語言之前,簡單介紹了很多其他的相關(guān)知識。計算機語言的演變;數(shù)制、數(shù)制轉(zhuǎn)換與存儲;程序設(shè)計思想——算法;C語言的發(fā)展簡史和特點。1.1計算機語言的演變計算機語言的發(fā)展是一個不斷演變的過程,從開始的機器語言到匯編語言到各種結(jié)構(gòu)化高級語言,最后到支持面向?qū)ο蠹夹g(shù)的面向?qū)ο笳Z言。1.1.1機器語言機器語言是第一代計算機語言。計算機所使用的是由“0”和“1”組成的二進(jìn)制數(shù)。二進(jìn)制是計算機語言的基礎(chǔ),所以也稱為二進(jìn)制語言。機器語言指用機器碼書寫程序,不易被人們識別和讀寫,所以使用機器語言是十分痛苦的,特別是在程序有錯需要修改時,更是如此。而且,由于每臺計算機的指令系統(tǒng)往往各不相同,所以在一臺計算機上執(zhí)行的程序,要想在另一臺計算機上執(zhí)行,必須另編程序,造成了重復(fù)工作。但由于計算機能夠直接識別程序中的指令,故而運算效率是所有語言中最高的,這種用二進(jìn)制編寫的程序也叫“目標(biāo)程序”。1.1.2匯編語言匯編語言又稱符號語言,對機器指令進(jìn)行簡單的符號化,它也是利用計算機所有硬件特性并能直接控制硬件的語言。人們?yōu)榱藴p輕使用機器語言編程的痛苦,對機器語言進(jìn)行了一種有益的改進(jìn):用一些簡潔的英文字母、符號串來替代一個特定的指令的二進(jìn)制串,比如,用“ADD”表示加法,“MOV”表示數(shù)據(jù)傳遞等,因此,人們就能理解程序所進(jìn)行的操作,方便用戶對程序進(jìn)行糾錯及維護(hù)。匯編語言屬于第二代計算機語言。匯編語言十分依賴于機器硬件,它像機器指令一樣,是硬件操作的控制信息,因而仍然是面向機器的語言。針對計算機特定硬件編制的匯編語言程序,能準(zhǔn)確發(fā)揮計算機硬件的功能和特長,程序精煉而質(zhì)量高,但是匯編語言的通用性不強,可移植性不好,使用起來比較煩瑣,很費時。匯編語言的效率仍十分高,所以至今仍是一種常用而強有力的軟件開發(fā)工具。1.1.3高級語言1958年首次出現(xiàn)了一種描述加工過程很方便、并且能在任何計算機上使用的第三代程序設(shè)計語言。程序設(shè)計人員可以利用這種語言直接寫出各種表達(dá)式來描述簡單的計算機過程,這種語言稱為高級語言。這種語言接近于數(shù)學(xué)語言或人的自然語言,同時又不依賴于計算機硬件,編出的程序能在所有機器上通用。使用較普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG。用高級語言編寫的程序稱為“源程序”。源程序不能在計算機上直接運行,必須將其翻譯成二進(jìn)制程序后才能執(zhí)行。翻譯有兩種方式:解釋程序和編譯程序。解釋程序是一次只讀一行源程序,并執(zhí)行該行語言指定的操作,每次運行用戶程序時,必須要用解釋程序。在程序的開發(fā)過程中,運用解釋的方式執(zhí)行程序,便于程序員對程序進(jìn)行調(diào)試。編譯程序是將源程序全部翻譯成目標(biāo)代碼即二進(jìn)制程序后再執(zhí)行,只讀取一次,節(jié)省了大量的時間。1.1.4面向?qū)ο蠡蛎嫦騿栴}的高級語言第四代語言是使用第二代、第三代語言編制而成的。面向?qū)ο蟮恼Z言是在面向過程的計算機語言的基礎(chǔ)上發(fā)展而來的,如C++語言就是由C語言發(fā)展而來的。所謂面向?qū)ο螅褪腔趯ο蟮母拍?,以對象為中心,類和繼承為構(gòu)造機制,認(rèn)識、了解、刻畫客觀世界并開發(fā)出相應(yīng)的軟件系統(tǒng)。它把構(gòu)成問題的事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描述某個事物在整個解決問題的步驟中的行為。比較典型的代表面向?qū)ο蟪绦蛟O(shè)計語言有C++、VisualBasic、Delphi等。1.2數(shù)制、數(shù)制轉(zhuǎn)換與存儲上一節(jié)我們了解到高級語言在執(zhí)行的過程中要解釋或編譯成二進(jìn)制代碼,即轉(zhuǎn)換成計算機語言才能被識別。C語言程序在執(zhí)行的過程中要將源程序解釋或編譯成目標(biāo)程序,因此在開始學(xué)習(xí)C語言之前我們先學(xué)習(xí)一下數(shù)制及不同數(shù)制之間的轉(zhuǎn)換和存儲。1.2.1數(shù)制數(shù)制也稱計數(shù)制,是指用一組固定的符號和統(tǒng)一的規(guī)則來表示數(shù)值的方法。計算機處理的信息必須轉(zhuǎn)換成二進(jìn)制形式數(shù)據(jù)后才能進(jìn)行存儲和傳輸。計算機中,經(jīng)常使用的進(jìn)制有二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制。1.二進(jìn)制數(shù)二進(jìn)制數(shù)由兩個基本數(shù)字0、1組成,二進(jìn)制數(shù)的運算規(guī)律是逢二進(jìn)一。二進(jìn)制數(shù)的書寫通常在數(shù)的右下方注上基數(shù)2,或在后面加B與其他進(jìn)制加以區(qū)別,如二進(jìn)制100101可以寫成(100101)2或?qū)懗?00101B。二進(jìn)制數(shù)的加法和乘法運算如下:2.八進(jìn)制數(shù)八進(jìn)制是由0~7共8個數(shù)字組成的,運算規(guī)則是逢八進(jìn)一。八進(jìn)制的基R=8=23,并且每個數(shù)碼正好對應(yīng)三位二進(jìn)制數(shù),所以八進(jìn)制能很好地反映二進(jìn)制。八進(jìn)制數(shù)據(jù)表示時用下標(biāo)8或數(shù)據(jù)后面加O表示,如八進(jìn)制261寫成(261)8、(261)O。3.十進(jìn)制數(shù)十進(jìn)制數(shù)是我們常用的數(shù)據(jù)表示方法,由0~9共10個數(shù)字組成,運算規(guī)則是逢十進(jìn)一。表示時用下標(biāo)10或數(shù)據(jù)后面加D,也可以省略。4.十六進(jìn)制數(shù)十六進(jìn)制數(shù)由0~9及A~F共16個數(shù)字組成,A~F分別表示十進(jìn)制數(shù)10~15,運算規(guī)則是逢十六進(jìn)一。通常在表示時用下標(biāo)16或數(shù)據(jù)后面加H,如(1FA)16或(1FA)H。Tips在C語言程序中,我們可以通常按十進(jìn)制寫,如果寫的是十六進(jìn)制,需要以0x開頭;八進(jìn)制以0開頭,如0123表示八進(jìn)制的123,0x123,則表示十六進(jìn)制的123。1.2.2數(shù)制的轉(zhuǎn)換我們知道計算機中數(shù)據(jù)是以二進(jìn)制的形式存在的,但是二進(jìn)制數(shù)據(jù)太長,沒有人愿意對很長的二進(jìn)制進(jìn)行操作,用十六進(jìn)制或八進(jìn)制可以解決這個問題。因為進(jìn)制越大,數(shù)的表達(dá)長度也就越短。不過,為什么偏偏是十六或八進(jìn)制,而不是其他的諸如九或二十進(jìn)制呢?因為2、8、16,分別是2的1次方、3次方、4次方,這一點使得三種進(jìn)制之間可以非常直接地互相轉(zhuǎn)換。八進(jìn)制或十六進(jìn)制既縮短了二進(jìn)制數(shù)又保持了二進(jìn)制數(shù)的表達(dá)特點。1.二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制規(guī)則:數(shù)碼乘以各自的權(quán)的累加。【實例1-1】其他進(jìn)制轉(zhuǎn)換成十進(jìn)制。(10001)B=24+20=17(101.01)B=22+20+2-2=5.25(011)O=81+80=9(72)O=7*81+2*80=58(112A)H=1*163+1*162+2*161+10*160=43942.十進(jìn)制轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十六進(jìn)制規(guī)則如下。整數(shù)部分:除以進(jìn)制取余數(shù),直到商為0,余數(shù)從下到上排列。小數(shù)部分:乘以進(jìn)制取整數(shù),得到的整數(shù)從上到下排列?!緦嵗?-2】十進(jìn)制轉(zhuǎn)換成其他進(jìn)制。(1)十進(jìn)制20.345轉(zhuǎn)換成二進(jìn)制20.345D=10100.01011B(2)十進(jìn)制100轉(zhuǎn)換成八進(jìn)制、十六進(jìn)制3.二進(jìn)制轉(zhuǎn)換成八進(jìn)制規(guī)則如下。整數(shù)部分:從右向左按三位進(jìn)行分組,不足補零。小數(shù)部分:從左向右按三位進(jìn)行分組,不足補零。【實例1-3】將二進(jìn)制數(shù)(1101101110.110101)2轉(zhuǎn)換成八進(jìn)制數(shù)。4.二進(jìn)制轉(zhuǎn)換成十六進(jìn)制規(guī)則如下。整數(shù)部分:從右向左按四位進(jìn)行分組,不足補零。小數(shù)部分:從左向右按四位進(jìn)行分組,不足補零。【實例1-4】將二進(jìn)制數(shù)(001101101110.110101)2轉(zhuǎn)換成十六進(jìn)制數(shù)。5.八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成二進(jìn)制規(guī)則如下。一位八進(jìn)制對應(yīng)三位二進(jìn)制。一位十六進(jìn)制對應(yīng)四位二進(jìn)制。【實例1-5】八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成二進(jìn)制。1.2.3計算機中數(shù)據(jù)的存儲我們已經(jīng)知道在計算機內(nèi)所有數(shù)據(jù)最終都是使用二進(jìn)制數(shù)表示的,上一節(jié)中我們已經(jīng)學(xué)習(xí)了如何將一個十進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。數(shù)值有正負(fù)之分,它們在計算機內(nèi)是如何存儲的呢?在計算機中,數(shù)據(jù)有三種表示方法:原碼、反碼和補碼。計算機用一個二進(jìn)制的最高位存放所表示數(shù)值的符號,最高位為0表示正數(shù),最高位為1表示負(fù)數(shù)。對于一個正數(shù),原碼是將該數(shù)轉(zhuǎn)換成二進(jìn)制,它的反碼和補碼與原碼相同。對于一個負(fù)數(shù),原碼是將該數(shù)按照絕對值大小轉(zhuǎn)換成的二進(jìn)制數(shù),最高位即符號位為1;它的反碼是除符號位外將二進(jìn)制數(shù)按位取反,所得的新二進(jìn)制數(shù)稱為原二進(jìn)制數(shù)的反碼;它的補碼是將其二進(jìn)制的反碼加1。計算機中任何一個帶有符號的二進(jìn)制數(shù)都是以補碼形式進(jìn)行運算和存儲的。如表1-1所示為比較1與-1的原碼、反碼和補碼。表1-1數(shù)據(jù)存儲表(1與-1的原碼、反碼和補碼)注:為了方便比較我們在這里用一個字節(jié)的整數(shù)舉例。1.3程序設(shè)計思想——算法在我們遇到問題的時候,首先在大腦中形成一種解題思路,然后根據(jù)可行的思路運用具體的步驟解決問題。在程序設(shè)計中,也需要有一種編程思路,這就是算法。1.3.1算法的概念廣義上的算法指的是解決問題的方法。就程序設(shè)計而言,算法是指計算機求解某一問題而采用的具體方法、步驟。事實上,在日常生活中解決問題經(jīng)常要用算法,只是通常不用“算法”這個詞罷了,例如,樂譜是樂隊指揮和演奏的算法;菜譜是廚師做菜的算法,等等。在程序設(shè)計中,算法應(yīng)該能夠離散成具體的若干個操作步驟,每一個步驟都是能夠用程序設(shè)計語言提供的語句或者語句串來完成的。例如,求兩個整數(shù)中較大的數(shù)。解決這個問題的算法如下:第1步開始。第2步輸入兩個整數(shù)a、b。第3步比較a、b的大小,如果a>b,輸出a,否則輸出b。第4步結(jié)束。需要注意的是,程序是有開始和結(jié)束的,所以算法必須有“開始”和“結(jié)束”這兩個步驟。計算機解題算法分為兩大類:數(shù)值運算算法和非數(shù)值運算算法。數(shù)值運算算法解決的是求數(shù)值的問題,運用一定的求值公式如二元一次方程的求根公式、圓面積的計算公式等。這類算法相對比較成熟。非數(shù)值運算的算法涉及的內(nèi)容比較廣,而且難以量化,一般都需要參考已有的類似算法,針對具體問題重新設(shè)計。1.3.2算法的特點解決問題我們需要一個可行的算法,而如何去衡量這個算法是否得當(dāng),是否可行呢?通常,算法具有以下5個重要的特征。1.有窮性一個算法應(yīng)包括有限個操作步驟,其中每一步都應(yīng)在合理的時間范圍內(nèi)完成。有的可能要花很長的時間來執(zhí)行指定的任務(wù),但仍將在一定的時間內(nèi)終止。它執(zhí)行的時間沒有嚴(yán)格的限制,受所要處理問題的約束。2.確定性算法在指導(dǎo)計算執(zhí)行每步程序時,這些指令都是明確的,沒有任何歧義。例如:
輸出:A/正整數(shù)
是無法執(zhí)行的,因為正整數(shù)指的是一類數(shù),沒有指定A除以哪一個正整數(shù),所以這個步驟是不確定的。3.有效性算法中的每個步驟都應(yīng)該是有意義、能夠有效執(zhí)行的,并能得到確定的結(jié)果。比如,開方運算的數(shù)不能是負(fù)數(shù);分母不能夠為0。4.輸入一個算法有零個或多個輸入。在某些算法中,所需要的數(shù)據(jù)可以由用戶用輸入設(shè)備輸入,例如,求兩個數(shù)中的較大值,這兩個數(shù)可以是用戶隨意輸入的兩個數(shù),它們的值是不確定的。另外在編程的過程中也可以直接用兩個確定的數(shù)進(jìn)行比較,這時就不需要用戶的輸入,即零輸入。5.輸出一個算法有一個或多個輸出。算法的輸出反映了輸入數(shù)據(jù)加工后的結(jié)果,沒有輸出的算法是毫無意義的。例如:求兩個數(shù)的最大公約數(shù),執(zhí)行后,若這兩個數(shù)有最大公約數(shù)就輸出,若沒有最大公約數(shù)就輸出“這兩個數(shù)無最大公約數(shù)”給用戶以反饋。1.3.3算法的表示方法一個算法可以用多種不同的方法來描述,有自然語言、偽代碼、流程圖、N-S圖等,每種表示方法都有自己的優(yōu)缺點,可以根據(jù)不同的需要選擇適當(dāng)?shù)谋硎痉椒ā?.自然語言使用自然語言描述算法是指用文字加上一些必要的數(shù)學(xué)符號來描述解決問題的算法?!緦嵗?-6】用自然語言描述100以內(nèi)正整數(shù)的和。(1)設(shè)S代表總和,N代表正整數(shù);(2)S=0,N=1;(3)S=S+N,原來的和加上一個正整數(shù);(4)N=N+1,把下一個正整數(shù)賦給N;(5)判斷N是否小于100,如果是則跳轉(zhuǎn)到步驟(3),否則跳轉(zhuǎn)到步驟(6);(6)輸出S的值。自然語言表示法,除了很簡單的問題外,一般不用這種方法。從上面的例子中我們不難發(fā)現(xiàn),自然語言容易理解,也比較容易掌握,但需要用大量的文字進(jìn)行解釋說明,不直觀,當(dāng)算法中含有多分支或循環(huán)操作時很難表述清楚。2.流程圖流程圖很好地彌補了自然語言描述算法的缺陷,它用標(biāo)準(zhǔn)的圖形元素來描述算法步驟,程序結(jié)構(gòu)一目了然。流程圖中最基本、最常用的構(gòu)件如表1-2所示。表1-2常用流程圖構(gòu)件用流程圖表示100以內(nèi)的正整數(shù)的算法如圖1-1所示。圖1-1100以內(nèi)正整數(shù)的流程圖表示算法從“開始”執(zhí)行,依次按照流程順序執(zhí)行了前四個輸入框內(nèi)的動作,到達(dá)判斷框后先判斷N是否滿足條件,如果條件成立,即判斷的結(jié)果為True(簡寫為T),沿著T所示的流程返回到第三步開始繼續(xù)執(zhí)行,如果判斷條件不成立,即判斷的結(jié)果為False(簡寫為F),沿著F所示的流程線向下執(zhí)行,最后輸出S。使用流程圖來描述算法比較自由靈活,形象直觀,可以用來表示任何算法,但是繪制流程圖之前要弄清哪些是判斷的條件,哪些是處理的操作,而且繪圖也比較麻煩,并且需要用箭頭表示程序流程的方向,隨意性太大。3.偽代碼偽代碼是一種在算法開發(fā)過程中用來表達(dá)思想的非形式化的符號系統(tǒng)。相對于編程語言來說,它的語法規(guī)則、語義結(jié)構(gòu)等規(guī)定限制比較寬松,是一種更加易用的表示系統(tǒng)。將【實例1-6】用偽代碼描述表示如下:
①N←1;
②S←0;
③dowhileN≤100
④{S←S+N;
N←N+1;
}
⑤printS
偽代碼通常采用自然語言、數(shù)學(xué)公式和符號描述算法的操作步驟,同時采用計算機高級語言的控制結(jié)構(gòu)來描述算法步驟的執(zhí)行順序。但前提是必須熟悉某種程序設(shè)計語言,軟件專業(yè)人員一般習(xí)慣使用偽代碼。4.N-S圖N-S圖也被稱為盒圖。在使用流程圖的過程中,人們發(fā)現(xiàn)流程線不一定是必需的,為此,又設(shè)計出了一種新的流程圖,把整個程序?qū)懺谝粋€大框圖內(nèi),這個大框圖由若干個小基本框圖構(gòu)成,這種流程圖簡稱為N-S圖。在結(jié)構(gòu)化程序設(shè)計中,用N-S圖表示順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的結(jié)構(gòu)有所不同,具體表示如下。(1)順序結(jié)構(gòu)N-S圖如圖1-2中的順序結(jié)構(gòu)圖所示,程序執(zhí)行的順序按照矩形塊出現(xiàn)的順序從上向下依次執(zhí)行,先執(zhí)行A塊再執(zhí)行B塊。圖1-2三種結(jié)構(gòu)的N-S圖表示(2)選擇結(jié)構(gòu)N-S圖如圖1-2中的選擇結(jié)構(gòu)圖所示,程序執(zhí)行到此步時,先判斷條件的真假,如果為真就執(zhí)行A塊,如果為假就執(zhí)行B塊。(3)循環(huán)結(jié)構(gòu)N-S圖如圖1-2中的循環(huán)結(jié)構(gòu)圖所示,循環(huán)結(jié)構(gòu)的N-S圖有兩種結(jié)構(gòu),一種是當(dāng)型循環(huán),一種是直到型循環(huán)。當(dāng)型循環(huán)指的是先判斷條件,如果條件為真就執(zhí)行循環(huán)體,否則就跳過循環(huán)體執(zhí)行下面的程序。直到型循環(huán)指的是先執(zhí)行一次循環(huán)體,然后再判斷條件,如果條件為真就返回繼續(xù)執(zhí)行循環(huán)體,否則就不執(zhí)行循環(huán)體,開始向下執(zhí)行。將【實例1-6】用N-S圖描述表示如圖1-3所示。圖1-3100以內(nèi)正整數(shù)的N-S圖表示N-S圖彌補了流程圖自由性大、任意轉(zhuǎn)移控制的缺點,表示嵌套關(guān)系方便直觀,對模塊和控制結(jié)構(gòu)的層次和作用域顯示行比較清晰;但是N-S圖修改起來沒有流程圖方便,如果分支嵌套層次一多就比較難畫了。1.3.4算法分析算法分析是對一個算法需要多少計算時間和存儲空間做定量的分析。求解一個給定的可計算或可解的問題,不同的人可以編寫出不同的程序,分析算法可以預(yù)測這一算法適合在什么樣的環(huán)境中有效地運行,對解決同一問題的不同算法的有效性做出比較。什么樣的算法才是一個好的算法呢?通常從下列幾個方面衡量算法的優(yōu)劣。1.正確性也稱為有效性,是指算法能滿足具體問題的要求,即對任何合法的輸入,算法都會得出正確的結(jié)果。確認(rèn)正確性的根本方法是進(jìn)行形式化的證明。但對一些較復(fù)雜的問題,這是一件相當(dāng)困難的事。許多計算機科學(xué)工作者正致力于這方面的研究,目前尚處于初級階段。因此,實際中常常用測試的方法驗證算法的正確性。2.可讀性指算法被理解的難易程度。人們常把算法的可讀性放在比較重要的位置,主要是因為晦澀難懂的算法不易交流和推廣使用,也難以修改、擴展與調(diào)試,而且可能隱藏較多的錯誤。3.健壯性即對非法輸入的抵抗能力。它強調(diào)的是,如果輸入非法數(shù)據(jù),算法應(yīng)能加以識別并做出處理,而不是產(chǎn)生錯誤動作或陷入癱瘓。4.時間復(fù)雜度與空間復(fù)雜度算法的時間復(fù)雜度指算法需要消耗的時間資源,也就是說算法的運行時間。一般來說,計算機算法是問題規(guī)模n的函數(shù)f(n),算法的時間也因此記為:T(n)=O(f(n))因此,問題的規(guī)模n越大,算法執(zhí)行的時間的增長率與f(n)的增長率正相關(guān),稱為漸進(jìn)時間復(fù)雜度。算法的空間復(fù)雜度是指算法需要消耗的空間資源。其計算和表示方法與時間復(fù)雜度類似,一般都用復(fù)雜度的漸近性來表示,記為:S(n)=O(f(n))1.4C語言的發(fā)展簡史和特點C語言能夠快速發(fā)展成為最受歡迎的語言之一,主要是因為它具有強大的功能。它既有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴于計算機硬件的應(yīng)用程序。在開始正式學(xué)習(xí)C語言之前我們先對C語言的發(fā)展歷程及它的特點做簡單的了解。1.4.1C語言的誕生與發(fā)展C語言誕生于1972年,是由著名的美國貝爾實驗室科學(xué)家D.M.Ricthie發(fā)明的。C語言的原型是ALGOL60語言。為了更好地開發(fā)新版本的UNIX,D.M.Ricthie在B語言的基礎(chǔ)上設(shè)計了C語言。除了系統(tǒng)的最核心部分,UNIX的后來版本基本都是用C開發(fā)的。C語言后來又被多次改進(jìn),并出現(xiàn)了多種版本。1.C語言誕生的背景我們知道匯編語言程序依賴于計算機硬件,其可讀性和可移植性都很差;但一般的高級語言又難以實現(xiàn)對計算機硬件的直接操作(這正是匯編語言的優(yōu)勢)。于是人們盼望有一種兼有匯編語言和高級語言特性的新語言。1963年,劍橋大學(xué)將ALGOL60語言發(fā)展成為CPL(CombinedProgrammingLanguage)語言。C語言的原型就是ALGOL60語言。1967年,劍橋大學(xué)的MartinRichards對CPL語言進(jìn)行了簡化,于是產(chǎn)生了BCPL語言。1970年,美國貝爾實驗室的KenThompson將BCPL進(jìn)行了修改,并為它起了一個有趣的名字“B語言”,意思是將CPL語言煮干,提煉出它的精華,并且他用B語言寫了第一個UNIX操作系統(tǒng)。而在1972年,B語言也給人“煮”了一下,美國貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上最終設(shè)計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。2.C語言的發(fā)展歷程1972年,貝爾實驗室D.M.Ritchie設(shè)計出C語言,當(dāng)時KenThompson剛剛使用匯編語言和B語言開發(fā)出UNIX操作系統(tǒng),但用匯編語言開發(fā)系統(tǒng)非常煩瑣,于是D.M.Ritchie用C語言改寫UNIX系統(tǒng)的內(nèi)核。為了推廣UNIX操作系統(tǒng),1977年D.M.Ritchie發(fā)表了不依賴于具體機器系統(tǒng)的C語言編譯文本《可移植的C語言編譯程序》。C語言在1978年由美國電話電報公司(AT&T)貝爾實驗室正式發(fā)布。由B.W.Kernighan和D.M.Ritchie共同完成了著名的《TheCProgrammingLanguage》一書,通常簡稱為《K&R》。1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI),根據(jù)C語言問世以來各種版本對C語言的發(fā)展和擴充,制定了ANSIC標(biāo)準(zhǔn)。由于《K&R》中并沒有定義一個完整的標(biāo)準(zhǔn)C語言,K&R第一版在很多語言細(xì)節(jié)上也不夠精確,所以ANSI于1983年夏天,在CBEMA的領(lǐng)導(dǎo)下建立了X3J11委員會,目的是產(chǎn)生一個C標(biāo)準(zhǔn)。X3J11在1989年末提出了一個他們的報告[ANSI89]。1990年,國際標(biāo)準(zhǔn)化組織ISO(InternationalOrganizationforStandards)接受了89ANSIC為ISOC的標(biāo)準(zhǔn)(ISO9899-1990)。目前C語言在世界范圍內(nèi)都是相當(dāng)流行的高級語言。C語言最初是為了描述和實現(xiàn)UNIX系統(tǒng)的,但隨著C語言的發(fā)展,它適用于任何平臺,C語言可以用來編寫應(yīng)用軟件,也可以用來編寫系統(tǒng)軟件。許多著名的系統(tǒng)軟件,如DBASEIV都是由C語言編寫的。用C語言加上一些匯編語言子程序,就更能顯示C語言的優(yōu)勢了,像PC-DOS、WORDSTAR等就是用這種方法編寫的。1.4.2C語言的特點一種語言之所以能夠存在和發(fā)展,并具有生命力,在于它具有一些不同于或者說優(yōu)于其他語言的特點。C語言具有以下幾個基本特點。1.緊湊簡潔、靈活方便與學(xué)習(xí)自然語言一樣,掌握任何程序設(shè)計語言都需要掌握一些關(guān)鍵字(也稱為保留字),即基本詞匯。C語言一共只有32個保留字,9種控制語句,壓縮了一切不必要的成分,相對于其他語言,C語言的關(guān)鍵字比較少,便于記憶。另外,完成同樣的任務(wù),C程序往往比其他語言的程序短,因此輸入程序時工作量少,有利于提高程序員的編程效率。2.運算符豐富多樣C語言具有種類豐富的運算符,共34種運算符和15個等級的運算優(yōu)先順序,除了具有一般高級語言使用的算術(shù)運算符、關(guān)系運算符及邏輯運算符外,還有自增、自減運算符,復(fù)合賦值運算符,3項條件運算符和位運算符等。另外,C語言還把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。如此豐富的運算符使運算表達(dá)式簡潔多樣化,且編譯處理也統(tǒng)一簡單,靈活地使用這些運算符可以實現(xiàn)在其他語言中難以實現(xiàn)的運算。3.?dāng)?shù)據(jù)結(jié)構(gòu)多樣性C語言的數(shù)據(jù)類型有整型、實數(shù)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、聯(lián)合體類型及枚舉類型等,可以實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算,特別是指針類型,使用起來更是靈活、多樣。因此,C語言具有較強的數(shù)據(jù)處理能力。4.程序語言模塊化C語言程序由許多個函數(shù)構(gòu)成,各個函數(shù)之間相互獨立,這樣不僅有利于把整體程序分割成若干個具有相對獨立功能的模塊,而且便于模塊間相互調(diào)用及相互傳遞數(shù)據(jù)。5.控制語句結(jié)構(gòu)化C語言為結(jié)構(gòu)化程序設(shè)計提供了if-else、switch-case、while、do-while、for等流程控制語句,便于采用自頂向下、逐步細(xì)化的結(jié)構(gòu)化程序設(shè)計方法,符合現(xiàn)代編程風(fēng)格的要求。6.接近硬件與系統(tǒng)C語言既有高級語言的特點,又具有匯編語言的特點,能夠用來開發(fā)系統(tǒng)程序。C語言允許程序根據(jù)地址直接訪問內(nèi)存,允許程序按位處理數(shù)據(jù),也可以直接對硬件進(jìn)行操作。7.運行效率高C語言編寫的程序生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高,一般只比匯編程序生成的目標(biāo)代碼效率低10%~20%。在相同的計算機上完成相同的任務(wù),C程序往往比其他語言的程序運行時間短,占用的內(nèi)存空間少。8.可移植性好在一種計算機上開發(fā)的C程序,經(jīng)過少量的修改,甚至不經(jīng)修改,就可以在其他類型的計算機上運行。它適合于多種操作系統(tǒng),如DOS、NUIX,也適用于多種機型。任何一種語言都有各自的優(yōu)點也有自己的缺點。C語言有著眾多的優(yōu)點也有一些弱點,比如運算符的優(yōu)先級比較多,有些還與常規(guī)約定不同,不便記憶;C語言的語法限制不太嚴(yán)格,對變量的類型約束不嚴(yán)格,影響程序的安全性;對數(shù)組的下標(biāo)越界不做檢查等。對初學(xué)者來說,必須掌握C語言的基礎(chǔ)知識,只有熟練掌握了才能靈活運用??傮w上說,C語言功能強大,靈活易用,對編程人員的限制少,可以編寫出任何類型的程序(系統(tǒng)軟件與應(yīng)用軟件)。同時,C語言作為一門基礎(chǔ)性語言掌握之后,學(xué)習(xí)其他語言會很快入門。1.5本章小結(jié)計算機語言經(jīng)歷了運用二進(jìn)制代碼編寫的第一代機器語言、相對來說容易理解的第二代匯編語言,到后來的第三代高級語言運用完全接近人類習(xí)慣的英語單詞表示,以及現(xiàn)在面向?qū)ο蠡騿栴}的高級語言。程序語言的發(fā)展越來越向人類可以接受的方向發(fā)展,而計算機只能識別二進(jìn)制代碼,因此數(shù)據(jù)在計算機內(nèi)部需要進(jìn)行轉(zhuǎn)換才能識別存儲,常用的數(shù)制有二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制。二進(jìn)制、八進(jìn)制和十六進(jìn)制有著特殊的對應(yīng)關(guān)系,它們分別是21,23,24,進(jìn)制之間易于轉(zhuǎn)換。程序設(shè)計就是要找出解決問題的算法,并把它用程序語言描述出來。因此首先要學(xué)習(xí)程序設(shè)計的思路即解決問題的思想。1.6習(xí)題1.算法的特點有哪些?2.為什么說C語言是一門“中間語言”?3.簡述C語言的發(fā)展歷史。第2章認(rèn)識C語言程序計算機語言與人類的自然語言一樣,都有自己特定的結(jié)構(gòu)特征與書寫風(fēng)格。只有遵循特定的語法結(jié)構(gòu),程序才能被識別;通過正確的書寫風(fēng)格,增強程序的可讀性,程序員之間才能更好地交流。本章通過一個簡單的C語言程序例子來說明C語言程序的結(jié)構(gòu)和書寫格式,幫助初學(xué)者對C語言程序建立初步的認(rèn)識,以便于進(jìn)一步學(xué)習(xí)。C語言程序的結(jié)構(gòu)特征;C語言程序的書寫風(fēng)格;C語言程序的開發(fā)過程;熟悉VisualC++6.0集成開發(fā)環(huán)境;用VisualC++6.0運行一個C語言程序。2.1C語言程序的結(jié)構(gòu)特征一種語言只有熟悉它的語法和結(jié)構(gòu)特征,才能更好地理解并掌握它。下面我們通過一個簡單的C語言程序?qū)嵗齺韺ζ浣Y(jié)構(gòu)進(jìn)行分析,使讀者對C語言程序有一個初步的認(rèn)識,在以后的章節(jié)中,我們將進(jìn)行深入的講解。下面是用C語言編寫的一個程序,實現(xiàn)的功能是從輸入端任意輸入兩個整型數(shù),并求這兩個數(shù)的和,最后輸出到屏幕上。為了講解方便我們將每一行的開頭用序號標(biāo)出,要注意的是這些序號不屬于編寫程序本身,只是為了方便說明而添加上去的。
#include<stdio.h>①文件包含
voidmain()②主函數(shù)
{③程序開始
inta,b,sum;④變量定義
scanf("%d",&a);/*輸入a*/⑤格式輸入函數(shù)與注釋
scanf("%d",&b);⑥格式輸入函數(shù)
sum=a+b;/*對a、b求和*/⑦求和與注釋
printf("sum=%d\n",sum);⑧格式輸出函數(shù)
}⑨程序結(jié)束
我們用序號將各行語句的作用都標(biāo)注出來,下面將對C語句的結(jié)構(gòu)和作用進(jìn)行逐一的講解。1.文件包含#include<stdio.h>是文件包含,通用的格式是#include<文件名>或#include“文件名”,它屬于預(yù)處理命令中的一種。文件包含的作用是將該程序編譯時所需要的文件復(fù)制到本文件,再對合并后的文件進(jìn)行編譯。stdio.h是基本輸入/輸出的頭文件,在上例中,我們用到輸入/輸出函數(shù)printf()、scanf(),因此需要在源程序的開頭寫上#include<stdio.h>。在編寫程序的時候,常會用到不同的函數(shù),如sin()、cos()、abs(),而這些函數(shù)雖然已經(jīng)編好,但需要提供有關(guān)信息,這就需要用到這些預(yù)處理命令,且要放在程序的開頭,故也稱為頭文件。當(dāng)用到數(shù)學(xué)函數(shù),如sin()、cos()、abs()時,則需要寫#include<math.h>?!緦嵗?-1】輸入一個正整數(shù)求其平方根。
#include<stdio.h>
#include<math.h>
voidmain()
{
floata,b;/*定義兩個實數(shù)型變量a、b*/
scanf("%f",&a);/*輸入a的值*/
a=fabs(a);/*保證被開方數(shù)為正數(shù)*/
b=sqrt(a);/*對a進(jìn)行開平方,并將其賦予b*/
printf("%f",b);
}
程序運行時,當(dāng)輸入:4屏幕上輸出的結(jié)果為:4的平方根是2在【實例2-1】中,程序編譯時用到了sqart()函數(shù),因此在源程序的開頭將該函數(shù)所在的頭文件引入。2.主函數(shù)main()表示主函數(shù),這是系統(tǒng)提供的特殊函數(shù),每一個C語言程序有且只有一個main()函數(shù)。函數(shù)的內(nèi)部用一對大括號括起來,括起來的部分稱為函數(shù)體,上例中函數(shù)體一共包括五條語句,一個C程序執(zhí)行是從第1個大括號開始,到另一個大括號結(jié)束。在上面的例子中,③⑨表示的是main()函數(shù)的開始與結(jié)束,同時它也表示源程序的執(zhí)行的開始與結(jié)束,這兩個大括號必須配對使用,不能省去。④⑤⑥⑦⑧構(gòu)成main()函數(shù)的函數(shù)體,④是函數(shù)體的說明語句,⑤⑥⑦⑧是執(zhí)行語句。每一個語句后面都要以分號結(jié)尾,分號是語句結(jié)束標(biāo)志。不管main()函數(shù)在源程序中的位置在何處,執(zhí)行完主函數(shù)中的所有語句后,程序就結(jié)束了。【實例2-2】程序的執(zhí)行過程示例。
#include<stdio.h>
intc,a=4;/*定義兩個整型變量c、a,并對a賦值*/
intfunc(inta,intb)/*定義func()函數(shù),函數(shù)值為整數(shù),a,b為形式參數(shù)*/
{
c=a*b;
a=b-1;
b++;
return(a+b+1);
}
voidmain()
{
intb=2,p=0;c=1;/*定義三個整型變量b、p、c,并進(jìn)行賦值*/
p=func(b,a);/*調(diào)用func()函數(shù)*/
printf("%d,%d,%d,%d\n",a,b,c,p);
}
程序運行時,屏幕上輸出的結(jié)果為:4,2,8,9?!緦嵗?-2】中,源程序的執(zhí)行不是從開頭進(jìn)行的,而是從main()函數(shù)所在的位置開始的,func()函數(shù)是用戶自定義函數(shù)。程序從main()函數(shù)開始執(zhí)行,執(zhí)行到main()函數(shù)中的第四行時,開始調(diào)用func()函數(shù),程序轉(zhuǎn)到func()函數(shù),執(zhí)行完func()函數(shù)中的所有語句后,再返回到主函數(shù)func()函數(shù)中繼續(xù)執(zhí)行。3.變量的定義一個變量在內(nèi)存中占據(jù)一定的存儲單元,在該存儲單元中存放變量的值。本行定義了三個變量a、b、sum,分別用來存儲等待輸入的兩個整型數(shù)和它們的和,便于以后的操作。C語言中,變量的定義必須符合標(biāo)識符的命名規(guī)則,即標(biāo)識符只能由字母(大小寫均可)、數(shù)字和下畫線3種字符組成,第1個字母不能是數(shù)字。C語言對大小寫嚴(yán)格區(qū)分,變量一般用小寫。變量遵循先定義后使用的原則,定義變量有利于系統(tǒng)分配存儲空間,定義變量其實就是在內(nèi)存中開辟存儲單元。4.格式輸入與輸出函數(shù)C語言本身不提供輸入/輸出語句,輸入與輸出操作是由函數(shù)來實現(xiàn)的。在C標(biāo)準(zhǔn)函數(shù)庫中有一些輸入/輸出函數(shù),可以在程序中直接調(diào)用,如printf()函數(shù)和scanf()函數(shù),它們不是C語言文本的組成部分,而是以函數(shù)庫的形式存放在系統(tǒng)之中。輸入函數(shù)的作用是將輸入設(shè)備(如鍵盤)按指定的格式輸入一組數(shù)據(jù),賦給指定的變量存儲單元,作為變量的值。⑤⑥兩行是C語言提供的標(biāo)準(zhǔn)輸入函數(shù)。&a,&b中的“&”表示“地址”,運用輸入函數(shù)分別從外部輸入設(shè)備輸入兩個整型數(shù),存放在a、b所代表的存儲單元里面。⑤⑥⑧中的“%d”是輸入的“格式說明”,用來指定輸入的數(shù)據(jù)類型和格式(詳見第3章),“%d”表示“十進(jìn)制整數(shù)類型”。輸出函數(shù)的作用是向系統(tǒng)指定的輸出設(shè)備(如顯示器)輸出若干個任意類型的數(shù)據(jù)。本例中,將輸入的兩個整型數(shù)求和后存放在sum所代表的存儲單元中,用輸出函數(shù)輸出到屏幕上。5.注釋部分例子中的⑤⑦行“/*”開頭到“*/”結(jié)尾之間的內(nèi)容表示注釋,它可以在一行書寫或分多行書寫,可寫在程序的任何位置。為了便于理解,我們常用漢字表示注釋,當(dāng)然也可以用英文或漢字拼音作注釋。注釋是程序員對程序某部分的功能和作用所做的說明,是給人看的,對編譯和運行不起作用。⑤⑦中的注釋部分是對所要進(jìn)行的操作的說明,⑤是一個輸出語句,輸入變量a的值,⑦是一個賦值語句,將a、b相加的和賦給sum。在程序中添加注釋語句可以提高程序的可讀性,具有提示的作用,也便于不同程序員之間的交流。根據(jù)上面一個簡單的實例,我們對C語言程序的結(jié)構(gòu)做了一些簡單的解釋,在以后的章節(jié)中我們將對各個部分逐一進(jìn)行詳細(xì)的講解。2.2C語言程序的書寫風(fēng)格為了增強程序的可讀性,便于人們理解和查錯,建議使用良好的書寫格式。這些書寫格式有些是強制性的,有些是建議性的。怎樣的才算是良好的書寫格式呢?我們從下面這個實例說起。
#include<stdio.h>
voidmain()
{
intk=0;charc='A';/*定義一個整型變量,一個字符變量,并賦值*/
do{/*直到型循環(huán)*/
switch(c++)
{/*switch多分支語句*/
case'A':k++;break;
case'B':k--;
case'C':k+=2;break;
case'D':k=k%2;break;
case'E':k=k*10;break;
default:k=k/3;
}
k++;
}while(c<'G');
printf("k=%d\n",k);
}
從這個實例中,程序里面的成分結(jié)構(gòu)可以一目了然,上述程序表現(xiàn)了C語言的書寫格式,具體如下:C語言程序使用英文小寫字母書寫。大寫字母一般用于符號常量或特殊用途。C語言區(qū)分字母大小寫,如student和STUDENT是兩個不同的標(biāo)識符。標(biāo)識符是用于標(biāo)識某個量的符號,可由程序員任意定義,但為了增加程序的可讀性,命名應(yīng)盡量有相應(yīng)的意義,以便閱讀理解及程序員之間的交流。不使用行號,通常按語句的順序執(zhí)行。前面的例子中我們使用編號是為了講解方便,在正常的源程序中,不能使用行號。所有語句都必須以分號“;”結(jié)束,作為語句之間的分隔符。C程序中一個語句可以占多行,一行也可以有多個語句,但要用分號分隔開。不強制規(guī)定語句在一行中的起始位置,但同一結(jié)構(gòu)層次的語句應(yīng)左對齊。低一層次的語句或說明可比高一層次的語句或說明縮進(jìn)若干格后書寫,以便看起來更加清晰,增加程序的可讀性。屬于同一模塊時要用“{}”括起來,如上例中的do-while語句和switch語句。為了使程序更加清晰,可以使用空行,空行不影響程序的執(zhí)行,但不要在一個語句內(nèi)加空行。C語言中有的符號必須配對使用。如注釋符號“/**/”,模塊起止符號“{}”,圓括號“()”等。在輸入時為了避免忘記,可連續(xù)輸入這些起止符號,然后再在其中插入代碼來完成內(nèi)容的編輯。在源程序中,凡是用“/*”和“*/”括起來的文字都是注釋??梢栽诔绦虻娜魏我惶幉迦胱⑨?。注釋是對程序或其局部的說明,不參加編譯也不在目標(biāo)程序中出現(xiàn)。建議多使用注釋信息,可以增加程序的可讀性。在編程時應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。2.3C語言程序的開發(fā)過程在本章的第一節(jié)我們了解到計算機語言的發(fā)展過程及幾種語言的區(qū)別。我們知道計算機只能識別和執(zhí)行由0、1組成的二進(jìn)制指令即機器語言,不能識別和執(zhí)行用高級語言編寫的指令即源程序。為了讓計算機能執(zhí)行高級語言編寫出來的源程序,必須通過一定的轉(zhuǎn)換過程,將源程序“翻譯”成計算機能懂的機器語言,如圖2-1所示。圖2-1C語言程序的“翻譯”過程把高級語言翻譯成機器語言的過程稱為“編譯”。對C程序來說,先要通過“編譯程序”將源程序翻譯成二進(jìn)制形式的“目標(biāo)程序”,然后再通過“鏈接程序”將該目標(biāo)程序與系統(tǒng)的庫函數(shù)及其他目標(biāo)程序鏈接起來,形成可執(zhí)行目標(biāo)程序。一般來講,C程序開發(fā)過程要經(jīng)歷創(chuàng)建源程序、編譯源程序、鏈接目標(biāo)代碼、運行可執(zhí)行文件等過程,如圖2-2所示是4個基本步驟。圖2-2C語言程序的開發(fā)過程1.編輯編輯創(chuàng)建源程序是將編寫好的C語言源程序代碼錄入到計算機中,形成源程序文件。編輯器可以是計算機所提供的某種文本編輯軟件,也可以是C系統(tǒng)提供的編輯器。源程序編輯好后以文本文件的形式保存到磁盤中,本書使用VisualC++6.0運行環(huán)境,保存文件的擴展名為“.cpp”,源程序文件名由用戶自己選定,例如“student.cpp”。2.編譯編譯的功能就是調(diào)用“編譯程序”將已編輯好的源程序翻譯成二進(jìn)制的目標(biāo)代碼。系統(tǒng)對源程序進(jìn)行編譯時,還對源程序的語法進(jìn)行檢查。當(dāng)發(fā)現(xiàn)錯誤時,會在屏幕上列出錯誤的位置及種類,此時要再次使用編輯工具對源程序進(jìn)行排錯修正,如果源程序沒有語法錯誤,編譯后將產(chǎn)生一個與源程序同名,以“.obj”為擴展名的目標(biāo)程序。例如,編譯源程序為“student.cpp”,將產(chǎn)生目標(biāo)程序“student.obj”。3.鏈接編譯后產(chǎn)生的目標(biāo)程序不能直接用于運行,因為每一個模塊往往都是單獨編譯的,需要把各個模塊編譯后得到的目標(biāo)程序及系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù)等鏈接后才能運行。鏈接過程是使用系統(tǒng)提供的“鏈接程序”進(jìn)行的,鏈接后產(chǎn)生以“.exe”為擴展名的可執(zhí)行目標(biāo)程序。例如編譯源程序為“student.cpp”,編譯鏈接后生成“student.exe”。4.運行可執(zhí)行目標(biāo)程序生成后,就可以在操作系統(tǒng)的支持下運行。若執(zhí)行結(jié)果達(dá)到預(yù)期的目的,則開發(fā)工作到此完成。否則,要進(jìn)一步檢查修改源程序,再經(jīng)過“編輯—編譯—鏈接”的過程,直到取得正確的運行結(jié)果為止。本書使用VisualC++6.0集成開發(fā)環(huán)境。為了幫助讀者更好地理解C語言開發(fā)的過程,我們在這里以“student.cpp”為例,將它的開發(fā)過程以流程圖的形式展現(xiàn)出來,運行過程一目了然,如圖2-3所示。圖2-3C語言程序開發(fā)流程圖2.4VisualC++集成開發(fā)環(huán)境在了解C語言的初步知識之后,本節(jié)要講解一下C語言的集成開發(fā)環(huán)境——VisualC++6.0。VisualC++6.0是一個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE),已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具,是目前非常盛行的一種C編譯系統(tǒng),功能十分強大,操作方便,視圖界面友好。2.4.1熟悉VisualC++6.0集成開發(fā)環(huán)境為了幫助大家熟練運用VisualC++6.0進(jìn)行C語言開發(fā),在這一部分我們熟悉VisualC++6.0集成開發(fā)環(huán)境的界面及構(gòu)成。1.安裝VisualC++6.0VisualC++6.0過程不是非常復(fù)雜,只需要運行安裝文件中的setup.exe程序,然后按照安裝程序的提示信息進(jìn)行操作,可以指定系統(tǒng)文件存放的路徑,但一般不必自己另行指定,采用系統(tǒng)提示的默認(rèn)方案即可完成安裝過程。2.啟動VisualC++6.0在【開始】菜單中的【程序】選項的MicrosoftVisualStudio6.0級聯(lián)菜單下,選擇MicrosoftVisualC++6.0,啟動VisualC++6.0,進(jìn)入VisualC++6.0的界面。或者雙擊安裝過程中建立在桌面的快捷圖標(biāo),也可以啟動VisualC++6.0。3.VisualC++6.0的工作界面VisualC++6.0的工作界面如圖2-4所示。圖2-4VisualC++6.0主窗口標(biāo)題欄位于主窗口的最上方,它顯示了應(yīng)用程序的標(biāo)題名稱。菜單欄除包含常用的文件操作以外,還包含了程序開發(fā)過程中所需要的各種操作。工具欄是一種圖形化的操作界面,將菜單欄中的常用項以快捷的方式顯示出來,熟練掌握工具欄的使用方法以后,工作效率將會大幅提高。編輯區(qū)用來對源文件、資源文件、文檔文件等進(jìn)行編輯,現(xiàn)在的編輯區(qū)是灰色的,表示還沒有文件在進(jìn)行編輯。工作區(qū)(Workspace)用來管理工程的一些信息,包括類、工程文件、資源等,各種文件的類屬很清晰,可以有條不紊地進(jìn)行各種信息的編輯。輸出區(qū)(Output)包括編譯、調(diào)試、查找等信息的輸出,這些輸出信息以多頁面的方式出現(xiàn)在輸出區(qū)中,例如,在對工程進(jìn)行編譯和鏈接后,如果程序有錯誤或警告,則顯示在輸出區(qū),可以對照錯誤或警告提示進(jìn)行程序修改。狀態(tài)欄用來顯示界面當(dāng)前所處的狀態(tài)。2.4.2C語言在VisualC++6.0的開發(fā)過程如圖2-4所示,剛開始進(jìn)入VisualC++6.0的界面時,里面的項目工作區(qū)和文本編輯區(qū)是空的,要開始一個新程序的開發(fā),需要通過應(yīng)用程序向?qū)Ы⑿碌墓こ添椖浚⒃陧椖恐刑砑游募?,然后再進(jìn)行其他的開發(fā)操作。1.新建工程項目項目也稱工程,VisualC++6.0用工程化和管理方法把一個應(yīng)用程序中的所有相互關(guān)聯(lián)的一組文件組織成一個有機的整體,項目以文件夾方式管理所有源文件,項目名作為文件夾名。具體過程如下:(1)單擊VisualC++6.0主窗口菜單欄中的“文件”菜單選項。(2)單擊下拉菜單中的“新建”命令,彈出“新建”對話框,如圖2-5所示。圖2-5“新建”對話框(3)在“工程”選項卡下,選擇“Win32ConsoleApplication”選項,在“工程名稱”一欄中輸入項目名稱,如c_example,“位置”一欄用來設(shè)置新建項目的存儲位置,一般情況下為默認(rèn)位置,不作設(shè)置,然后單擊“確定”按鈕。(4)進(jìn)入“Win32ConsoleApplication步驟”對話框,如圖2-6所示,選擇你想要創(chuàng)建的控制臺程序,默認(rèn)情況下為創(chuàng)建一個空工程,然后單擊“完成”按鈕。圖2-6“Win32ConsoleApplication步驟”對話框(5)顯示“新建工程信息”對話框,給出你所創(chuàng)建工程的信息,如圖2-7所示,單擊“確定”按鈕。圖2-7“新建工程信息”對話框(6)系統(tǒng)自動返回VisualC++6.0的主窗口界面,此時項目工作區(qū)已經(jīng)顯示了你所創(chuàng)建的項目內(nèi)容。2.建立項目中的文件若要在新建立的項目中創(chuàng)建文件,可以打開相應(yīng)的項目文件,如剛才我們創(chuàng)建了一個名稱為c_example的項目,里面沒有任何文件,我們現(xiàn)在在里面創(chuàng)建源程序文件或頭文件,具體操作如下:(1)選擇“文件”菜單下的“新建”命令,在彈出的“新建”對話框中,選擇“文件”選項卡,如圖2-8所示。(2)選擇想要創(chuàng)建的文件類型。這里我們選擇“C++SourceFile”選項,在“文件名”一欄中輸入創(chuàng)建文件的名稱,如圖2-8所示,然后單擊“確定”按鈕。圖2-8“新建”對話框(3)此時系統(tǒng)自動返回VisualC++6.0的主窗口界面,并顯示剛才建立的文件編輯區(qū)窗口,在文件編輯區(qū)可以對源文件或頭文件的內(nèi)容進(jìn)行編輯操作。3.文件保存編輯完源文件后,需要對其進(jìn)行保存,有兩種方法:(1)選擇“文件”|“保存”命令。(2)單擊工具欄中的保存按鈕。2.5用VisualC++6.0運行一個C程序在上一節(jié)我們熟悉了VisualC++6.0集成開發(fā)環(huán)境,以及其中的程序開發(fā)過程,現(xiàn)在我們來編輯并運行一個簡單的C語言程序,熟悉VisualC++6.0中的整個上機過程。1.編輯源程序這里我們使用上一節(jié)建立的c_example工程,在其里面再建立一個名稱為example的C++SourceFile文件。進(jìn)入文件編輯區(qū)輸入以下程序代碼:
#include<stdio.h>
voidmain()
{
inta,b,sum;
printf("輸入第1個數(shù)a:");
scanf("%d",&a);/*輸入a*/
printf("輸入第1個數(shù)b:");/*輸入b*/
scanf("%d",&b);
sum=a+b;/*對a、b求和*/
printf("%d和%d的和是%d\n",a,b,sum);
}
2.編譯鏈接源程序源程序編輯完成之后,要進(jìn)行編譯、鏈接生成可執(zhí)行目標(biāo)代碼文件。具體的操作過程如下:選擇菜單欄中的“組件”下拉菜單下的“編譯”命令(或按Ctrl+F7組合鍵)進(jìn)行編譯,然后選擇菜單欄中的“組件”下拉菜單下的“組件”(F7鍵為快捷鍵命令進(jìn)行鏈接),系統(tǒng)將會在輸出窗口給出所有的錯誤信息和警告信息。當(dāng)所有錯誤修正之后,系統(tǒng)將會生成擴展名為.exe的可執(zhí)行文件。對于輸出窗口給出的錯誤信息,雙擊可以使輸入焦點跳轉(zhuǎn)到引起錯誤的源代碼處以進(jìn)行修改。另一種方法是:可以先單擊主窗口工具欄上的編譯按鈕進(jìn)行編譯,再單擊主窗口工具欄上的Build按鈕進(jìn)行鏈接。3.運行程序選擇菜單欄中的“組件”下拉菜單下的“執(zhí)行”命令(Ctrl+F5組合鍵為快捷鍵)運行程序,或者單擊工具欄上的運行按鈕來執(zhí)行編譯鏈接后的程序。運行時,將會出現(xiàn)一個DOS窗口,按照程序輸入要求正確輸入數(shù)據(jù)。程序運行成功時將會在屏幕上輸出執(zhí)行結(jié)果。本源程序運行的結(jié)果如圖2-9所示。圖2-9程序運行結(jié)果2.6本章小結(jié)本章通過對一個C語言程序?qū)嵗M(jìn)行分析,介紹了C語言程序的基本結(jié)構(gòu)特點、正確規(guī)范的書寫風(fēng)格,在此基礎(chǔ)之上認(rèn)識了C語言程序的開發(fā)過程,并講解了VisualC++6.0的運行環(huán)境,用VisualC++6.0運行一個具體的C語言程序?qū)嵗?,幫助讀者熟練掌握C語言的開發(fā)過程。2.7習(xí)題1.C語言的結(jié)構(gòu)特點有哪些?2.怎么使用注釋語句?使用注釋語句有哪些好處?3.簡述C語言程序在VisualC++6.0中的開發(fā)過程。4.模仿例題,編寫一個C語言程序,并上機調(diào)試。程序的輸出結(jié)果為:
***********
helloworld!
***********
第2篇C語言基礎(chǔ)第3章常量、變量與標(biāo)識符C語言中的數(shù)據(jù)包括常量和變量,作為操作對象的數(shù)據(jù)都是以某種特定的形式存在的,可以用C語言中的標(biāo)識符來表示一個常量或者一個變量。標(biāo)識符;常量;變量;變量的初始化。3.1標(biāo)識符我們已經(jīng)知道在C語言中,數(shù)據(jù)是在計算機內(nèi)存中存儲的,程序設(shè)計中用到的數(shù)據(jù),要到計算機的內(nèi)存中讀取,因此需要用到一個符號來代表它,這就是我們所要講的標(biāo)識符。標(biāo)識符是指用來標(biāo)識常量名、變量名、函數(shù)名、數(shù)組等對象,按照一定的命名規(guī)則定義的字符序列,即一個代號。3.1.1標(biāo)識符的命名標(biāo)識符的命名規(guī)則如下:標(biāo)識符由字母(包括大寫字母和小寫字母)、數(shù)字及下畫線組成,且第1個字符必須是字母或者下畫線。在C語言中,大寫字母和小寫字母是有區(qū)別的,即作為不同的字母來看待,應(yīng)引起注意。下面是合法的C語言標(biāo)識符:A_3、home、student_name、_file、Teacher、TEACHER下面是不合法的標(biāo)識符:A=2:標(biāo)識符中出現(xiàn)非法字符“=”。3b:數(shù)字不能作為標(biāo)識符的第1個字符。Studentname:空格不能出現(xiàn)在一個標(biāo)識符的中間。3.1.2保留字保留字也稱關(guān)鍵字,是指在高級語言中,那些已經(jīng)定義過的標(biāo)識符,用戶不能再將這些字作為變量名、常量名、函數(shù)名、數(shù)組名等。C語言共有32個關(guān)鍵字,具體可分為4類。數(shù)據(jù)類型關(guān)鍵字(12個):char、double、enum、float、int、long、short、signed、struct、union、unsigned、void。控制語句關(guān)鍵字(12個):break、case、continue、default、do、else、for、goto、if、return、switch、while。存儲類型關(guān)鍵字(4個):auto、extern、register、static。其他關(guān)鍵字(4個):const、sizeof、typedef、volatile。C語言中除了上述的保留字外,還使用一些具有特定含義的標(biāo)識符,稱為特定字。如include、define、ifdef、ifndef、endif、line。這些特定標(biāo)識符主要用在C語言的編譯預(yù)處理命令中。在C語言中,標(biāo)識符的命名除了遵守命名規(guī)則、不使用關(guān)鍵字以外還要注意以下幾點。在C語言中,大寫字母和小寫字母是有區(qū)別的,即作為不同的字母來看待,因此Teacher、TEACHER是兩個不同的標(biāo)識符。在起名時,應(yīng)注意做到“見名知義”。比如表示姓名,比較好的標(biāo)識符:Name、name、xing_ming、Xingming、xm等;比較差的標(biāo)識符:x、y、abc等。盡量不用單個的“l(fā)”和“o”作為標(biāo)識符。這個與數(shù)字中的“1”和“0”很相像,程序設(shè)計過程中容易混淆。數(shù)學(xué)計算時可以采用習(xí)慣的名字。如圓的半徑和面積:r,s;立方體的長、寬、高和體積:a、b、h、v。3.2常量常量是指在程序運行過程中其值不隨程序的運行而改變的量。常量在程序中不需要進(jìn)行任何說明就可以直接使用,它本身就隱含了它的類型。常量分為直接常量和符號常量。3.2.1直接常量直接常量是直接寫出來的,直接常量的書寫形式?jīng)Q定了它的類型。直接常量包括整型常量、實數(shù)型常量、字符型常量和字符串常量。例如,整型常量:15、-8、0。實數(shù)型常量:3.7、-8.2、58.12E
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【高中語文】《赤壁賦》導(dǎo)學(xué)案++統(tǒng)編版高一語文必修上冊
- 2026北京中國電科34所校園招聘備考題庫含答案詳解
- 先天性梅毒科普
- 2026廣東省華南農(nóng)業(yè)大學(xué)招聘專業(yè)技術(shù)人員60人備考題庫及1套完整答案詳解
- 2026廣東廣州花山鎮(zhèn)華僑初級中學(xué)招聘水電工1人備考題庫及參考答案詳解一套
- 2026新疆生產(chǎn)建設(shè)兵團(tuán)醫(yī)院招聘90人備考題庫帶答案詳解
- 2025上海對外經(jīng)貿(mào)大學(xué)統(tǒng)計與數(shù)據(jù)科學(xué)學(xué)院教學(xué)秘書招聘1人備考題庫及一套答案詳解
- 2026國藥控股青海有限公司招聘4人備考題庫(含答案詳解)
- 2025浙江溫州甌海招商發(fā)展有限公司招聘1人備考題庫及答案詳解參考
- 安全生產(chǎn)事故的應(yīng)急處理測試題及答案
- 2025年度耳鼻喉科工作總結(jié)及2026年工作計劃
- 2024年執(zhí)業(yè)藥師《藥學(xué)專業(yè)知識(一)》試題及答案
- 2025寧夏黃河農(nóng)村商業(yè)銀行科技人員社會招聘考試筆試參考題庫及答案解析
- 統(tǒng)編版語文一年級上冊無紙化考評-趣味樂考 玩轉(zhuǎn)語文 課件
- 2025年新水利安全員b證考試試題及答案
- 高壓氧進(jìn)修課件
- 2025無人機物流配送網(wǎng)絡(luò)建設(shè)與運營效率提升研究報告
- 鋁錠采購正規(guī)合同范本
- 城市更新能源高效利用方案
- 2025 精神護(hù)理人員職業(yè)倦怠預(yù)防課件
- 春播行動中藥貼敷培訓(xùn)
評論
0/150
提交評論