版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C程序設(shè)計(jì)①ヨD?イフ。。萬(wàn)?紀(jì)?TOC\o"1-5"\h\z\o"CurrentDocument"第1章C語(yǔ)言概述 7C語(yǔ)言的發(fā)展過(guò)程 7當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言 7\o"CurrentDocument"C語(yǔ)言版本 7\o"CurrentDocument"C語(yǔ)言的特點(diǎn) 7面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言 8C和C++ 8間單的C程序介紹 8輸入和輸出函數(shù) 10C源程序的結(jié)構(gòu)特點(diǎn) 11書(shū)寫(xiě)程序時(shí)應(yīng)遵循的規(guī)則 11C語(yǔ)言的字符集 11C語(yǔ)言詞匯 12TurboC2.0集成開(kāi)發(fā)環(huán)境的使用 13TurboC2.0簡(jiǎn)介和啟動(dòng) 13TurboC2.0集成開(kāi)發(fā)環(huán)境 13\o"CurrentDocument"File菜單 14\o"CurrentDocument"Edit菜單 15\o"CurrentDocument"Run菜單 16\o"CurrentDocument"Compile菜單 17\o"CurrentDocument"Project菜單 18\o"CurrentDocument"Options菜單 19\o"CurrentDocument"Debug菜單 23\o"CurrentDocument"Break/watch菜單 24\o"CurrentDocument"TurboC2.0的配置文件 25\o"CurrentDocument"第2章程序的靈魂一算法 25算法的概念 25簡(jiǎn)單算法舉例 26算法的特性 28怎樣表示ー個(gè)算法 28用自然語(yǔ)言表示算法 28\o"CurrentDocument"用流程圖表示算法 28\o"CurrentDocument"三種基本結(jié)構(gòu)和改進(jìn)的流程圖 32用N-S流程圖表示算法 33\o"CurrentDocument"用偽代碼表示算法 34用計(jì)算機(jī)語(yǔ)言表示算法 35結(jié)構(gòu)化程序設(shè)計(jì)方法 35\o"CurrentDocument"第3章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式 35C語(yǔ)言的數(shù)據(jù)類(lèi)型 35常量與變量 37常量和符號(hào)常量 37\o"CurrentDocument"整型數(shù)據(jù) 38\o"CurrentDocument"整型常量的表小方法 38\o"CurrentDocument"整型變量 39\o"CurrentDocument"實(shí)型數(shù)據(jù) 42實(shí)型常量的表示方法 42\o"CurrentDocument"實(shí)型變量 43實(shí)型常數(shù)的類(lèi)型 44字符型數(shù)據(jù) 44\o"CurrentDocument"字符常量 44\o"CurrentDocument"轉(zhuǎn)義字符 44\o"CurrentDocument"字符變量 45\o"CurrentDocument"字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法 45\o"CurrentDocument"字符串常量 46變量賦初值 47各類(lèi)數(shù)值型數(shù)據(jù)之間的混合運(yùn)算 47算術(shù)運(yùn)算符和算術(shù)表達(dá)式 49\o"CurrentDocument"C運(yùn)算符簡(jiǎn)介 49算術(shù)運(yùn)算符和算術(shù)表達(dá)式 49賦值運(yùn)算符和賦值表達(dá)式 51逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 53小結(jié) 53C的數(shù)據(jù)類(lèi)型 53基本類(lèi)型的分類(lèi)及特點(diǎn) 53\o"CurrentDocument"常量后綴 54\o"CurrentDocument"常量類(lèi)型 54\o"CurrentDocument"數(shù)據(jù)類(lèi)型轉(zhuǎn)換 54\o"CurrentDocument"運(yùn)算符優(yōu)先級(jí)和結(jié)合性 54\o"CurrentDocument"表達(dá)式 54\o"CurrentDocument"第4章最簡(jiǎn)單的C程序設(shè)計(jì)ー順序程序設(shè)計(jì) 54C語(yǔ)句概述 55數(shù)據(jù)輸入輸出的概念及在C語(yǔ)言中的實(shí)現(xiàn) 57字符數(shù)據(jù)的輸入輸出 58\o"CurrentDocument"putchar函數(shù)(字符輸出函數(shù)) 58\o"CurrentDocument"getchar函數(shù)(鍵盤(pán)輸入函數(shù)) 58\o"CurrentDocument"格式輸入與輸出 59\o"CurrentDocument"printf函數(shù)(格式輸出函數(shù)) 59\o"CurrentDocument"scanf函數(shù)(格式輸入函數(shù)) 61順序結(jié)構(gòu)程序設(shè)計(jì)舉例 65\o"CurrentDocument"第5章分支結(jié)構(gòu)程序 66關(guān)系運(yùn)算符和表達(dá)式 66關(guān)系運(yùn)算符及其優(yōu)先次序 66\o"CurrentDocument"關(guān)系表達(dá)式 66邏輯運(yùn)算符和表達(dá)式 67邏輯運(yùn)算符極其優(yōu)先次序 67\o"CurrentDocument"邏輯運(yùn)算的值 68\o"CurrentDocument"邏輯表達(dá)式 68\o"CurrentDocument"if語(yǔ)句 69\o"CurrentDocument"if語(yǔ)句的三種形式 69if-レ7HJ白■????????????((?(????((■■■■■■■■■■■■■■■■■■■■■■■(■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■(■■■(■.72\o"CurrentDocument"條件運(yùn)算符和條件表達(dá)式 74switch語(yǔ)句 74程序舉例 76\o"CurrentDocument"第6章循環(huán)控制 77\o"CurrentDocument"概述 77\o"CurrentDocument"goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán) 77do-while語(yǔ)句 80for增句 82循環(huán)的嵌套 84丿し利’(盾]1、HJヒ匕"!乂 84break和continue 語(yǔ)句 84break1S?句 84\o"CurrentDocument"continue語(yǔ)句 85\o"CurrentDocument"程序舉例 86\o"CurrentDocument"第7章數(shù)組 88ー維數(shù)組的定義和引用 88ー維數(shù)組的定義方式 88\o"CurrentDocument"ー維數(shù)組元素的引用 89\o"CurrentDocument"ー維數(shù)組的初始化 90\o"CurrentDocument"ー維數(shù)組程序舉例 91ニ維數(shù)組的定義和引用 92二維數(shù)組的定義 92\o"CurrentDocument"二維數(shù)組元素的引用 93\o"CurrentDocument"二維數(shù)組的初始化 94二維數(shù)組程序舉例 95字符數(shù)組 95字符數(shù)組的定義 95字符數(shù)組的初始化 95字符數(shù)組的引用 96字符串和字符串結(jié)束標(biāo)志 96\o"CurrentDocument"字符數(shù)組的輸入輸出 97\o"CurrentDocument"字符串處理函數(shù) 98程序舉例 100\o"CurrentDocument"本章小結(jié) 103\o"CurrentDocument"第8章函數(shù) 103概述 103函數(shù)定義的一般形式 104函數(shù)的參數(shù)和函數(shù)的值 106形式參數(shù)和實(shí)際參數(shù) 106\o"CurrentDocument"函數(shù)的返回值 107函數(shù)的調(diào)用 108函數(shù)調(diào)用的一般形式 108函數(shù)調(diào)用的方式 108\o"CurrentDocument"被調(diào)用函數(shù)的聲明和函數(shù)原型 109函數(shù)的嵌套調(diào)用 110函數(shù)的遞歸調(diào)用 111數(shù)組作為函數(shù)參數(shù) 114局部變量和全局變量 118\o"CurrentDocument"局部變量 118\o"CurrentDocument"全局變量 120變量的存儲(chǔ)類(lèi)別 121動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)動(dòng)態(tài)存儲(chǔ)方式 121\o"CurrentDocument"auto變量 122\o"CurrentDocument"用static聲明局部變量 122\o"CurrentDocument"register變量 123\o"CurrentDocument"用extern聲明外部變量 123\o"CurrentDocument"第9章預(yù)處理命令 124\o"CurrentDocument"概述 124\o"CurrentDocument"宏定義 124\o"CurrentDocument"無(wú)參宏定義 124\o"CurrentDocument"帶參宏定義 127文件包含 130條件編譯 131\o"CurrentDocument"第10章指針 133地址指針的基本概念 134變量的指針和指向變量的指針變量 134定義ー個(gè)指針變量 135指針變量的引用 135\o"CurrentDocument"指針變量作為函數(shù)參數(shù) 139\o"CurrentDocument"指針變量幾個(gè)問(wèn)題的進(jìn)ー步說(shuō)明 142數(shù)組指針和指向數(shù)組的指針變量 145指向數(shù)組元素的指針 145\o"CurrentDocument"通過(guò)指針引用數(shù)組元素 146\o"CurrentDocument"數(shù)組名作函數(shù)參數(shù) 148\o"CurrentDocument"指向多維數(shù)組的指針和指針變量 155字符串的指針指向字符串的針指變量 157字符串的表示形式 157\o"CurrentDocument"使用字符串指針變量與字符數(shù)組的區(qū)別 160圖數(shù)指針變量 161指針型函數(shù) 162指針數(shù)組和指向指針的指針 163指針數(shù)組的概念 163\o"CurrentDocument"指向指針的指針 166\o"CurrentDocument"main函數(shù)的參數(shù) 167有關(guān)指針的數(shù)據(jù)類(lèi)型和指針運(yùn)算的小結(jié) 169有關(guān)指針的數(shù)據(jù)類(lèi)型的小結(jié) 169指針運(yùn)算的小結(jié) 169\o"CurrentDocument"void指針類(lèi)型 170\o"CurrentDocument"第11章結(jié)構(gòu)體與共用體 170定義ー個(gè)結(jié)構(gòu)的一般形式 170結(jié)構(gòu)類(lèi)型變量的說(shuō)明 170結(jié)構(gòu)變量成員的表示方法 172結(jié)構(gòu)變量的賦值 173結(jié)構(gòu)變量的初始化 173結(jié)構(gòu)數(shù)組的定義 174結(jié)構(gòu)指針變量的說(shuō)明和使用 176\o"CurrentDocument"指向結(jié)構(gòu)變量的指針 176指向結(jié)構(gòu)數(shù)組的指針 177\o"CurrentDocument"結(jié)構(gòu)指針變量作函數(shù)參數(shù) 178動(dòng)態(tài)存儲(chǔ)分配 179鏈表的概念 181枚舉類(lèi)型 182枚舉類(lèi)型的定義和枚舉變量的說(shuō)明 183枚舉類(lèi)型變量的賦值和使用 183類(lèi)型定義符typedef 184\o"CurrentDocument"第12章位運(yùn)算 185位運(yùn)算符C語(yǔ)言提供了六種位運(yùn)算符: 185\o"CurrentDocument"按位與運(yùn)算 186\o"CurrentDocument"按位或運(yùn)算 186按位異或運(yùn)算 186\o"CurrentDocument"求反運(yùn)算 187\o"CurrentDocument"左移運(yùn)算 187\o"CurrentDocument"右移運(yùn)算 187位域(位段) 188\o"CurrentDocument"本章小結(jié) 190\o"CurrentDocument"第13章文件 190\o"CurrentDocument"C文件概述 190\o"CurrentDocument"文件指針 191文件的打開(kāi)與關(guān)閉 191\o"CurrentDocument"文件的打開(kāi)(fbpen函數(shù)) 191\o"CurrentDocument"文件關(guān)閉函數(shù)(fdose函數(shù)) 193\o"CurrentDocument"文件的讀寫(xiě) 193\o"CurrentDocument"字符讀寫(xiě)函數(shù)fgetc和fjmtc 193\o"CurrentDocument"字符串讀寫(xiě)函數(shù)fgets和fjmts 196\o"CurrentDocument"數(shù)據(jù)塊讀寫(xiě)函數(shù)fread和hvtrite 198\o"CurrentDocument"格式化讀寫(xiě)函數(shù)fscanf和f|3rintf 199\o"CurrentDocument"文件的隨機(jī)讀寫(xiě) 201\o"CurrentDocument"文件定位 201文件的隨機(jī)讀寫(xiě) 201文件檢測(cè)函數(shù) 202\o"CurrentDocument"C庫(kù)文件 203\o"CurrentDocument"本章小結(jié) 203第1章C語(yǔ)言概述C語(yǔ)言的發(fā)展過(guò)程C語(yǔ)言是在70年代初問(wèn)世的。ー九七八年由美國(guó)電話電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)表了C語(yǔ)言。同時(shí)由B.W.Kemighan和D.M.Ritchit合著了著名的“THECPROGRAMMINGLANGUAGE"ー書(shū)。通常簡(jiǎn)稱(chēng)為《K&R》,也有人稱(chēng)之為《K&R》標(biāo)準(zhǔn)。但是,在《K&R》中并沒(méi)有定義ー個(gè)完整的標(biāo)準(zhǔn)C語(yǔ)言,后來(lái)由美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(AmericanNationalStandardsInstitute)在此基礎(chǔ)上制定了一個(gè)C語(yǔ)言標(biāo)準(zhǔn),于一九八三年發(fā)表。通常稱(chēng)之為ANSIC。當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言早期的C語(yǔ)言主要是用于UNIX系統(tǒng)。由于C語(yǔ)言的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識(shí),到了八十年代,C開(kāi)始進(jìn)入其它操作系統(tǒng),并很快在各類(lèi)大、中、小和微型計(jì)算機(jī)上得到了廣泛的使用,成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言之%C語(yǔ)言版本目前最流行的c語(yǔ)言有以下幾種:MicrosoftC或稱(chēng)MSCBorlandTurboC或稱(chēng)TurboCAT&TC這些C語(yǔ)言版本不僅實(shí)現(xiàn)了ANSIC標(biāo)準(zhǔn),而且在此基礎(chǔ)上各自作了一些擴(kuò)充,使之更加方便、完美。C語(yǔ)言的特點(diǎn)1?C語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。ANSICー共只有32個(gè)關(guān)鍵字:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizofstructswitchtypedefunionunsignedvoidvolatilewhile9種控制語(yǔ)句,程序書(shū)寫(xiě)自由,主要用小寫(xiě)字母表示,壓縮了一切不必要的成分。TurboC擴(kuò)充了11個(gè)關(guān)鍵字:asm_cs_ds_es_sscdeclfarhugeinterruptnear pascal注意:在C語(yǔ)言中,關(guān)鍵字都是小寫(xiě)的。?運(yùn)算符豐富。共有34種。C把括號(hào)、賦值、逗號(hào)等都作為運(yùn)算符處理。從而使C的運(yùn)算類(lèi)型極為豐富,可以實(shí)現(xiàn)其他高級(jí)語(yǔ)言難以實(shí)現(xiàn)的運(yùn)算。?數(shù)據(jù)結(jié)構(gòu)類(lèi)型豐富。4?具有結(jié)構(gòu)化的控制語(yǔ)句。5?語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。6?C語(yǔ)言允許直接訪問(wèn)物理地址,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。因此有人把它稱(chēng)為中級(jí)語(yǔ)言。?生成目標(biāo)代碼質(zhì)量髙,程序執(zhí)行效率高。?與匯編語(yǔ)言相比,用C語(yǔ)言寫(xiě)的程序可移植性好。但是,C語(yǔ)言對(duì)程序員要求也高,程序員用C寫(xiě)程序會(huì)感到限制少、靈活性大,功能強(qiáng),但較其他高級(jí)語(yǔ)言在學(xué)習(xí)上要困難ー些。面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言在C的基礎(chǔ)上,ー九八三年又由貝爾實(shí)驗(yàn)室的BjarneStrou-strup推出了C++〇C++進(jìn)ー步擴(kuò)充和完善了C語(yǔ)言,成為ー種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。C++目前流行的最新版本是BorlandC++,SymantecC++和MicrosoftVisualC++。C++提出了一些更為深入的概念,它所支持的這些面向?qū)ο蟮母拍钊菀讓?wèn)題空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計(jì)不同的思維方式和編程方法。因而也增加了整個(gè)語(yǔ)言的復(fù)雜性,掌握起來(lái)有一定難度。C和C++但是,C是C++的基礎(chǔ),C++語(yǔ)言和C語(yǔ)言在很多方面是兼容的。因此,掌握了C語(yǔ)言,再進(jìn)?步學(xué)習(xí)C++就能以ーー種熟悉的語(yǔ)法來(lái)學(xué)習(xí)面向?qū)ο蟮恼Z(yǔ)言,從而達(dá)到事半功倍的目的。簡(jiǎn)單的C程序介紹為了說(shuō)明C語(yǔ)言源程序結(jié)構(gòu)的特點(diǎn),先看以下幾個(gè)程序。這幾個(gè)程序由簡(jiǎn)到難,表現(xiàn)了C語(yǔ)言源程序在組成結(jié)構(gòu)上的特點(diǎn)。雖然有關(guān)內(nèi)容還未介紹,但可從這些例子中了解到組成ー個(gè)C源程序的基本部分和書(shū)寫(xiě)格式。【例1.1】main()printff世界,您好!\n");1 main是主函數(shù)的函數(shù)名,表示這是ー個(gè)主函數(shù)。! 每ー個(gè)C源程序都必須有,且只能有一個(gè)主函數(shù)(main函數(shù))。1 函數(shù)調(diào)用語(yǔ)句,printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示。1 printf函數(shù)是ー個(gè)由系統(tǒng)定義的標(biāo)準(zhǔn)函數(shù),可在程序中直接調(diào)用?!纠?.2]#include<math.h>#include<stdio.h>main(){doublex,s;printf(Hinputnumbcr:\nn);scanf(M%ir,&x);s=sin(x);printf(セineof%lfis%lf\n",x,s);)1 include稱(chēng)為文件包含命令! 擴(kuò)展名為.h的文件稱(chēng)為頭文件1 定義兩個(gè)實(shí)數(shù)變量,以被后面程序使用1 顯示提示信息1 從鍵盤(pán)獲得一個(gè)實(shí)數(shù)X1 求X的正弦,并把它賦給變量S! 顯示程序運(yùn)算結(jié)果1 main函數(shù)結(jié)束程序的功能是從鍵盤(pán)輸入ー個(gè)數(shù)X,求x的正弦值,然后輸出結(jié)果。在main。之前的兩行稱(chēng)為預(yù)處理命令(詳見(jiàn)后面)。預(yù)處理命令還有其它幾種,這里的include稱(chēng)為文件包含命令,其意義是把尖括號(hào)〇或引號(hào)""內(nèi)指定的文件包含到本程序來(lái),成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的,其擴(kuò)展名為.h。因此也稱(chēng)為頭文件或首部文件。C語(yǔ)言的頭文件中包括了各個(gè)標(biāo)準(zhǔn)庫(kù)函數(shù)的函數(shù)原型。因此,凡是在程序中調(diào)用ー個(gè)庫(kù)函數(shù)時(shí),都必須包含該函數(shù)原型所在的頭文件。在本例中,使用了三個(gè)庫(kù)函數(shù):輸入函數(shù)scanf,正弦函數(shù)sin,輸出函數(shù)printf。sin函數(shù)是數(shù)學(xué)函數(shù),其頭文件為math.h文件,因此在程序的主函數(shù)前用include命令包含了math.h。scanf和printf是標(biāo)準(zhǔn)輸入輸出函數(shù),其頭文件為stdio.h,在主函數(shù)前也用include命令包含了stdio.h文件。需要說(shuō)明的是,C語(yǔ)言規(guī)定對(duì)scanf和printf這兩個(gè)函數(shù)可以省去對(duì)其頭文件的包含命令。所以在本例中也可以刪去第二行的包含命令#inclu加<stdio.h>。同樣,在例1.1中使用了printf函數(shù),也省略了包含命令。在例題中的主函數(shù)體中又分為兩部分,一部分為說(shuō)明部分,另一部為分執(zhí)行部分。說(shuō)明是指變量的類(lèi)型說(shuō)明。例題1.1中未使用任何變量,因此無(wú)說(shuō)明部分。C語(yǔ)言規(guī)定,源程序中所有用到的變量都必須先說(shuō)明,后使用,否則將會(huì)出錯(cuò)。這ー點(diǎn)是編譯型高級(jí)程序設(shè)計(jì)語(yǔ)言的ー個(gè)特點(diǎn),與解釋型的BASIC語(yǔ)言是不同的。說(shuō)明部分是C源程序結(jié)構(gòu)中很重要的組成部分。本例中使用了兩個(gè)變量x,s,用來(lái)表示輸入的自變量和sin函數(shù)值。由于sin函數(shù)要求這兩個(gè)量必須是雙精度浮點(diǎn)型,故用類(lèi)型說(shuō)明符double來(lái)說(shuō)明這兩個(gè)變量。說(shuō)明部分后的四行為執(zhí)行部分或稱(chēng)為執(zhí)行語(yǔ)句部分,用以完成程序的功能。執(zhí)行部分的第一行是輸出語(yǔ)句,調(diào)用printf函數(shù)在顯示器上輸出提示字符串,請(qǐng)操作人員輸入自變量x的值。第二行為輸入語(yǔ)句,調(diào)用scanf函數(shù),接受鍵盤(pán)上輸入的數(shù)并存入變量x中。第三行是調(diào)用sin函數(shù)并把函數(shù)值送到變量s中。第四行是用printf函數(shù)輸出變量s的值,即x的正弦值。程序結(jié)束。運(yùn)行本程序時(shí),首先在顯示器屏幕上給出提示串inputnumber,這是由執(zhí)行部分的第一行完成的。用戶在梃示下從鍵盤(pán)上鍵入某ー數(shù),如5,按下回車(chē)鍵,接著在屏幕上給出計(jì)算結(jié)果。輸入和輸出函數(shù)在前兩個(gè)例子中用到了輸入和輸出函數(shù)scanf和printf,在以后要詳細(xì)介紹。這里我們先簡(jiǎn)單介紹一下它們的格式,以便下面使用。scanf和printf這兩個(gè)函數(shù)分別稱(chēng)為格式輸入函數(shù)和格式輸出函數(shù)。其意義是按指定的格式輸入輸出值。因此,這兩個(gè)函數(shù)在括號(hào)中的參數(shù)表都由以下兩部分組成:“格式控制串”,參數(shù)表格式控制串是ー個(gè)字符串,必須用雙引號(hào)括起來(lái),它表示了輸入輸出量的數(shù)據(jù)類(lèi)型。各種類(lèi)型的格式表示法可參閱第三章。在primf函數(shù)中還可以在格式控制串內(nèi)出現(xiàn)非格式控制字符,這時(shí)在顯示屏幕上將原文照印。參數(shù)表中給出了輸入或輸出的量。當(dāng)有多個(gè)量時(shí),用逗號(hào)間隔。例如:printf("sineof%lfis%lf\n",x,s);其中%If為格式字符,表示按雙精度浮點(diǎn)數(shù)處理。它在格式串中兩次現(xiàn),對(duì)應(yīng)了x和s兩個(gè)變量。其余字符為非格式字符則照原樣輸出在屏幕上?!纠?.3]intmax(inta,intb);main()/?函數(shù)說(shuō)明?//?主函數(shù)?/intx,y,z;intmax(inta,intb);/?變量說(shuō)明?//?函數(shù)說(shuō)明?/printf("inputtwonumbers:\n");scanff%d%d”,&x,&y);z=max(x,y);printf(Hmaxmum=%dH,z);)intmax(inta,intb)/?輸入x,y值?//?調(diào)用max函數(shù)?//?輸出?//*定義max函數(shù)?/if(a>b)retuma;elsereturnb;/?把結(jié)果返回主調(diào)函數(shù)?/上面例中程序的功能是由用戶輸入兩個(gè)整數(shù),程序執(zhí)行后輸出其中較大的數(shù)。本程序由兩個(gè)函數(shù)組成,主函數(shù)和max函數(shù)。函數(shù)之間是并列關(guān)系??蓮闹骱瘮?shù)中調(diào)用其它函數(shù)。max函數(shù)的功能是比較兩個(gè)數(shù),然后把較大的數(shù)返回給主函數(shù)。max函數(shù)是一個(gè)用戶自定義函數(shù)。因此在主函數(shù)中要給出說(shuō)明(程序第三行)??梢?jiàn),在程序的說(shuō)明部分中,不僅可以有變量說(shuō)明,還可以有函數(shù)說(shuō)明。關(guān)于函數(shù)的詳細(xì)內(nèi)容將在以后第五章介紹。在程序的每行后用/?和*/括起來(lái)的內(nèi)容為注釋部分,程序不執(zhí)行注釋部分。上例中程序的執(zhí)行過(guò)程是,首先在屏幕上顯示提示串,請(qǐng)用戶輸入兩個(gè)數(shù),回車(chē)后由scanf函數(shù)語(yǔ)句接收這兩個(gè)數(shù)送入變量x,y中,然后調(diào)用maX函數(shù),并把x,y的值傳送給max函數(shù)的參數(shù)a,b。在max函數(shù)中比較a,b的大小,把大者返回給主函數(shù)的變量z,最后在屏幕上輸出z的值。C源程序的結(jié)構(gòu)特點(diǎn).ー個(gè)c語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成。.每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成。.ー個(gè)源程序不論由多少個(gè)文件組成,都有一個(gè)且只能有一個(gè)main函數(shù),即主函數(shù)。.源程序中可以有預(yù)處理命令(include命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。.每ー個(gè)說(shuō)明,每ー個(gè)語(yǔ)句都必須以分號(hào)結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號(hào)“}”之后不能加分號(hào)。.標(biāo)識(shí)符,關(guān)鍵字之間必須至少加一個(gè)空格以示間隔。若已有明顯的間隔符,也可不再加空格來(lái)間隔。書(shū)寫(xiě)程序時(shí)應(yīng)遵循的規(guī)則從書(shū)寫(xiě)清晰,便于閱讀,理解,維護(hù)的角度出發(fā),在書(shū)寫(xiě)程序時(shí)應(yīng)遵循以下規(guī)則:.ー個(gè)說(shuō)明或ー個(gè)語(yǔ)句占一行。.用{}括起來(lái)的部分,通常表示了程序的某ー層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語(yǔ)句的第一個(gè)字母對(duì)齊,并單獨(dú)占一行。.低ー層次的語(yǔ)句或說(shuō)明可比高一層次的語(yǔ)句或說(shuō)明縮進(jìn)若干格后書(shū)寫(xiě)。以便看起來(lái)更加清晰,增加程序的可讀性。在編程時(shí)應(yīng)カ求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。c語(yǔ)言的字符集字符是組成語(yǔ)言的最基本的元素。c語(yǔ)言字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號(hào)。.字母小寫(xiě)字母a?z共26個(gè)大寫(xiě)字母A?Z共26個(gè).數(shù)字〇?9共10個(gè).空白符空格符、制表符、換行符等統(tǒng)稱(chēng)為空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出現(xiàn)時(shí),只起間隔作用,編譯程序?qū)λ鼈兒雎圆挥?jì)。因此在程序中使用空白符與否,對(duì)程序的編譯不發(fā)生影響,但在程序中適當(dāng)?shù)牡胤绞褂每瞻追麑⒃黾映绦虻那逦院涂勺x性。.標(biāo)點(diǎn)和特殊字符C語(yǔ)言詞匯在c語(yǔ)言中使用的詞匯分為六類(lèi):標(biāo)識(shí)符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等。.標(biāo)識(shí)符在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱(chēng)為標(biāo)識(shí)符。除庫(kù)函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C規(guī)定,標(biāo)識(shí)符只能是字母(A?Z,a?z)、數(shù)字(0?9)、下劃線(J組成的字符串,并且其第一個(gè)字符必須是字母或下劃線。以下標(biāo)識(shí)符是合法的:a,x,x3,BOOK1,sum5以下標(biāo)識(shí)符是非法的:3s 以數(shù)字開(kāi)頭s*T 出現(xiàn)非法字符?-3x 以減號(hào)開(kāi)頭bowy-1出現(xiàn)非法字符-(減號(hào))在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn):(1)標(biāo)準(zhǔn)C不限制標(biāo)識(shí)符的長(zhǎng)度,但它受各種版本的C語(yǔ)言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。例如在某版本C中規(guī)定標(biāo)識(shí)符前八位有效,當(dāng)兩個(gè)標(biāo)識(shí)符前八位相同時(shí),則被認(rèn)為是同一個(gè)標(biāo)識(shí)符。(2)在標(biāo)識(shí)符中,大小寫(xiě)是有區(qū)別的。例如BOOK和book是兩個(gè)不同的標(biāo)識(shí)符。(3)標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,作到“顧名思義”。.關(guān)鍵字關(guān)鍵字是由C語(yǔ)言規(guī)定的具有特定意義的字符串,通常也稱(chēng)為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。C語(yǔ)言的關(guān)鍵字分為以下幾類(lèi):(1)類(lèi)型說(shuō)明符用于定義、說(shuō)明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類(lèi)型。如前面例題中用到的int,double等(2)語(yǔ)句定義符用于表示一個(gè)語(yǔ)句的功能。如例1.3中用到的ifelse就是條件語(yǔ)句的語(yǔ)句定義符。(3)預(yù)處理命令字用于表示ー-個(gè)預(yù)處理命令。如前面各例中用到的include。.運(yùn)算符C語(yǔ)言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。.分隔符在C語(yǔ)言中采用的分隔符有逗號(hào)和空格兩種。逗號(hào)主要用在類(lèi)型說(shuō)明和函數(shù)參數(shù)表中,分隔各個(gè)變量??崭穸嘤糜谡Z(yǔ)句各單詞之間,作間隔符。在關(guān)鍵字,標(biāo)識(shí)符之間必須要有一個(gè)以上的空格符作間隔,否則將會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤,例如把inta;寫(xiě)成inta;C編譯器會(huì)把inta當(dāng)成一個(gè)標(biāo)識(shí)符處理,其結(jié)果必然出錯(cuò)。.常量C語(yǔ)言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn)義字符等多種。在后面章節(jié)中將專(zhuān)門(mén)給予介紹。.注釋符c語(yǔ)言的注釋符是以開(kāi)頭并以“ッ”結(jié)尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時(shí),不對(duì)注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來(lái)向用戶提示或解釋程序的意義。在調(diào)試程序中対暫不使用的語(yǔ)句也可用注釋符括起來(lái),使翻譯跳過(guò)不作處理,待調(diào)試結(jié)束后再去掉注釋符。TurboC2.0集成開(kāi)發(fā)環(huán)境的使用TurboC2.0簡(jiǎn)介和啟動(dòng)我們上機(jī)實(shí)習(xí)和將來(lái)考試都是使用BorlandTurboC2.0這個(gè)版本。該系統(tǒng)是DOS操作系統(tǒng)支持下的軟件,在windows98環(huán)境下,可以在DOS窗口下運(yùn)行。我們機(jī)房是在D盤(pán)根目錄下建立一個(gè)TC子目錄下安裝TurboC2.0系統(tǒng)的。TC下還建立了兩個(gè)了目錄LIB和INCLUDE,LIB子目錄中存放庫(kù)文件,INCLUDE子目錄中存放所有頭文件。在DOS環(huán)境下或在windows98的DOS窗口下運(yùn)行運(yùn)行TurboC2.0時(shí),只要在TC子目錄下鍵入TC并回車(chē)即可進(jìn)入TurboC2.0集成開(kāi)發(fā)環(huán)境。在windows98環(huán)境下,也可以選運(yùn)行菜單,然后鍵入d:\tc\tc即可,也可以在tc文件夾找到tc.exe文件,然后用鼠標(biāo)雙擊該文件名也可進(jìn)入TurboC2.0集成開(kāi)發(fā)環(huán)境。TurboC是美國(guó)Borland公司的產(chǎn)品,Borland公司是一家專(zhuān)門(mén)從事軟件開(kāi)發(fā)、研制的大公司。該公司相繼推出了一套Turbo系列軟件,如TurboBASIC,TurboPascal,TurboProlog,這些軟件很受用戶歡迎。該公司在1987年首次推出TurboC1.0產(chǎn)品,其中使用了全然一新的集成開(kāi)發(fā)環(huán)境,即使用了一系列下拉式菜單,將文本編輯、程序編譯、連接以及程序運(yùn)行一體化,大大方便了程序的開(kāi)發(fā)。1988年,Borland公司又推出Turt)oCI.5版本,增加了圖形庫(kù)和文本窗口函數(shù)庫(kù)等,而TurboC2.0則是該公司1989年出版的。TurboC2.0在原來(lái)集成開(kāi)發(fā)環(huán)境的基礎(chǔ)上增加了査錯(cuò)功能,并可以在Tiny模式下直接生成.COM(數(shù)據(jù)、代碼、堆棧處在同一64K內(nèi)存中)文件。還可對(duì)數(shù)學(xué)協(xié)處理器(支持8087/80287/80387等)進(jìn)行仿真。Borland公司后來(lái)又推出了面向?qū)ο蟮某绦蜍浖黅urboC++,它繼承發(fā)展TurboC2.0的集成開(kāi)發(fā)環(huán)境,并包含了面向?qū)ο蟮幕舅枷牒驮O(shè)計(jì)方法。1991年為了適用Microso代公司的Windows3.0版本,Borland公司又將TurboC++作了更新,即TurboC的新一代產(chǎn)品BorlandcC++也已經(jīng)問(wèn)世了。TurboC2.0集成開(kāi)發(fā)環(huán)境進(jìn)入TurboC2.0集成開(kāi)發(fā)環(huán)境中后,屏幕上顯示:
其中頂上一行為T(mén)urboC2.0主菜單,屮間窗口為編輯區(qū),接下來(lái)是信息窗口,最底下一行為參考行。這四個(gè)窗口構(gòu)成了TurboC2.0的主屏幕,以后的編程、編譯、調(diào)試以及運(yùn)行都將在這個(gè)主屏幕中進(jìn)行。主菜單在TurboC2.0主扉幕頂上一行,顯示下列內(nèi)容:FileEditRunCompileProjectOptionsDebugBreak/watch除Edit外,其它各項(xiàng)均有子菜單,只要用Alt加上某項(xiàng)中第一個(gè)字母,就可進(jìn)入該項(xiàng)的子菜單中。File菜單按Alt+F可進(jìn)入File菜單,如圖:File菜單的子菜單共有9項(xiàng),分別敘述如下:1.Load:裝入一個(gè)文件,可用類(lèi)似DOS的通配符(如?.C)來(lái)進(jìn)行列表選擇。也可裝入其它擴(kuò)展名的文件,只要給出文件名(或只給路徑)即可。該項(xiàng)的熱鍵為F3,即只要按F3即可進(jìn)入該項(xiàng),而不需要先進(jìn)入File菜單再選此項(xiàng)。Pick:將最近裝入編輯窗口的8個(gè)文件列成一個(gè)表讓用戶選擇,選擇后將該程序裝入編輯區(qū),并將光標(biāo)置在上次修改過(guò)的地方。其熱健為Alt-F3。New:新建文件,缺省文件名為NONAME.C,存盤(pán)時(shí)可改名。Save:將編輯區(qū)中的文件存盤(pán),若文件名是NONAME.C時(shí),將詢(xún)問(wèn)是否更改文件名,其熱鍵為F2。Writeto:可由用戶給出文件名將編輯區(qū)中的文件存盤(pán),若該文件已存在,則詢(xún)問(wèn)要不要覆蓋。Directory:顯示目錄及目錄中的文件,并可由用戶選擇。Changedir:顯示當(dāng)前默認(rèn)目錄,用戶可以改變默認(rèn)目錄。Osshell:暫時(shí)退出TurboC2.0到DOS提示符下,此時(shí)可以運(yùn)行DOS命令,若想回到TurboC2.0中,只要在DOS狀態(tài)下鍵入EXIT即可。Quit:退出TurboC2.0,返回到DOS操作系統(tǒng)中,其熱鍵為Alt+X。說(shuō)明:以上各項(xiàng)可用光標(biāo)犍移動(dòng)色棒進(jìn)行選擇,回車(chē)則執(zhí)行。也可用每ー項(xiàng)的第一個(gè)大寫(xiě)字母直接選擇。若要退到主菜單或從它的下ー級(jí)菜單列表框退回均可用Esc鍵,TurboC2.0所有菜單均采用這種方法進(jìn)行操作,以下不再說(shuō)明。1.13.4Edit菜單按Alt+E可進(jìn)入編輯菜單,若再回車(chē),則光標(biāo)出現(xiàn)在編輯窗口,此時(shí)用戶可以進(jìn)行文本編輯。編輯方法基本與wordstar相同,可用F1鍵獲得有關(guān)編輯方法的幫助信息。與編輯有關(guān)的功能鍵如下:F1獲得TurboC2.0編輯命令的幫助信息:F5 擴(kuò)大編輯窗口到整個(gè)屏幕;F6 在編輯窗口與信息窗口之間進(jìn)行切換;F10 從編輯窗口轉(zhuǎn)到主菜單。編輯命令簡(jiǎn)介:PageUp向前翻頁(yè)P(yáng)ageDn向后翻頁(yè)Home 將光標(biāo)移到所在行的開(kāi)始End 將光標(biāo)移到所在行的結(jié)尾Ctrl+Y刪除光標(biāo)所在的一行Ctrl+T刪除光標(biāo)所在處的ー個(gè)詞Ctrl+KB設(shè)置塊開(kāi)始Ctrl+KK設(shè)置塊結(jié)尾Ctrl+KV塊移動(dòng)Ctrl+KC塊拷貝Ctrl+KY塊冊(cè)リ除Ctrl+KR讀文件Ctrl+KW存文件Ctrl+KP塊文件打印Ctrl+F!如果光標(biāo)所在處為T(mén)urboC2.0庫(kù)函數(shù),則獲得有關(guān)該函數(shù)的幫助信息Ctrl+Q[查找TurboC2.0雙界符的后匹配符Ctrl+Q]查找TurboC2.0雙界符的前匹配符說(shuō)明:TurboC2.0的雙界符包括以下幾種符號(hào):花括符{和}尖括符〈和〉圓括符(和)方括符[和]注釋符 /?和?/D 雙引號(hào)"g) 單引號(hào)’TurboC2.0在編輯文件時(shí)還有一種功能,就是能夠自動(dòng)縮進(jìn),即光標(biāo)定位和上一個(gè)非空字符對(duì)齊。在編輯窗口中,Ctrl+OL為自動(dòng)縮進(jìn)開(kāi)關(guān)的控制鍵。Run菜單按Alt+R可進(jìn)入Run菜單,該菜單有以下各項(xiàng),如圖所示:Run:運(yùn)行由Project/Projectname項(xiàng)指定的文件名或當(dāng)前編輯區(qū)的文件。如果對(duì)上次編譯后的源代碼未做過(guò)修改,則直接運(yùn)行到下ー個(gè)斷點(diǎn)(沒(méi)有斷點(diǎn)則運(yùn)行到結(jié)束)。否則先進(jìn)行編譯、連接后オ運(yùn)行,其熱鍵為Ctrl+F9?Programreset:中止當(dāng)前的調(diào)試,釋放分給程序的空間,其熱鍵為Ctrl+F2。Gotocursor::調(diào)試程序時(shí)使用,選擇該項(xiàng)可使程序運(yùn)行到光標(biāo)所在行。光標(biāo)所在行必須為一條可執(zhí)行語(yǔ)句,否則提示錯(cuò)誤。其熱鍵為F4oTraceinto:在執(zhí)行ー一條調(diào)用其它用戶定義的子函數(shù)時(shí),若用Traceinto項(xiàng),則執(zhí)行長(zhǎng)條將跟蹤到該子函數(shù)內(nèi)部去執(zhí)行,其熱鍵為F7oStepover:執(zhí)行當(dāng)前函數(shù)的下一條語(yǔ)句,即使用戶函數(shù)調(diào)用,執(zhí)行長(zhǎng)條也不會(huì)跟蹤進(jìn)函數(shù)內(nèi)部,其熱鍵為F8.Userscreen!顯示程序運(yùn)行時(shí)在屏幕上顯示的結(jié)果。其熱鍵為Alt+F5。Compile菜單按Alt+C可進(jìn)入Compile菜單,該菜單有以下幾個(gè)內(nèi)容,如圖所示:CompiletoOBJ:將一個(gè)C源文件編譯生成.OBJ目標(biāo)文件,同時(shí)顯示生成的文件名。其熱鍵為Alt+F9oMakeEXEfile:此命令生成一個(gè).EXE的文件,并顯示生成的.EXE文件名。其中.EXE文件名是下面幾項(xiàng)之ー:由Project/Projectname說(shuō)明的項(xiàng)目文件名。若沒(méi)有項(xiàng)目文件名,則由PrimaryCfile說(shuō)明的源文件。若以上兩項(xiàng)都沒(méi)有文件名,則為當(dāng)前窗口的文件名。LinkEXEfile:把當(dāng)前.OBJ文件及庫(kù)文件連接在ー起生成.EXE文件。Buildall:重新編譯項(xiàng)目里的所有文件,并進(jìn)行裝配生成.EXE文件。該命令不作過(guò)時(shí)檢查(上面的幾條命令要作過(guò)時(shí)檢查,即如果目前項(xiàng)目里源文件的日期和時(shí)間與目標(biāo)文件相同或更早,則拒絕對(duì)源文件進(jìn)行編譯)。PrimaryCfile:當(dāng)在該項(xiàng)中指定了主文件后,在以后的編譯中,如沒(méi)有項(xiàng)目文件名則編譯此項(xiàng)中規(guī)定的主C文件,如果編譯中有錯(cuò)誤,則將此文件調(diào)入編輯窗口,不管目前窗口中是不是主C文件。Getinfo:獲得有關(guān)當(dāng)前路徑、源文件名、源文件字節(jié)大小、編譯中的錯(cuò)誤數(shù)目、可用空間等信息,如圖:
Project菜單按Alt+P可進(jìn)入Project菜單該菜單包括以下內(nèi)容,如圖所示:Projectname:項(xiàng)目名具有.PRJ的擴(kuò)展名,其中包括將要編譯、連接的文件名。例如有ー個(gè)程序由filel.c,file2.c,file3.c組成,要將這3個(gè)文件編譯裝配成一個(gè)file.exe的執(zhí)行文件,可以先建立一個(gè)file.prj的項(xiàng)目文件,其內(nèi)容如下:filel.cfile2.cfile3.c此時(shí)將file.prj放入Projectname項(xiàng)中,以后進(jìn)行編譯時(shí)將自動(dòng)對(duì)項(xiàng)目文件中規(guī)定的三個(gè)源文件分別進(jìn)行編譯。然后連接成file.exe文件。如果其中有些文件已經(jīng)編譯成QBJ文件,而又沒(méi)有修改過(guò),可直接寫(xiě)上.OBJ擴(kuò)展名。此時(shí)將不再編譯而只進(jìn)行連接。例如:filel.objfile2.cfile3.c將不對(duì)filel.c進(jìn)行編譯,而直接連接。說(shuō)明:當(dāng)項(xiàng)目文件中的每個(gè)文件無(wú)擴(kuò)展名時(shí),均按源文件對(duì)待,另外,其中的文件也可以是庫(kù)文件,但必須寫(xiě)上擴(kuò)展名.LIB。Breakmakeon:由用戶選擇是否在有Warining、Errors>FatalErrors時(shí)或Link之前退出Make編譯。Autodependencies:當(dāng)開(kāi)關(guān)置為on,編譯時(shí)將檢查源文件與對(duì)應(yīng)的.OBJ文件日期和時(shí)間,否則不進(jìn)行檢查。Clearproject:清除Project/Projectname中的項(xiàng)目文件名。Removemessages:把錯(cuò)誤信息從信息窗口中清除掉。Options菜單按Alt+O可進(jìn)入Options菜單,該菜單對(duì)初學(xué)者來(lái)說(shuō)要謹(jǐn)慎使用,該菜單有以下幾個(gè)內(nèi)容,如圖所示:1.Compiler:本項(xiàng)選擇又有許多子菜單,可以讓用戶選擇硬件配置、存儲(chǔ)模型、調(diào)試技術(shù)、代碼優(yōu)化、對(duì)話信息控制和宏定義。這些子菜單如圖所示:Model:共有Tiny,small,medium,compact,large,huge六種不同模式可由同戶選擇。Define:打開(kāi)一個(gè)宏定義框,同戶可輸入宏定義。多重定義可同分號(hào),賦值可用等號(hào)。Codegeneration:它又有許多任選項(xiàng),這些任選項(xiàng)告訴編譯器產(chǎn)生什么樣的目標(biāo)代碼。2Callingconvention可選擇C或Pascal方式傳遞參數(shù)。2Instructionset可選擇8088/8086或80186/80286指令系列。Floatingpoint 可選擇仿真浮點(diǎn)、數(shù)學(xué)協(xié)處理器浮點(diǎn)或無(wú)浮點(diǎn)運(yùn)算。2Defaultchartype規(guī)定char的類(lèi)型。2Alignonent 規(guī)定地址對(duì)準(zhǔn)原則。2Mergeduplicatestrings作優(yōu)化用,將重復(fù)的字符串合并在ー起。2Standardstackframe產(chǎn)生一個(gè)標(biāo)準(zhǔn)的棧結(jié)構(gòu)。2Teststackoverflow產(chǎn)生一段程序運(yùn)行時(shí)檢測(cè)堆棧溢出的代碼。2Linenumber 在.OBJ文件中放進(jìn)行號(hào)以供調(diào)試時(shí)用。2OBJdebuginformation在.OBJ文件中產(chǎn)生調(diào)試信息。Optimization:它又有許多任選項(xiàng)。Optimizefor選擇是對(duì)程序小型化還是對(duì)程序速度進(jìn)行優(yōu)化處理。Useregistervariable用來(lái)選擇是否允許使用寄存器變量。Registeroptimization盡可能使用寄存器變量以減少過(guò)多的取數(shù)操作。Jumpoptimization通過(guò)去除多余的跳轉(zhuǎn)和調(diào)整循環(huán)與開(kāi)關(guān)語(yǔ)句的辦法,壓縮代碼。Source:它又有許多任選項(xiàng)。2Indentifierlength說(shuō)明標(biāo)識(shí)符有效字符的個(gè)數(shù),默認(rèn)為32個(gè)。2Nestedcomments是否允許嵌套注釋。2ANSIkeywordsonly是只允許ANSI關(guān)鍵字還是也允許TurboC2.0關(guān)鍵字。6)Error2Errorstopafter多少個(gè)錯(cuò)誤時(shí)停止編譯,默認(rèn)為25個(gè)。2 Warningstopafter多少個(gè)警告錯(cuò)誤時(shí)停止編譯,默認(rèn)為100個(gè)。2 Displaywarning2 Portabilitywarning移植性警告錯(cuò)誤。2 ANSIViolations侵犯了ANS!關(guān)鍵字的警告錯(cuò)誤。
Commonerror常見(jiàn)的警告錯(cuò)誤。2Lesscommonerror少見(jiàn)的警告錯(cuò)誤。7)Names:用于改變段(segment)、組(group)和類(lèi)(class)的名字,默認(rèn)值為CODE,DATA,BSSo2.Linker:本菜單設(shè)置有關(guān)連接的選擇項(xiàng),它有以下內(nèi)容,如圖所示:M叩filemenu選擇是否產(chǎn)生.MAP文件。Initializesegments是否在連接時(shí)初始化沒(méi)有初始化的段。Devaultlibraries是否在連接其它編譯程序產(chǎn)生的冃標(biāo)文件時(shí)去尋找其缺省庫(kù)。Graphicslibrary是否連接graphics庫(kù)中的函數(shù)。Warnduplicatesymbols當(dāng)有重復(fù)符號(hào)時(shí)產(chǎn)生警告信息。Stackwarinig是否讓連接程序產(chǎn)生Nostack的警告信息。Case-sensitivelink是否區(qū)分大、小寫(xiě)字。3.Environment:菜單規(guī)定是否對(duì)某些文件自動(dòng)存盤(pán)及制表鍵和屏幕大小的設(shè)置,它有以下內(nèi)容,如圖所示:
1)Messagetracking:2 Currentfile跟蹤在編輯窗口中的文件錯(cuò)誤。2 Allfiles跟蹤所有文件錯(cuò)誤。2 〇任不跟蹤。Keepmessage:編譯前是否清除Message窗口中的信息。Configautosave:選on時(shí),在Run,Shell或退出集成開(kāi)發(fā)環(huán)境之前,如果TurboC2.0的配置被改過(guò),則所做的改動(dòng)將存入配置文件中。選。行時(shí)不存。Editautosave:是否在Run或Shell之前,自動(dòng)存儲(chǔ)編輯的源文件。Backupfile:是否在源文件存盤(pán)時(shí)產(chǎn)生后備文件(.BAK文件)。Tabsize:設(shè)置制表鍵大小,默認(rèn)為8〇Zoomedwindows:將現(xiàn)行活動(dòng)窗口放大到整個(gè)屏幕,其熱鍵為F5。Screensize設(shè)置屏幕文本大小。Directories:規(guī)定編譯、連接所需文件的路徑,有ド列各項(xiàng),如圖所示:
Includedirectories:包含文件的路徑,多個(gè)子目錄用”;“分開(kāi)。Librarydirectories:庫(kù)文件路徑,多個(gè)子目錄用”;”分開(kāi)。Outputdirectoried:輸出文件(.OBJ,.EXE,.MAP文件)的目錄。TurboCdirectoried:TurboC所在的目錄。Pickfilename:定義加載的pick文件名,如不定義則從currentpickfile中取。Arguments:允許用戶使用命令行參數(shù)。Saveoptions:保存所有選擇的編譯、連接、調(diào)試和項(xiàng)目到配置文件中,缺省的配置文件為T(mén)CCONFIGTCoRetriveoptions裝入ー個(gè)配置文件到TC中,TC將使用該文件的選擇項(xiàng)。1.13.9Debug菜單按Alt+D可選擇Debug菜單,該菜單主要用于查錯(cuò),它包括以下內(nèi)容,如圖所示:
EvaluateExpression要計(jì)算結(jié)果的表達(dá)式。Result顯示表達(dá)式的計(jì)算結(jié)果。Newvalue賦給新值。Callstack:該項(xiàng)不可接觸。而在TurboCdebuger時(shí)用于檢查堆棧情況。Findfunction在運(yùn)行TurboCdebugger時(shí)用于顯示規(guī)定的函數(shù)。Refreshdisplay如果編輯窗口偶然被用戶窗口重寫(xiě)了可用此恢復(fù)編輯窗口的內(nèi)容。1.13.10Break/watch菜單按Alt+B可進(jìn)入Break/watch菜單,該菜單有以下內(nèi)容,如圖所示:Addwatch:向監(jiān)視窗口插入ー監(jiān)視表達(dá)式。Deletewatch:從監(jiān)視窗口中刪除當(dāng)前的監(jiān)視表達(dá)式。Editwatch:在監(jiān)視窗口中編輯ー個(gè)監(jiān)視表達(dá)式。Removeall:watches從監(jiān)視窗口中刪除所有的監(jiān)視表達(dá)式。Togglebreakpoint:對(duì)光標(biāo)所在的行設(shè)置或清除斷點(diǎn)。Clearallbreakpoints:清除所有斷點(diǎn)。Viewnextbreakpoint:將光標(biāo)移動(dòng)到下ー個(gè)斷點(diǎn)處。1.13.11TurboC2.0的配置文件所謂配置文件是包含TurboC2.0有關(guān)信息的文件,其中存有編譯、連接的選擇和路徑等信息??梢杂孟率龇椒ńurboC2.0的配置:建立用戶自命名的配置文件:可以從Options菜單中選擇Options/Saveoptions命令,將當(dāng)前集成開(kāi)發(fā)環(huán)境的所有配置存入ー個(gè)由用戶命名的配置文件中。下次啟動(dòng)TC時(shí)只要在DOS下鍵入:tc/c<用戶命名的配置文件名〉就會(huì)按這個(gè)配置文件中的內(nèi)容作為T(mén)urboC2.0的選擇。若設(shè)置Options/Environment/Configautosave為on,則退出集成開(kāi)發(fā)環(huán)境時(shí),當(dāng)前的設(shè)置會(huì)自動(dòng)存放到TurboC2.0配置文件TCCONFIGTC中。TurboC在啟動(dòng)時(shí)會(huì)自動(dòng)尋找這個(gè)配置文件。用TCINST設(shè)置TurboC的有關(guān)配置,并將結(jié)果存入TC.EXE中。TurboC在啟動(dòng)時(shí),若沒(méi)有找到配置文件,則取TC.EXE中的缺省值。第2章程序的靈魂一算法ー個(gè)程序應(yīng)包括:1 對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類(lèi)型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(datastructure)〇! 對(duì)操作的描述。即操作步驟,也就是算法(algorithm)〇NikiklausWirth提出的公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序教材認(rèn)為:程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語(yǔ)言工具和環(huán)境這4個(gè)方面是ー個(gè)程序涉及人員所應(yīng)具備的知識(shí)。本課程的目的是使同學(xué)知道怎樣編寫(xiě)ー個(gè)C程序,進(jìn)行編寫(xiě)程序的初步訓(xùn)練,因此,只介紹算法的初步知識(shí)。算法的概念做任何事情都有一定的步驟。為解決ー個(gè)問(wèn)題而采取的方法和步驟,就稱(chēng)為算法。! 計(jì)算機(jī)算法:計(jì)算機(jī)能夠執(zhí)行的算法。! 計(jì)算機(jī)算法可分為兩大類(lèi):n數(shù)值運(yùn)算算法:求解數(shù)值;n 非數(shù)值運(yùn)算算法:事務(wù)管理領(lǐng)域。簡(jiǎn)單算法舉例【例2.1]求!X2X3X4X5,最原始方法:步驟1:先求1X2,得到結(jié)果2。步驟2:將步驟1得到的乘積2乘以3,得到結(jié)果6。步驟3:將6再乘以4,得24。步驟4:將24再乘以5,得120。這樣的算法雖然正確,但太繁。改進(jìn)的算法:S1:使t=lS2:使i=2S3:使txi,乘積仍然放在在變量t中,可表示為txi-tS4:使i的值+1,即i+lfS5:如果iW5,返回重新執(zhí)行步驟S3以及其后的S4和S5:否則,算法結(jié)束。如果計(jì)算100!只需將S5:若iW5改成iWlOO即可。如果該求1X3X5X7X9X11,算法也只需做很少的改動(dòng):l-*t3-itxi-ti+2ftS5:若iWH,返回S3,否則,結(jié)束。該算法不僅正確,而且是計(jì)算機(jī)較好的算法,因?yàn)橛?jì)算機(jī)是高速運(yùn)算的自動(dòng)機(jī)器,實(shí)現(xiàn)循環(huán)輕而易舉。思考:若將S5寫(xiě)成:S5:若iVll,返回S3;否則,結(jié)束?!纠?.2】有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者打印出來(lái)。如果,n表示學(xué)生學(xué)號(hào),ni表示第個(gè)學(xué)生學(xué)號(hào);g表示學(xué)生成績(jī),gi表示第個(gè)學(xué)生成績(jī);則算法可表示如下:SI:1-iS2:如果gi果80,則打印ni和gi,否則不打印S3:i+LiS4:若iく50,返回S2,否則,結(jié)束?!纠?.3】判定2000—2500年中的每一年是否閏年,將結(jié)果輸出。潤(rùn)年的條件:能被4整除,但不能被100整除的年份;能被100整除,又能被400整除的年份;設(shè)y為被檢測(cè)的年份,則算法可表示如下:2000fyS2:若y不能被4整除,則輸出y“不是閏年”,然后轉(zhuǎn)到S6S3:若y能被4整除,不能被100整除,則輸出y“是閏年”,然后轉(zhuǎn)到S6S4:若y能被100整除,又能被400整除,輸出y“是閏年”否則輸出y“不是閏年”,然后轉(zhuǎn)到S6S5:輸出y“不是閏年”。S6:y+-yS7:當(dāng)yW2500時(shí),返回S2繼續(xù)執(zhí)行,否則,結(jié)束。算法可表示如下:Sl:sigh=lsum=ldeno=2sigh=(-l)xsighterm=sighx(l/deno)term=sum+termdeno=deno+1S8:若denoWlOO,返回S4:否則,結(jié)束?!纠?.5】對(duì)ー個(gè)大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。算法可表示如下:S1:輸入n的值S2:i=2S3:n被i除,得余數(shù)rS4:如果r=0,表示n能被1整除,則打印n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+—iS6:如果iWn-1,返回S3:否則打印n“是素?cái)?shù)”;然后算法結(jié)束。改進(jìn):S6:如果iく冊(cè),返回S3;否則打印n“是素?cái)?shù)”;然后算法結(jié)束。
2.3算法的特性2.3算法的特性1有窮性:一個(gè)算法應(yīng)包含有限的操作步驟而不能是無(wú)限的。1確定性:算法中每ー個(gè)步驟應(yīng)當(dāng)是確定的,而不能應(yīng)當(dāng)是含糊的、模棱兩可的。1 有零個(gè)或多個(gè)輸入。! 有一個(gè)或多個(gè)輸出。! 有效性:算法中每ー個(gè)步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。對(duì)于程序設(shè)計(jì)人員,必須會(huì)設(shè)計(jì)算法,并根據(jù)算法寫(xiě)出程序。2.4 怎樣表示ー個(gè)算法用自然語(yǔ)言表示算法除了很簡(jiǎn)單的問(wèn)題,一般不用自然語(yǔ)言表示算法。用流程圖表示算法流程圖表示算法,直觀形象,易于理解。( ) 超框/ 7 輸入輸出框【例2.6]將例2.1求5!的算用流程圖表示?!纠?.7I將例2.2的算用流程圖表示?!纠?.8]將例2.3判定閏年的算用流程圖表示。
【例2.9】將例【例2.9】將例2.4求234"+99100的算用流程圖表示。ー個(gè)流程圖包括:表示相應(yīng)操作的框;帶箭頭的流程線;框內(nèi)外必要的文字說(shuō)明。
2.4.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖1.順序結(jié)構(gòu):2. 選擇結(jié)構(gòu):循環(huán)結(jié)構(gòu)3.
2. 選擇結(jié)構(gòu):循環(huán)結(jié)構(gòu)3.三種基本結(jié)構(gòu)的共同特點(diǎn):1 只有一個(gè)入口;1 只有一個(gè)出口:1 結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到;!結(jié)構(gòu)內(nèi)不存在“死循環(huán)二用N-S流程圖表示算法1973年美國(guó)學(xué)者提出了一種新型流程圖:N-S流程圖。順序結(jié)構(gòu):
當(dāng)P1成立A用偽代碼表示算法當(dāng)Pl成立A直到Pl當(dāng)Pl成立A直到Pl成立直到Pl成立用計(jì)算機(jī)語(yǔ)言表示算法! 我們的任務(wù)是用計(jì)算機(jī)解題,就是用計(jì)算機(jī)實(shí)現(xiàn)算法;1 用計(jì)算機(jī)語(yǔ)言表示算法必須嚴(yán)格遵循所用語(yǔ)言的語(yǔ)法規(guī)則?!纠?.20]求!X2X3X4X5用C語(yǔ)言表示。main(){inti,t;t=l;i=2;while(i<=5){t=t*i;i=i+l;}printfT%d”,t);}【例2.21】求級(jí)數(shù)的值。main()intsigh=1;floatdeno=2.0,sum=l.0,term;while(deno<=100){sigh=-sigh;term=sigh/deno;sum=sum+term;deno=deno+l;)printf("%f',sum);2.5 結(jié)構(gòu)化程序設(shè)計(jì)方法1自頂向下;1 逐步細(xì)化;1 模塊化設(shè)計(jì);1 結(jié)構(gòu)化編碼。第3章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.1 C語(yǔ)言的數(shù)據(jù)類(lèi)型在第一章中,我們已經(jīng)看到程序中使用的各種變量都應(yīng)預(yù)先加以定義,即先定義,后使用。對(duì)變量的定義可以包括三個(gè)方面:?數(shù)據(jù)類(lèi)型?存儲(chǔ)類(lèi)型?作用域在本章中,我們只介紹數(shù)據(jù)類(lèi)型的說(shuō)明。其它說(shuō)明在以后各章中陸續(xù)介紹。所謂數(shù)據(jù)類(lèi)型是按被定義變量的性質(zhì),表示形式,占據(jù)存儲(chǔ)空間的多少,構(gòu)造特點(diǎn)來(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ù)ザノ;類(lèi)型一基本類(lèi)型整型字符型安型(浮點(diǎn)型)—単精度型—雙精度型 型—構(gòu)造類(lèi)型—數(shù)組類(lèi)型一結(jié)構(gòu)體類(lèi)型—共用體類(lèi)型一指針類(lèi)型—空光型基本數(shù)據(jù)類(lèi)型:基本數(shù)據(jù)類(lèi)型最主要的特點(diǎn)是,其值不可以再分解為其它類(lèi)型。也就是說(shuō),基本數(shù)據(jù)類(lèi)型是自我說(shuō)明的。構(gòu)造數(shù)據(jù)類(lèi)型:構(gòu)造數(shù)據(jù)類(lèi)型是根據(jù)已定義的ー個(gè)或多個(gè)數(shù)據(jù)類(lèi)型用構(gòu)造的方法來(lái)定義的。也就是說(shuō),ー個(gè)構(gòu)造類(lèi)型的值可以分解成若干個(gè)“成員”或“元素”。每個(gè)“成員”都是ー個(gè)基本數(shù)據(jù)類(lèi)型或又是ー個(gè)構(gòu)造類(lèi)型。在C語(yǔ)言中,構(gòu)造類(lèi)型有以下幾種:數(shù)組類(lèi)型結(jié)構(gòu)體類(lèi)型共用體(聯(lián)合)類(lèi)型指針類(lèi)型:指針是?種特殊的,同時(shí)又是具有重要作用的數(shù)據(jù)類(lèi)型。其值用來(lái)表示某個(gè)變量在內(nèi)存儲(chǔ)器中的地址。雖然指針變量的取值類(lèi)似于整型量,但這是兩個(gè)類(lèi)型完全不同的量,因此不能混為ー談??疹?lèi)型:在調(diào)用函數(shù)值時(shí),通常應(yīng)向調(diào)用者返回一個(gè)函數(shù)值。這個(gè)返回的函數(shù)值是具有一定的數(shù)據(jù)類(lèi)型的,應(yīng)在函數(shù)定義及函數(shù)說(shuō)明中給以說(shuō)明,例如在例題中給出的max函數(shù)定義中,函數(shù)頭為:intmax(inta,intb);其中“int”類(lèi)型說(shuō)明符即表示該函數(shù)的返冋值為整型量。又如在例題中,使用了庫(kù)函數(shù)sin,由于系統(tǒng)規(guī)定其函數(shù)返回值為雙精度浮點(diǎn)型,因此在賦值語(yǔ)句s=sin(x);中,s也必須是雙精度浮點(diǎn)型,以便與sin函數(shù)的返回值一致。所以在說(shuō)明部分,把s說(shuō)明為雙精度浮點(diǎn)型。但是,也有一類(lèi)函數(shù),調(diào)用后并不需要向調(diào)用者返回函數(shù)值,這種函數(shù)可以定義為“空類(lèi)型”。其類(lèi)型說(shuō)明符為void。在后面函數(shù)中還要詳細(xì)介紹。在本章中,我們先介紹基本數(shù)據(jù)類(lèi)型中的整型、浮點(diǎn)型和字符型。其余類(lèi)型在以后各章中陸續(xù)介紹。3.2常量與變量對(duì)于基本數(shù)據(jù)類(lèi)型量,按其取值是否可改變又分為常量和變量?jī)煞N。在程序執(zhí)行過(guò)程中,其值不發(fā)生改變的量稱(chēng)為常量,其值可變的量稱(chēng)為變量。它們可與數(shù)據(jù)類(lèi)型結(jié)合起來(lái)分類(lèi)。例如,可分為整型常量、整型變量、浮點(diǎn)常量、浮點(diǎn)變量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量是可以不經(jīng)說(shuō)明而直接引用的,而變量則必須先定義后使用。整型量包括整型常量、整型變量。常量和符號(hào)常量在程序執(zhí)行過(guò)程中,其值不發(fā)生改變的量稱(chēng)為常量。! 直接常量(字面常量):n 整型常量:12、〇、-3;n 實(shí)型常量:4.6、ー1.23;n 字符常量:'a‘、‘b'。1標(biāo)識(shí)符:用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類(lèi)型名、文件名的有效字符序列。1 符號(hào)常量:用標(biāo)示符代表ー個(gè)常量。在C語(yǔ)言中,可以用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常量,稱(chēng)之為符號(hào)常量。符號(hào)常量在使用之前必須先定義,其一般形式為:#define標(biāo)識(shí)符常量其中#define也是?條預(yù)處理命令(預(yù)處理命令都以"#"開(kāi)頭),稱(chēng)為宏定義命令(在后面預(yù)處理程序中將進(jìn)ー步介紹),其功能是把該標(biāo)識(shí)符定義為其后的常量值。ー經(jīng)定義,以后在程序中所有出現(xiàn)該標(biāo)識(shí)符的地方均代之以該常量值。
1 習(xí)慣上符號(hào)常量的標(biāo)識(shí)符用大寫(xiě)字母,變量標(biāo)識(shí)符用小寫(xiě)字母,以示區(qū)別?!纠?.1】符號(hào)常量的使用。#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d”,total);}n 用標(biāo)識(shí)符代表ー個(gè)常量,稱(chēng)為符號(hào)常量。n 符號(hào)常量與變量不同,它的值在其作用域內(nèi)不能改變,也不能再被賦值。n 使用符號(hào)常量的好處是:0 含義清楚:0 能做到“一改全改”。3.2.2變量其值可以改變的量稱(chēng)為變量。?個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。變量定義必須放在變量使用之前。一般放在函數(shù)體的開(kāi)頭部分。要區(qū)分變量名和變量值是兩個(gè)不同的概念。變量名變量值存儲(chǔ)單元3.3 整型數(shù)據(jù)整型常量的表示方法整型常量就是整常數(shù)。在c語(yǔ)言中,使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制三種。十進(jìn)制整常數(shù):十進(jìn)制整常數(shù)沒(méi)有前綴。其數(shù)碼為〇?9。以下各數(shù)是合法的十進(jìn)制整常數(shù):237、-568、65535、1627;以下各數(shù)不是合法的十進(jìn)制整常數(shù):023(不能有前導(dǎo)〇)、23D(含有非十進(jìn)制數(shù)碼)。在程序中是根據(jù)前綴來(lái)區(qū)分各種進(jìn)制數(shù)的。因此在書(shū)寫(xiě)常數(shù)時(shí)不要把前綴弄錯(cuò)造成結(jié)果不正確。ハ進(jìn)制整常數(shù):ハ進(jìn)制整常數(shù)必須以〇開(kāi)頭,即以〇作為ハ進(jìn)制數(shù)的前綴。數(shù)碼取值為0?7。ハ進(jìn)制數(shù)通常是無(wú)符號(hào)數(shù)。以下各數(shù)是合法的ハ進(jìn)制數(shù):015(十進(jìn)制為13)、0101(十進(jìn)制為65)、0177777(十進(jìn)制為65535);以下各數(shù)不是合法的ハ進(jìn)制數(shù):256(無(wú)前綴〇)、03A2(包含了非ハ進(jìn)制數(shù)碼)、ー0127(出現(xiàn)了負(fù)號(hào))。十六進(jìn)制整常數(shù):十六進(jìn)制整常數(shù)的前綴為0X或Ox。其數(shù)碼取值為0-9,A?F或a~f?以下各數(shù)是合法的十六進(jìn)制整常數(shù):0X2A(卜進(jìn)制為42)、OXAO(卜進(jìn)制為160)、OXFFFF(卜進(jìn)制為65535):以下各數(shù)不是合法的十六進(jìn)制整常數(shù):5A(無(wú)前綴OX)、0X3H(含有非十六進(jìn)制數(shù)碼)。整型常數(shù)的后綴:在16位字長(zhǎng)的機(jī)器上,基本整型的長(zhǎng)度也為16位,因此表示的數(shù)的范圍也是有限定的。十進(jìn)制無(wú)符號(hào)整常數(shù)的范圍為。?65535,有符號(hào)數(shù)為ー32768?+32767。ハ進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為〇?0177777。十六進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為0X〇?OXFFFF或Ox〇?OxFFFF。如果使用的數(shù)超過(guò)了上述范圍,就必須用長(zhǎng)整型數(shù)來(lái)表示。長(zhǎng)整型數(shù)是用后綴“L”或“ド來(lái)表示的。例如:十進(jìn)制長(zhǎng)整常數(shù):158L(十進(jìn)制為158)、358000L(十進(jìn)制為35800〇);ハ進(jìn)制長(zhǎng)整常數(shù):012L(十進(jìn)制為10)、077L(十進(jìn)制為63)、0200000L(十進(jìn)制為65536):十六進(jìn)制長(zhǎng)整常數(shù):0X15L(十進(jìn)制為21)、0XA5L(十進(jìn)制為165)、0X10000L(十進(jìn)制為65536)。長(zhǎng)整數(shù)158L和基本整常數(shù)158在數(shù)值上并無(wú)區(qū)別。但對(duì)158L,因?yàn)槭情L(zhǎng)整型量,C編譯系統(tǒng)將為它分配4個(gè)字節(jié)存儲(chǔ)空間。而對(duì)158,因?yàn)槭腔菊?只分配2個(gè)字節(jié)的存儲(chǔ)空間。因此在運(yùn)算和輸出格式上要予以注意,避免出錯(cuò)。無(wú)符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無(wú)符號(hào)數(shù)的后綴為“U”或"u”。例如:358u,0x38Au,235Lu均為無(wú)符號(hào)數(shù)。前綴,后綴可同時(shí)使用以表示各種類(lèi)型的數(shù)。如0XA5Lu表示十六進(jìn)制無(wú)符號(hào)長(zhǎng)整數(shù)A5,其十進(jìn)制為165。3.3.2整型變量1, 整型數(shù)據(jù)在內(nèi)存中的存放形式如果定義了一個(gè)整型變量i:inti;i=10;i100000000000001010
數(shù)值是以補(bǔ)碼表示的:n 正數(shù)的補(bǔ)碼和原碼相同;n 負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對(duì)值的二進(jìn)制形式按位取反再加1〇例如:求-10的補(bǔ)碼:整型變量的分類(lèi)基本型:類(lèi)型說(shuō)明符為int,在內(nèi)存中占2個(gè)字節(jié)。短整量:類(lèi)型說(shuō)明符為shortint或short。所占字節(jié)和取值范圍均與基本型相同。長(zhǎng)整型:類(lèi)型說(shuō)明符為longint或long,在內(nèi)存中占4個(gè)字節(jié)。無(wú)符號(hào)型:類(lèi)型說(shuō)明符為unsigned。無(wú)符號(hào)型又可與上述三種類(lèi)型匹配而構(gòu)成:n 無(wú)符號(hào)基本型:類(lèi)型說(shuō)明符為unsignedint或unsigned0n 無(wú)符號(hào)短整型:類(lèi)型說(shuō)明符為unsig
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年船舶租賃合同:詳細(xì)列出租賃船舶的租金調(diào)整機(jī)制、續(xù)租條件等
- 2025年度體育賽事贊助與營(yíng)銷(xiāo)合同3篇
- 葉酸強(qiáng)化食品的臨床應(yīng)用研究-洞察分析
- 2024年資本注入合同模板3篇
- 2024年項(xiàng)目工程分包合同2篇
- 2024年酒店大堂花卉擺設(shè)租賃合同
- 隱私保護(hù)隱私審計(jì)-洞察分析
- 2024年蜜蜂養(yǎng)殖技術(shù)轉(zhuǎn)讓合同
- 宇宙大尺度結(jié)構(gòu)形成-第1篇-洞察分析
- 藝術(shù)價(jià)值評(píng)估體系構(gòu)建-洞察分析
- 中學(xué)課堂教學(xué)評(píng)價(jià)量表
- 食堂食材配送以及售后服務(wù)方案
- 稱(chēng)量與天平培訓(xùn)試題及答案
- 塊單項(xiàng)活動(dòng)教學(xué)材料教案丹霞地貌
- 超全的超濾與納濾概述、基本理論和應(yīng)用
- 青年人應(yīng)該如何樹(shù)立正確的人生觀
- 開(kāi)封辦公樓頂發(fā)光字制作預(yù)算單
- 安全生產(chǎn)標(biāo)準(zhǔn)化管理工作流程圖
- 德龍自卸車(chē)合格證掃描件(原圖)
- 藥店-醫(yī)療器械組織機(jī)構(gòu)和部門(mén)設(shè)置說(shuō)明-醫(yī)療器械經(jīng)營(yíng)組織機(jī)構(gòu)圖--醫(yī)療器械組織機(jī)構(gòu)圖
- 自薦書(shū)(彩色封面)
評(píng)論
0/150
提交評(píng)論