程式語言(C++).pdf

上传人:奔*** 文档编号:88097313 上传时间:2023-04-22 格式:PDF 页数:52 大小:5.52MB
返回 下载 相关 举报
程式語言(C++).pdf_第1页
第1页 / 共52页
程式語言(C++).pdf_第2页
第2页 / 共52页
点击查看更多>>
资源描述

《程式語言(C++).pdf》由会员分享,可在线阅读,更多相关《程式語言(C++).pdf(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第一 章 程 式 言 曾 介 是 一 部 檄 器,只要给予正硅指令,就曾按照指令的指示轨行工作,然 彳 及符结果加以输出,助人优冏题解决她提昇效率。适些指令的 合即是所需的程式 言(Programming Language),故程式 言是使用者舆雷:月匐之通的槁楔,而程式就是透谩程式 言的撰嘉舆轨行来逢到使用者的工作需求。程式Ig言可根撼程式的可 性、撰瘾辘易度等分悬黑彳固陷JS:1.檄 器 言:由。舆1成 的 言,可 直 接 孰 行,轨行速度快,但檄器 言和硬i t架横有I I,每一台重躺的械碣不同,所以不同重月窗的檄器 言也各有所不同。例 如:爰金塔重月囱典IBM彳 固 人 重 月 图,雨

2、者的檄器 言是不相容的。故檄器 言 可 摘 性 不 高,且不易了解、不易撰嘉、除 及 雉 圈 低 言。2.合 言:由於檄器 言不易擘曾,因此改良成另一槿以曾军而有意羲的英文字或英文缩瘾,来代替0典 1 所 合 的 指 令,以封鹰特定檄械碣的 言,耦 之 悬 合 言 。低 言。而 道 些 特 定 的 英 文 指 令 需 透 器(Assembler)翻 群 成 檄 器 言,雷:月街才能孰行。3.高 言:悬了方便撰嘉舆 雉 ,必须使用舆人 日常生活敕相近的 言,是H 高 隋 言 。同檄地需要 由编t i器(Compiler)或直群器(Interpreter)翻l i成檄器 言才能孰行。直t i器是符

3、程式碣逐行翻11成 檄 器 言,每翻11 一行指令言就立刻交由重月篇孰行,例 如:早期的BASIC 言、HTML 言及一些Script Languageo编群器即是符程式碣全部翻群成檄器言彳及才交由雷躺孰行,例 如:Visual Basic.C+等。轨 行 速 度 上 ,编 群 式 言 的 速 度 较 快,加可一次找出程式中15法不合的地方。C+)高P皆 言,和C 言 同 檬 源 自 於 同 雨 室,由Bjarne Stroustrup以C悬基本架横,再加上物件蹲向的翻念,形成最初的C+言。故所有C程式只要微幅修改均可正硅轨行,在编群器上是可以符副槽案.c更改悬.cpp,即可编葬成C+程式。C

4、+悬 所 的 物 件 蹲 向 程 式(Object Oriented Programming),程式iStte币符焦 黠 放 像 按 下 拉 逗 罩、功能表等的物件上,如此只需暂殳定每他物件赞生特定事件畴所斶凌轨行的特定工作(如按下按 就 始ft算 平均),或不需要像以前一檬烷重整他程式的轨行流程,大 幅 降 低 程 式 的B寺程典禊雄度。所需的物件醇向程式言具借了三彳固特性:1.封 装 性:符物件的腐性、操作方法、以及物件可能斶彝的事件程序等程式碣包装在一起,富 程 式 如 要 使 用 此 物 件 畴,只需思考在遇到特定事件畴要孰行什麽工作,不须重始言殳言十。例如iSttBe需 用 到 息

5、视 窗,搭轴、朗祝,窗按等皆不需彳住m s th2.畿 承 性:指 一 利 可 承 襄 原 有 别 中 部 份 或 所 有 的 特 性。例 如 戟 醴 除了主视窗可能遢包含其它子视窗、息 视,窗 等,但不何槿视窗都曾畿承祝窗的共同腐性(如襟I I列、搭轴)舆勤作(如I I朗、缩小等)。3.多 型 性:具 有 畿 承H保 的 不 同 利 物 件,可以呼叫名耦相同的成员函数,或羟生不同的反鹰结果。一、C+程式解析由以下程式碣可以了解C+言可分成前置J1理1、名 耦 空 主 程 式Main。、及程式叙述式等部分。所有的程式都包括造四他部分,富然程式IS It者在撰嘉B寺通常曾加入一些自定的函数,以在

6、必要畤呼叫使用。#include 11 c m T I I I rssr#include using namespace std;“名耦空int main()f 主程式(coutHello My First C+Program,endl;列印字串system(pasue);return 0;()前置虑理nC+的 前 置 虑 理 国 大 都 以#虢,是圈於在 始编葬槽案之前曾做的勤 作,或不算是C+的正式指令,故其彳及不需加上;做悬结束。由於C+内 建 言 午 多 襟 举 函 数 供 者 使 用,道 些 函 数 被 分 咒 别 放 至,include指令就是在C+编t?谩 程 中,把需用到的函数

7、载入迤来。例如C+的输入(cin獭 出(cout)函数都定羲在iostream,因此在使用道些函数R寺就得先符iostream载入。以下是常见的 明包含数擘i l算函敷包含襟型输出入函数包含字串JS理函数包含槽案输出入的虞理函数包含襟型输出入函数(二)名耦空早 期 的C/C+版本是符所有的 别字名耦(包含燮数、函 数 和 别 等)全定羲成全域性的名耦空,很容易造成名耦衡突,因此襟津C+新增了名 耦 空 的 概 念(N amespace),用来1别各槿定羲名耦,使得不同名耦空 的 燮 数、函 数 等,即使挑有相同的名耦也不曾樊生衡突。由於C+新 型 黑 手 都 定 羲 於std名 耦 空 ,在撰

8、瘾程式碣畤,黑手都要加上此程式碣rusing namespace std;jo另一槿方式是在每彳固函数前都必须要加上rstd::j0(三)main函数任 何C/C+程 式 在 始 轨 行 之 前,一定曾先孰行main()函 数,不管它是放在程式中的哪彳固位置,编t i器都曾找到它才 始编11程式内容。因此main。又耦悬主函数,且不能嘉成Main。或MAIN。等其它大小嘉型式。函数本身可能曾回停各槿资料型熊的值,在宣告函数日寺曾在函数名耦前加上停回值资料熊,若函数不回僖值,即悬资料型熊悬void,程式碣可嘉成 int main(void)o(四)程式叙述式程式叙述式意即程式言殳1+者输入的指令

9、程式礁,只要不遑反IS法 规 格,视彳固人的撰嘉曾惯,可以自由安排程式碣的位置,但每一行指令最接都必须有;虢表示结束。二、C+的输入输出功能C+的基本输出入功能典C相比曾化了官午多,C的基本输出入功能是以函数形式迤行,必须配合 定资料型 熊,作不同型式输出。然 而C+符输出入作了全 新 的 整,直接利用I/O 11算子作输出入,不需搭配资料格式,全榷由系统来判 断,只要引用v io s tre a m 即可。cout输出函数搭配rj串接输出i l算 子,表示符所指定的建数资料或字串 移 至 输 出;而cin输入函数搭配 串接输入i l算 子,作用是由输入借19取资料她指定给特定建数。富使用co

10、ut指令输出畤,可使用下表的特殊字元富作输出控制。第二章基本资料型熊字元格式 明n操行a羟生喔磬t移至下一他定位黠插入矍引虢C+或是任何其它程式 言,最基本的资料虑理卦象,就是燮数舆常数,W者都必须先宣告一彳固封鹰的资料型熊,以决定分配到的得己惊醴大小及可 存的K o使用者或是程式1殳its机将要虞理的资料指定给建数典常数彳矍,藉由不同的i i算元典i i算子交互使用,以逵到资料虑理舆冏题解决的目的。一、常数(constant)常数是指在程式孰行谩程中,只要一 宣告她且指定初值彳度,就辗法更改数值的内容,例如在it算圜面稹B寺,就可以把10半 及IS遇率 成常数。宣告方式可用const和 前

11、置 理1中的#define指令来宣告自FT常数,宣 告 法 靶 例 如 下。但不 用哪一槿方式宣告,直到程式结束彳爰都不可改燮其初始值。需注意的是,用define方式宣式,其彳度不用加上=典 ;符虢。const double Pl=3.14159;#define PI 3.14159/#define指令宣告,不用加上;虢二、燮数(variable)所 需 的 燮 数 是 指 可 用 来 存 资 料 内 容 的 惊 醴 空,常程式需要使用某彳固建数 畴,就可透遇燮数名耦符资料由 醴中取出或嘉入。燮数不像常数一 宣告初始值彳度就辗法改建,燮数可在程式轨行的谩程中,随程式需要改建内容值。不管是常数、

12、建 数 或 是 障 列 都 宣 告 才 能 使 用,燮数宣告的主要功用是要 编群器在得己惊i t上安排一彳固锯存位置,作悬存放所宣告建数的地方。由於C+是 匾 於 存 配 置,也就是在编t i畤才来虞理燮数锯存配置的冏题,因此C+中的建数都必须先 宣告彳爰才能使用,否 即 曾 出 现 哥I息。另外要注意的是C+中建数的名耦必须由 英文字母、数字或 下 底 _ 所 合而成的字,且 字 的 需 以 英 文 字 母 或 下 底 燮 数 名 耦 也 必 须II分大小瘾,例如student舆STUDEN T曾被视,悬雨他不同的燮数。此 外C+已定羲谩具有特定功能的H 筵 字,如 short、for、th

13、is等不可常作燮数名耦。三、资料型熊由 於 C+是 於 一 槿 强 制 型 熊 的 言,富燮数宣告畤,一定要同日寺指定资料的型熊。C+的基本资料型熊可分悬四 ,所估用的空 舆可表示的数值靶凰均不同。(一)整数资料型熊整 数 资 料 型 熊 用 来 存 整 数 资 料 惊 醴 曾 保 留 4 彳固位元(32位元)的 空 来 存整数燮数的内容,需使用I I 维 字 int来宣告。另外整数资料型熊也挑有敕 多 修 司,以下悬资料的型熊舆所能表示的靶凰。若 型 整 数 的 数 值 超 出 了可以表示的靶圉,耦之悬溢位(overflow)。(二)浮黠数资料资料型熊宣告资料是度最小值最大值short in

14、t2位 元-3276832767unsigned short int2位 元 065535int4位 元-21474836482147483647long int4位 元-21474836482147483647浮黠数(floating point)指的就是带有小数黠的数值,在迤行官午多科擘的精密i l算口寺,整 数 所 能 表 现 的 靶 度 然 不 足,即可使用浮黠数资料型熊。至於浮黠数的表示方法有雨槿,一槿是小数黠,另一槿是科阜言己虢,例 如6e-2代 表0.06,其 中e或E代 表10悬底数的科擘表示法。而浮黠数资料型熊所能表示的靶圉可I I分悬以下三槿。资料型熊宣告资料是度表示 圉f

15、loat4位 元 1.17E-38 3.4E+38(精津至小数黠彳爰7位)double8位 元 2.25E-3081.79E+308(精型至小数黠彳及15位)long double1 2位元1.2E+/-4932(精型至小数黠彳娄19位)(三)字元资料型熊字元(Character)包括字母、数字、襟 黠 符 虢 及 控 制 符 虢,也就是ASCII碣中所列的符虢。每彳固字元在言己魔醴中估1位元(8位元)的资料是度,亦即在。255之 ,封 照ASCII碣,65代 表 字 元 A,48代表字元r0 jo除了一般字元外,逮有一些特殊字元是瓢法用筵然输入或 示於蜜幕上,道日寺必须在字元前面加上一彳固

16、符 虢,来通知编葬器符彳爰面的字元富成一彳固特殊字元,形成所 需 的 跳脱字元,或迤行特殊的控制功能。例如之前提到的r n j可以有操行功能;a的警告字元可以凌喔的警告音等。(四)布林资料型熊布林(Boolean)是一槿表示诞率茸的资料型熊,它只有雨槿值:ture(真)典偏(假),分 别 用 1典 0代表。以上资料型熊若程式需要符彼此 互相作算,曾造成资料型熊的不一致,道 畴C+曾提供资料型熊醇换的功能,可 分 悬 自勤醇换型熊典 强制傅换型熊。自勤醇换型熊是由编11器 来 判 傅 换 成 何 槿 资 料 型 熊,依照数值S EIS大的悬僵先傅换封象。常然也可以由程式言殳 者强制傅换资料型熊,

17、例如以下靶列。但 需 注 意 =虢左遏不能迤行强制资料醇换,包含醇换型熊名耦的小括虢,不 能 省 略。int a,b,avg;avg=(float)(a+b)/2;符a+b的值傅换悬浮黠敷资料型熊第三章基本流程控制凡腐於结情化程式言殳言十,必定包含以下三槿流程控制:循序结糠 H择结情、重禊结横,意即挑有结情化程式言殳言十特色的程式,不管其功能如何禊雄,皆可利用道三槿基本流程控制来加以 合、表逢舆竦述。而结情化程式言殳言十的便黠悬程式1殳1+由上而下撰嘉,眉次分明,易於了解,每一n现悬褐立功能,可降低程式的禊雄性及困辘度。一、循序结情循序结横的程式,是以程式第一行指令悬迤入黠,依序由上往下轨行到

18、程式的最彳爰一行指令。指令是C+中最基本的轨行军位,每一行指令都必须加上;虢,表 示 指 令 的 结 束,多行指令亦可用大括虢包起来,形成程式n现。不管指令或是程式n境都遵循由上而下的I#取方式。二、逗择结情H择结横是依程式的脩件控制作判断,再根撼判断的结果决定要孰行哪一段程式碣。就好比我凭在生活中曾去判断明天是否要带雨率,根撼天氟颈辍的结果,如果曾下雨就带雨率,相反即否。根摞脩件的成立舆否,来决定愿轨行哪一段程式碣,耦之悬逗择结横,在程式Ig言 中,有if、if-else、if else if以及switch等控制指令。(一)if叙述句if是最曾罩的一槿脩件判断指令式,可先判断脩件是否成立,

19、再依结果5夬定所要轨行的勤作(程式礁),意思可想成:如果就&甄 例 法 如 下,若所要孰行的指令只有一他,可以把大括虢 省略。if(score60)cout你必须祷考v end/;()ifelseif else指令提供二槿不同的逗择,富if判断式成立畤就轨行国现内的指令,如果不成立,即孰行else展现内的指令。靶 例 法 如Toif(score60)coutw你必须祷考vendl;e!secout90)coutv成 僵 等wendl;else if(score=90&score=80)coutw成 甲 等wendl;else if(score=80&score=70)coutv成 乙 等vve

20、ndl;elsec o u t成 丙 等”endl;(四)switch在谨行更多重逗撵的暗候,使用遇多的else i f脩件指令曾造成程式及雉 上的困攥。若 使 用switch-case,即可由 多不同的方案中找尊符合的结果。Switch修件 算式的结果必须是整数型魅或字元型魅,常在switch脩件指令中找尊到相同的结果,期 轨 行case内的程式指令。富幸丸行完任何case摩城斐,或不曾直接蹄switch愿 缀,逮是曾畿瀛往下孰行其它case指 令,因此在每一case指令的最彳爰,必须加上break指令来结束switch医嫩 甄 例 程 式 碉 如 下。char options;switch

21、(options)case a:coutvv“美阈之旅vv endl;break;case b:coutcv”日 本之旅”V endl;break;default:cout力口拿大之旅vv end;如果都没有符合修件的值,最彳度才曾幸丸行default的 指 令,而default的位置可以放在sw itch国境桂的任何位置。若 是 符default撰在最彳菱的位置,即可以把break指令省略。三、重禊结横常 需 要 重 躺 作 重 性 的 工 作,只要言殳立好脩件,符所要重覆轨行的指令放入所需的迪圈(Loop)中,直到脩件判断式不成立,才曾跳出迪圈。迪圈悬程式中常用的功能,使甯月尚迤行重禊性的

22、 算、工 作,但在 立脩件判断日寺,鹰先考量程式的可孰行性,以免陷入瓢鳄迪圈,造成重月窗瓢法结束程式,甚至富檄。以下先介貂三槿迪圈的特性及使用B寺檄:(一)for迪圈迪 圈 型使用畴檄及特性for指令遹用於tl数式的脩件控制,已事先知道退圈的次数。while指令迪圈次数未知,须满足特定脩件,才 曾 迤 入 逗 圈,直到不满足修件,退圈才曾结束。do-while 指令曾先孰行一次迪圈内的指令,才曾迤行脩件fo r迪圈可以重禊轨行固定次数的退圈,不遇需要事先后殳定退圈控制建数的起始值、脩件11算或 更新控制燮数的增减值,每一部分需用分虢隔 ,如果脩件i l算式成立,期孰 行fo r迪圈内的指令(大

23、括虢内),轨行完成彳及,视控制燮数的增,咸值重禊孰行for迪圈内的指令,直到修件式不成立即跳蹄for迪圈。法 靶 例 如 下:int i,sum;for(i=1;i10;i+)sum=sum+i;fo r迪圈指令的格式离法可以有很多槿燮化,但一定要 定跳蹄退圈的脩件及增减值,否即曾造成辗鳄迪圈甚至富械。在宣告燮数B寺,可直接给予起始值而省略for迪圈狸的燮数起始值,但 分 虢 封 不 能 省 略。int i=1,sum=0;/宣告 i 初值for(;i=10;i+)省略燮数起始值,分虢不可省略 sum+=i;fo r迪圈的指令可以曾化悬罩行,例如把迪圈内的指令合伊到更新控制燮数的增减值。int

24、 i=1,sum=0;/宣告 i 初值for(i=1;i=10;sum+=i+)/符累加指令合伊到 forfor燮数控制项桂面可以放迤多他算式,不 谩 之 需 以 逗 虢 隔 int i,sum;for(i=1,sum=1;i=10;i+,sum+=i)放入多彳固算式若招雨他以上的for退 圈 搭 配 用,形成多JS式 的for退 圈 架 横,巢状迪圈。在巢状迪圈中,外JS迪圈轨行一次迤入到内)I迪圈彳食,必须先符内JS迪圈轨行完 ,才曾畿*亶轨行外JS迪 圈,而彳矍又谨入到内JS迪 圈,需注意的是使用巢戕for迪 圈,在建数的控制使用上,势 必 曾 燮 得 ,在撰嘉之前,可在纸上用虚擦碣(P

25、seudo Code)先 重 算 思 考,等架横出来彳发,在程式撰嘉畤暹行微即可。()while 迪圈while迪 圈 和fo r逗圈均圈於前测型迪圈,也就是 在程式指令1现的必须先检查脩件i l算 式,富脩件式成立B寺,才曾轨行显现内的程式。不谩while迪圈遹用某些测就次数不硅定的退圈,例如只有富幔虢密碣符合畤才能迤入系统,造槿情况就可以用while指令来瘾。以下是 法格式。while(脩件11算式)程式B现;while迪 圈 内 需 自 己 定 一 他 燮 数 富i t算 器,或且要配合脩件式作改燮,否划脩件式永逮成立曾形成辗鳄迪圈。(三)do whiledo while退圈和while

26、退圈不同之虞在於do while是匾於彳爰洌J型 迪 圈,也 就 是do while迪圈一定曾先孰行一次迪圈内的指令一次,再 测 圈脩件式是否成立,如果成立的1舌,如同while迪 圈,曾重 孰行迪圈内的指令,直到脩件式不成立悬止,但d。while迪圈内的指令,瓢 如何至少曾被孰行一次。do(程式指令H)曾先孰行一次迪圈内的指令while(脩件式);/注 意!此虑需加上;虢(四)breakbreak指令在switch多重i l j f畴有提及谩,不 谩break指令不只限於和switch搭配使用,任 何 一 槿 逗 圈 型,都 可 藉 由break指令来强制跳出所在的迪圈指令H瑰。也 就 是,

27、在 由2彳固迪圈横成巢状迪圈的情况下,如果break是在内部迪圈,一旦孰行break指令日寺,break指令就曾立刻跳出最近的一眉迪圈H现(此例子情况下悬内部迪圈),加符控制榷交给此迪圈H境外的下一行程式。(五)continue 指令continue指令是弓金迫for、while,do while等 迪 圈,结束正在退圈程式国境内正在迤行的程序,而符控榷傅移到迪圈始虑。也就是跳谩迪圈内剩下的指令,重新孰行下一次的迪圈。但continue舆break最大的差别在於continue只是忽略之彳度未孰行的指令,但她未跳出迪圈。(六)goto指令goto指令是一槿允备午弓金制跳脱流程控制的指令,只要在

28、程式碣中言殳立,goto指令就能优目前所在的位置跳到程式檄言己虑。不谩彳住结横化程式1殳1+的角度来看,goto指 令 很 容 易 造 成 程 式 雉 上 的 困 辘 且 不 易,故程式言殳言十畴翥量不要使用到goto指令。其用法如下:goto print;print:coutv 不用祷考4,所以互换A(0)A(1)AAA(4)4+*5918A再比较A 舆 A(2),58,所以互换。比完一翰彳奏,睡列最彳及一元素悬排序最大者。再 重 原 来 的 勤 作,即可招资料由小到大排序A(0)A(1)AAA451v-892.逗择排序法(Select Sort)(1.)比较障列中第1 舆第2 彳固元素,若

29、 第 1 彳固比较大,即雨者交换。(2.)之彳度再比较第1 舆 第 3 彳固元素,若 第 3 彳固比敕大,即雨者交换。(3.)以 此 推,比完一输彳奏,即可排出最小者。A首先比敕A(0)舆A,54,所以互换A(0)A(1)AAA(4)4+*5918A再比较A(0)舆A(2),41,所以互换。比完一翰彳及,障列第一彳固元素悬排序最小者。再重禊原来的勤作,即可符资料由小到大排序。A(0)A(1)AAA(4)15948二、搜尊(Search)在一群资料中找尊符合脩件的资料,耦做搜尊。而富资料 谩排序之彳奏,想要找到某肇资料更是曾1O午多。搜尊的方法有很多,循序搜尊典二分搜尊是我优很常使用的演算法。(

30、)循序搜尊(Sequential Search)循序搜尊就是封所有资料一彳固一彳固迤行比封,比较是否符合我优的脩件,若符合即代表找到资料,若不符合即畿 比封下一肇资料,直到找到或是找完全部资料悬止。()二分搜尊(Binary Search)二分搜尊法曾比循序搜尊法来的有效率,但二分搜尊法只遹用於已排序遇的资料。二分搜尊法不依序一他一彳固比封资料,而是直接和阵列的中 元素比较,藉此符资料切割成二境。若比较结果较小,往左遏障列的中 元素比较,代表资料曾是在左半遏,因此切割的右半遏资料可完全省去搜尊的 ;若比较结果较大,即往右遏障列的中 元素作比较;若相等即代表找到资料。四、字串C+中,没有字串的基

31、本资料型熊,如 果 要 存 字 串,基本上逮是必须使用字元障列来表示。字串宣告可分雨槿,其差别在於空字元 0的使用。方式一:char strO=MHELLOM;方 式 二:char str5=H,E,0,0;方式一的宣告方式曾自勤在字串结尾附加 0结束字元,至 於 方式二即是以字元障列来谨行初始化,不谩需在结尾加上 0结 束 字 元,否即用cout函数输出B寺曾出现置L碣。字串常然也可以舆我凭常用的cout cin函数配合使用,例如以下程式片段,不谩如果输入的资料中含有空白,即空白彳发的资料曾被删除。若输入的字串须包含空白字元,可以使用getline()函数来迤行输入。用 法:cin.getl

32、ine(字串燮数,输入畏度,字串结束字元)char str150;cinstr1;取得使用者输入的字串cin.getline(str1,10,n);使用getline函数翰 入,最多接受10彳 固 字 元五、字串障列字串弹列可以看成是一槿二雉的字元障列,可宣告成char str网2 0,第一彳固数字3表 示 可 存 的 字 串 数 字;第二他20表示每彳固字串的是度大小最多可容纳多少字元,其中包含0结尾字元。由於字串不是C+的基本资料型熊,且 在 C+中不曾主勤悬字串I t 算大小,在需要指定字串给另一字串B 寺,必须优字元障列中一他他取出元素内容作禳裂,亦 即 std=str2口是不合法的,

33、若要符A 字串速接到B 字串接面,亦是符字串A一彳固彳固元素取出的方法,再速接在字串B 彳 爰 面。所以在宣告或使用上必须注意字串是度是否超出宣告靶圉。六、字串虑理函数若 理 字 串 的 速 接 情 况 日 寺,不想像上述的方法那麽 辘,C+富然也提供了言午多字串虞理函数,只要在襟I I 槽符vcstring引 入,就可以轻易使用道些函数,在使用日寺需注意字串的是度,如果超出是度曾出现不可I I 期的结果。以下先列出裂彳固常用的字串函数。函数用法函数 明strlen(str)傅回字串的是度。strcpy(str1,st 符 str2字串禊裂到st门字串。strncpy(str1,str2,4)

34、符 str2字串的前4 彳固字元禊裂到str1字串但 strncpy函数不曾自置)在结尾地方加上结束字元0。strcat(str1,str2)符 str2字串速结到str1字串strncat(str1,str2,3)符 str2字串的前3 彳固字元速结到str1字串strcmp(str1,str2)比较 str 1 字串舆str2字串如果 str1str2,傅回正值如果str1=str2,停 回 0如果 str1 str2,傅回负值strchr(str1,p)若 str1=apple”,即(找第一次出现的位置)strrchr(str1,p)曾印出pplestrrchr(str1,p)若 str

35、1=applen,同 I找最彳爰一次出琨的位置strrchr(str1,p)曾印出,ple七、字串傅换函数若 想 符 字 串 傅 换 成 数 值 来 算,可藉由襟I I 槽 cstdlib 桂的函数来傅换,不谩造些字串必须是由数字字元所 成的字串,如果字串不是由数字字元所 成,期输出结果符曾是数字型熊的0。以下列出常用的穗换函数。函数用法函数 明atof(str)符字串str傅换悬倍精型浮黠数(double float)atoi(str)符字串str傅换悬整数数值(int)atol(str)符字串str傅换悬是整数(long int)strlwr(str)符 str字串中的大嘉字母醇悬小嘉st

36、rupr(str)符 str字串中的小嘉字母樽悬大离八、字元判断函数I I 於字元判断的相I I 函数是由襟型函数JW内的 cctype 所提供,用途在於字元的I I 算,例 如:符字元由大嘉建成小嘉,或判断是否悬空白字元等,相I I 函数如下表所示。函数用法函数 明isalnum()判断字元是否悬英文字母(A Z,az)或数字(0 9),若是即停回非0 的 值,若不是即停回。值。isalpha()判断字元是否悬英文字母(A Z,a z),若是即傅回非。的值,若不是即停回。值。iscntrl()判断字元是否悬控制字元(ASCII礁。3 1 和 1 2 7),若是即傅回非0 的 值,若不是即停回

37、0 值。isdigit()判断字元是否悬数字(09),若是即停回非0 的 值,若不是见1停 回0值。isgraph()判断字元是否悬可 示的字元(ASCII B 33-126),若是即傅回非0的 值,若不是即停回0值。isprint()判断字元是否悬可 示的字元(ASCH碣32-126),若是即傅回非0的 值,若不是即停回0值。islower()判断字元是否悬小嘉字母(az),若不是即停回。值。isupper()判断字元是否悬大嘉字母(A Z),若不是即停回。值。isspace()判断字元是否悬空白字元(ASCII碣32)tolower()判断字元是否悬大嘉字母(AZ),若 是 字 元 傅 换

38、 成 小嘉字母彳菱傅回;若 不 是,即符字元参数值傅回,不作傅换。toupper()判断字元是否悬小嘉字母(a z),若 是 即 字 元 醇 换 成 大嘉字母彳矍傅回;若 不 是,即符字元参数值傅回,不作穗换。九、String MS!l在虞理字串畤,亦可使用字串(SEng)别来虑理,String 别 不 腐 於C+的基本资料型熊(int、char等),在使用日寺需符stringinclude i t来,於 利(class)的觐念,悬使用者自定的抽象资料型熊,之彳爰再作迤一步 明。在C+的 字 串 别 中,不需要引用函数,可直接使用i l算子(=、!=等符虢)来作字串的虞理,且字串 别不使用弹列

39、,不 曾 像 字 串 睡 列 有 超 遇 障 列 大 小 而 引 的冏题。以下是s t r i n g 所提供的一些成景函数。靶 例:char str1-Ginling is good;string str2=Ginling is good;string str3=str1;/合法char str4Q=str2;/不合法成员函数用法 明str1.append(str2,0,5)符str2优 第0彳固字元 始取5彳固字元串接在str1字串彳矍面str1.assign(str2,0,5)符str2优 第0彳固字元 始取5彳固字元指定给str1字串str1.length()取 得st门字串的畏度st

40、r1.size()取 得str1字串的大小str1.insert(5,*)在str1第5他字元彳度插入*str1.findCwill)在s th找尊will字 串,若找到符合的字串,僖回 字 串 位 置,若 否,则停回-1str1.swap(st 封 字串str1.empty()判断是否悬空字串,是即傅回turestr1.erase(3,6)在str1第3他 字 元 始 清 除6彳 固 字 元str1.substr(3,6)在str1第3他 字 元 始 取 得6他字元第五章函数所需的函数就是一段程式指令的集合,或给予一他名耦来代表此程式礁集合。因 此,富在撰嘉程式B寺,我优可以把某彳固功能嘉成

41、一他H现,此1境的程式礁即可视悬一槿褐立的模,常需要此功能日寺,只须阡叫此函数来孰行即可,a也是所需 模左且化 的 后 殳11精神,能减少除 的 靶 圉,程式的雉 工 作 更 触 髭。C+的函数除了每彳固程式都曾用到的main主程式外,遢可分悬系统本身提供的襟型函数及使用者自行定羲的自FT函觐使用襟型函数只要符所要使用相H函数的襟H槽include迤来即可;自定函数即是使用者依需求来言殳1 1的函数,包括函数的名耦、参数、回傅值等等。回傅资料型魅函数名耦(参数列)(程式叙述H境;return回傅值;/若;攵有fil回 值,可以省略return靶 例:int Square_Fun(int a)(

42、return a*a;一、函数宣告自rr函数可分悬宣告舆定 羲 雨 部 分,就如同使用燮数前必须先宣告一檬,自FT函数在被呼叫舆使用前,都 必 须 先 谩 宣 告,先告知编11器,否即在编群谩程 中,符 曾 彝 生 自FT函数的定羲即是描述自FT函数功能的程式碣内容。通常曾惯上曾招自FT函数宣告的原型(prototype)放 在main主程式之前,而自FT函数的定羲放在main主程式之彳爰,其中要注意的是自FT函数原型宣告B寺,最彳矍仍必须加上;虢,至於参数的部分,可直接以参数资料型魅来表示,#数名耦可嘉可不嘉。宣 告 例 如 下:int sum(int.int);宣告带有2彳固资料型熊悬整数

43、参数的函数(名耦可不嘉)int sum(int a,int b);宣告参数名悬分别悬a、b如果直符自FT函数的定羲放在main主程式之前,即同畤具倩了宣告舆定羲loint Square_Fun(int a,int b)return a*b;直接定羲在main。之前以下雨槿宣告表蓬方式都是合法的。int Square_Fun(int a,int b);函数原型宣告int main(void)int i=3,j=2;二、函数呼叫在程式中若要用到函数畤,通常直接使用函数名耦即可呼叫函数,函数呼叫畤通常曾带有参数,道些参数我优耦之悬 引数。富呼叫函敦日寺,函数曾招引数的值,停遮给函数内定羲的参数,所以

44、参数和引数的彳固数舆资料型魅一定是封等 的,若函数不需要傅入参,即小括虢内可直接置入空格或void。三、函数的参数傅遮函数的参数停遮功能,主要是符主程式中呼叫函数的引数值,停遮给函数桂的程式作虑理,在C+中,封於停遮参数的方式可分卷傅值呼叫(call by value).傅址呼叫(call by address)、和傅参考呼叫(call by reference)等三槿。另外函数参数的槿 可分悬以下雨槿:*形式参数(Formal Parameter):在函数定羲檄 中所宣告的参数*除参数(Actual Parameter):寅除呼叫函数B寺所提供的参数Square_Fun(int scote)

45、版式的鼬I 害嚓的勤.)*main(void)Square_Fun(8);(一)傅值呼叫指主程式在呼叫函数的寅除参数B 寺,系统曹耨寅除参数的数值僖裂给函数中相封鹰的形式参数,由於形式参数是额外配置的 IS,因此在函数内的形式参数孰行完彳及,或不曾更勤到原先主程式中呼叫的燮数内容(只有言己惊放的位置不同)。(二)傅址呼叫所需停址呼叫是指在呼叫函数畤,她;欠有 除分配备己惊i f 位址给函数的形 式 参 数,而 是 除 参 数 的 位 址 直 接 停 给 形 式 参 数,也 就 是,函数的形 式 参 数 和 数 共 用 同 一 境 位 址,因此在函数内的形式参数轨行完彳 及,符 曾 透 谩 指

46、檄 的 方 式 指 向 数 的 燮 数 位 址,更改原先呼叫函数内的建数内容。(三)傅参考呼叫傅参考方式也是 似於傅址呼叫的一槿,但在傅参考方式函数中,形式参 数 她 不 曾 另 外 再 配 置 得 己 惊 醴 存 放 数 停 入 的 位 址,而是直接把形式参数作 除参数的一他别名(alias)。曾 军 来,傅参考呼叫可以做到傅址呼叫的功能,谷 II有停值呼叫的曾便。四、main。函数的引数停遮我 在 程 式1殳t t撰 嘉 畴,硼 好 一 他 新 的 槽 案,曾 看 到Dev C+等程式编辑器在main。函 数 殳 了 argc舆argv雨彳固命令列引觌所I I的 命令列引数(command

47、-line argument),指的就是程式在MS-DOS作棠系统中轨行畴所停遮的引数,常然若程式她不曾用到,也可以招引数删掉,宣告方式如下。富 然,argc和argv口道雨彳固参数只是常用的引数宣告名耦,同擘可以自由命名,如果 引数字串迤行数值i l算,即 可 利 用atoi()、atofO,atoll()等公用函数桂的字串傅换函 数,分别符字串穗换悬整数、浮黠数舆是整数。int main(int argc,char*argv)()argcargc的资料型魅悬整数,表示命令列引数的彳固数,argc的 值 曾 大於0,因悬至少包括了程式本身名耦。(二)argvargv口的资料型熊悬不定是度的字

48、串指檄障列,所停遮的资料P皆悬字串格 式,此字串障列的的彳固数是视使用者输入的引数数目而定,要注意的是,命令列引数字串是以空白或定位(tab)字元悬1隔,若输入引数需要包含空白字 元 畤,需符整段字串以 包住,而在字串中加入襟黠符虢,仍曾被祝,悬一彳固字串。五、燮数的槿燮数依照定羲的位置舆格式,符曾以不同的形式来存放,而形成不同的作用 圉(scope)舆生命期(lifetime)。所需生命期是指优建数宣告 始,一直到燮数所估用的言己魔醴空被释放悬止;至於作用15凰即是指在程式中可以存取到 燮数的H 现。在 C+中,依照燮数定羲的位置,作用15圉可以1 分悬以下二槿。(一)全域燮数(global

49、 variable)全域燮数又耦悬外部燮数,是宣告在程式H 现舆函数之外,所有的函数及程式H 境都可以使用到 燮数,全域燮数的生命遇期是优宣告 始,一直到整彳固程式结束悬止。特别要注意的是,程式1殳 11的初阜者往往因觐念不清楚及悬了燮数宣告典使用上的方便,而符燮数全部都宣告悬全域燮数,在程式言殳言十上造是一彳固很不好的曾惯,殿 格 来,全域燮数反而更愿IS慎 使 用,避免某彳固函数不小心 给 定 的 值,而影警到整彳固程式的轨行。(二膈域建数(local variable)1 域燮数是宣告在函数或程式1 境内的燮数,燮数只可以在此H 现存取,而此H 境外的程式碣都 法存取此 建数,至於1 域

50、燮数的生命遇期是优 宣 告 始,一直到道此程式H 境结束悬止。如果在程式中,I I 域燮数舆全域燮数掩有相同的名耦,富程式编群日寺,在程式H 境内的I I 域燮数等殳定值曾曹B 寺侵先羞遇全域燮数,一 旦 域 燮 数 所在的程式1 境轨行结束彳及,全域燮数又曾恢徨到原来的言殳定值。六、燮数的等级除了燮数在程式中所定羲的位置外,C+提供了 5 槿 燮 数 等 级 型 熊 修 司,在宣告燮数畴,可 搭 配 型 熊 修 司 一起宣告。(一)自勤建数加 上 auto修 司 的 燮 缴,耦悬自勤建数(automate variable)。此 燮数必须宣告在函数B 境 内,也 就 是 函 数 的 I I

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁