C++語(yǔ)言講義(C++基礎(chǔ))_第1頁(yè)
C++語(yǔ)言講義(C++基礎(chǔ))_第2頁(yè)
C++語(yǔ)言講義(C++基礎(chǔ))_第3頁(yè)
C++語(yǔ)言講義(C++基礎(chǔ))_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余41頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

C++語(yǔ)百基礎(chǔ)說(shuō)明:本部分資料是C++語(yǔ)言基礎(chǔ)部分,由于《C++程序設(shè)計(jì)》課本中未講解語(yǔ)言基礎(chǔ),在此我們補(bǔ)充完整,希望同學(xué)們認(rèn)真學(xué)習(xí)。本資料中使用編譯環(huán)境為VC第1章C++語(yǔ)言概述1.1簡(jiǎn)單的C++程序介紹例#include<iostream.h>main(){cout<ぐ這是我的第一個(gè)程序Xn";)c\"C:\DocumentsandSettings...I性是我的露ー個(gè)翻Pressanykeytocontinue本程序的作執(zhí)行結(jié)果:3 I 旦纟每個(gè)C/C++語(yǔ)言程序都有一個(gè)main()函數(shù)其固定格式為:〃編寫(xiě)程序的準(zhǔn)備工作main(){要編寫(xiě)的程序.實(shí)現(xiàn)不同的功能;)編程人員要做的就是在劃線部分填寫(xiě)適當(dāng)?shù)拇a。上例中:#include<iostream.h>表示包含文件。說(shuō)明:include〈文件名〉或include”文件名”表示要將文件名對(duì)應(yīng)的文件中的代碼包含到我們的程序中。文件名所對(duì)應(yīng)的文件一一般是C/C++語(yǔ)言已經(jīng)編輯好的庫(kù)文件,可以幫助我們完成相應(yīng)的工作,而代碼不需要我們自己編寫(xiě)。庫(kù)文件是系統(tǒng)中自帶的現(xiàn)有文件,其中實(shí)現(xiàn)了不同功能,我們要記住每個(gè)庫(kù)文件的功能,以方便我們決定什么時(shí)候包含什么文件,實(shí)現(xiàn)什么功能。要包含的文件也可是自己編寫(xiě)的文件。main() { 要編寫(xiě)的程序,實(shí)現(xiàn)不同的功能:}此部分稱為main函數(shù),是固定格式,我們要做的是在劃線部分填寫(xiě)代碼,實(shí)現(xiàn)不同功能。而要完成這一部分的編寫(xiě),學(xué)要了解C/C++語(yǔ)言的數(shù)據(jù)類型,運(yùn)算符,常用函數(shù),控制語(yǔ)句等等。上例中cout<ぐ這是我的第一個(gè)程序\n”;表示要在屏幕上輸出“這是我的第一個(gè)程序”這句話(輸出的文字是多個(gè)字符要用雙引號(hào)引起來(lái),單個(gè)字符用單引號(hào)),并在輸出完成后換行(\n表示要換行,該符號(hào)使用時(shí)應(yīng)寫(xiě)在引號(hào)內(nèi))例求兩數(shù)之和#include<iostream.h> //包含文件iostream.h,包含該文件后可使用cout輸出數(shù)據(jù)。main(){inta,b,sum; /?這是定義變量?/a=123;b=456; /?以下3行為語(yǔ)句?/sum=a+b;cout?"sumis"?sum?endl;)說(shuō)明:〃文字形式表示注釋,是對(duì)某段程序功能的說(shuō)明 /*文字?/也是注釋inta,b,num:表示定義整型變量。計(jì)算機(jī)中進(jìn)行運(yùn)算要存儲(chǔ)相關(guān)數(shù)據(jù)到內(nèi)存中,變量就是用于存儲(chǔ)數(shù)據(jù)。定義變量格式:數(shù)據(jù)類型變量名;若定義多個(gè)同類型變量則用逗號(hào)分隔多個(gè)變量。

a=123:表示將123這個(gè)數(shù)存入a這個(gè)變量中,a變量在內(nèi)存中占用了2個(gè)字節(jié)空間。sum=a+b!表示將a和b的和存入sum中。cout?"sumis"<<sumcvendl;表示輸出結(jié)果?!妒且粋€(gè)運(yùn)算符,與cout結(jié)合使用,表示輸出。ー個(gè)<<表示一次輸出,?"sumis"表示在屏幕上輸出文字"sumis",?sum表示在屏幕上輸出sum內(nèi)存放的數(shù)據(jù),<<endl表示輸出ー個(gè)換行,其作用同。最后的分號(hào)表示語(yǔ)句結(jié)束。c\c\MC:\DocumentsandSettings.^sumis579Pressanykeytocontinue該程序的執(zhí)行結(jié)果為:日「 旦Z例#include<iostream.h>〃此句的作用是main(){inta,b,c;〃此句的作用是cin?a?b; 〃表示要求用戶從鍵盤(pán)上輸入兩個(gè)數(shù)據(jù)分別存入a變量和b變量c=max(a,b); //表示將max(a,b)的結(jié)果存入變量c中。coulvv”最大值是“vvcvvendl; 〃此句的作用是}intmax(intx,inty)//x,y的值從main函數(shù)中main(a,b)中取得,a的值給x,b的值給y{intz; 〃此句的作用是if(x>y)z=x;〃如果x>y則x存入zelsez=y; 〃否貝リy存入zreturn(z);〃使z作為max的結(jié)果)說(shuō)明:cin表示輸入數(shù)據(jù)。>>表示輸入運(yùn)算符,與cin連用表示要求輸入數(shù)據(jù)存入〉〉符號(hào)后面的變量中。cin〉〉a;表示要求從鍵盤(pán)上輸入ー個(gè)數(shù)據(jù)并存入變量a。要輸入多個(gè)數(shù)據(jù)時(shí)可使用cin〉〉a〉〉b;max(a,b)此種形式表示函數(shù)調(diào)用。 max是ー個(gè)函數(shù)括號(hào)內(nèi)是函數(shù)的參數(shù)。此種使用形式要求max必須是ー個(gè)已經(jīng)定義的函數(shù)。該函數(shù)調(diào)用后有一個(gè)結(jié)果(有沒(méi)有結(jié)果由max函數(shù)的定義決定)。c=max(a,b);表示將max函數(shù)執(zhí)行后的結(jié)果存入變量c中。intmax(intx,inty){ 。。0。。 }此形式為函數(shù)max的定義。第一個(gè)int表示該函數(shù)執(zhí)行后有一個(gè)結(jié)果類型為整型的。其結(jié)果由大括號(hào)內(nèi)的語(yǔ)句決定。max表示函數(shù)名,每個(gè)函數(shù)都有一個(gè)名字,用于表示一段代碼。如main函數(shù)。(intx,inty)表示max函數(shù)的參數(shù),表示max函數(shù)要處理的數(shù)據(jù)。intmax(intx,inty)稱為函數(shù)首部,打括號(hào)內(nèi)的部分稱為函數(shù)體。ー個(gè)函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成。此程序的執(zhí)行時(shí)DocumentsandSettin.,此時(shí)從鍵盤(pán)輸入數(shù)據(jù)1112最大值是12此程序的執(zhí)行時(shí)DocumentsandSettin.,此時(shí)從鍵盤(pán)輸入數(shù)據(jù)1112最大值是12Pressanykeytocontinue最后結(jié)果為:關(guān)于函數(shù)在后續(xù)章節(jié)中詳細(xì)介紹??偨Y(jié):通過(guò)以上幾個(gè)例子,可以看到:(1)C程序是由函數(shù)構(gòu)成的。一個(gè)函數(shù)由兩部分組成:①函數(shù)的首部,即函數(shù)的第一行。②函數(shù)體,即函數(shù)首部下面的大括?。?內(nèi)的部分。ー個(gè)C程序總是從main函數(shù)開(kāi)始執(zhí)行的。(4)每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。(5))可以用/*……*/和〃…對(duì)程序中的語(yǔ)句作注釋。第2章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式上一章中我們對(duì)C++程序作了一個(gè)簡(jiǎn)單介紹,了解了C++程序的基本結(jié)構(gòu)和形式。在上一章的例子中提到要編寫(xiě)C++程序進(jìn)行運(yùn)算需要使用變量來(lái)存放數(shù)據(jù),而數(shù)據(jù)是分為不同類型的。例如整數(shù),實(shí)數(shù),字符等等。本章介紹C++語(yǔ)言中的常用數(shù)據(jù)類型及相關(guān)運(yùn)算符,和由數(shù)據(jù)和運(yùn)算符構(gòu)成的表達(dá)式。C++的數(shù)據(jù)類型一個(gè)程序應(yīng)包括以下兩方面內(nèi)容:(1)對(duì)數(shù)據(jù)的描述。(2)對(duì)操作的描述。c的數(shù)據(jù)類型如下:基本類型:整型int,字符型char,實(shí)型(浮點(diǎn)型)float,單精度型single,雙精度型double,布爾型bool枚舉類型:構(gòu)造類型:數(shù)組類型,結(jié)構(gòu)體類型,共用體類型,指針類型:空類型變量程序中其值可以改變的,用ー個(gè)符號(hào)名字表示的量稱為變量。C++語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。注意,大寫(xiě)字母和小寫(xiě)字母被認(rèn)為是兩個(gè)不同的字符。在選擇變量名和其他標(biāo)識(shí)符時(shí),應(yīng)注意做到“見(jiàn)名知意”,“先定義,后使用”。定義變量時(shí)需給出變量的名字以及該變量要存放的數(shù)據(jù)的類型。例如:inta:表示定義一個(gè)整型變量名字為a。inta,b,c!表示定義三個(gè)整型變量。inta=l:表示定義ー個(gè)整型變量a并將1存入該變量中。inta(l);作用同inta=l;也可:inta,b=10,c(0);整型數(shù)據(jù)整型常量的表示方法整型常量即整常數(shù)。c整常數(shù)可用以下三種形式表示:⑴十進(jìn)制整數(shù)。1020308899 直接使用數(shù)字構(gòu)成(2)ハ進(jìn)制整數(shù)。010020030 088099 以〇開(kāi)頭加數(shù)字,表示八進(jìn)制數(shù),后兩個(gè)對(duì)嗎?(3)十六進(jìn)制整數(shù)。0x100x88OxabOxffOxgg以O(shè)x開(kāi)頭加數(shù)字,表示16進(jìn)制數(shù)。inta=0xab,b=0xBC,c(011),d=l1;請(qǐng)說(shuō)明a,b,c,d四個(gè)變量的值(10進(jìn)制)是多少?整型變量.整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。如果定義了一個(gè)整型變量i:inti;/?定義為整型變量?/i=10; /?給i賦以整數(shù)10*/每ー個(gè)整型變量在內(nèi)存中占2個(gè)字節(jié)。數(shù)值是以補(bǔ)碼(complement)表示的。.整型變量的分類(1)基本整型,以im表示。在C語(yǔ)言中占2字節(jié),在C++語(yǔ)言中占4字節(jié)(2)短整型,以shortint表示,或以short表示。占2字節(jié)⑶長(zhǎng)整型, 以longint表示,或以long表示。占4字節(jié)有符號(hào)基本整型[signed]int表示范圍:がし23」■2147483648?+2147483647無(wú)符號(hào)基本整型unsignedint表示范圍:0~232-l0-4294967295有符號(hào)短整型[signed]short[int]無(wú)符號(hào)短整型unsignedshort[int]有符號(hào)長(zhǎng)整型[signed]long[int]無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]unsignedintc;shortd=l;shortinte;signedshortf;unsignedshortg;longh;longinti;signedlongj;unsignedlongk;定義變量時(shí)根據(jù)要存放的數(shù)據(jù)的類型及大小來(lái)選擇變量定義的類型。比如要存放10000000000這個(gè)數(shù)應(yīng)選擇那種類型來(lái)定義變量?.整型數(shù)據(jù)的溢出例整型數(shù)據(jù)的溢出。#include<iostream.h>main(){inta,b;a=2147483647;b=a+1;cout?a?endl?b?endl;}必[474836471-2147483648請(qǐng)注意以下幾點(diǎn):(1)使用時(shí)要注意數(shù)據(jù)的大小與變量的表示范圍是否一致,數(shù)據(jù)值超出標(biāo)量表示范圍后會(huì)使數(shù)據(jù)出錯(cuò)。C語(yǔ)言中的int類型與C++中的int占用字節(jié)不一樣,表示范圍也不一樣,不同的編譯系統(tǒng)可能導(dǎo)致數(shù)據(jù)類型所占字節(jié)不同。ー個(gè)整常量后面加一個(gè)字母u或U,認(rèn)為是unsignedint型如123u(4)在ー個(gè)整常量后面加一個(gè)字母1或L,則認(rèn)為是longint型常量。如123L,123表示基本整型。2.4實(shí)型數(shù)據(jù)實(shí)型常量的表示方法實(shí)數(shù)有兩種表示形式:⑴十進(jìn)制小數(shù)形式,如!.234〇(2)指數(shù)形式,如1.234E+002。實(shí)型變量的分類單精度(float型)占4字節(jié)、雙精度(double型)占8字節(jié)和長(zhǎng)雙精度型(longdouble)占10字節(jié)。對(duì)每ー個(gè)實(shí)型變量都應(yīng)在使用前加以定義。如:floatx,y,(指定x、y為單精度實(shí)數(shù))doublez; (指定z為雙精度實(shí)數(shù))longdoublet;(指定t為長(zhǎng)雙精度實(shí)數(shù))實(shí)型常量的類型1.23F,1.23f表示浮點(diǎn)型,1.23L,1.2341長(zhǎng)雙精度,1.23表示雙精度.5字符型數(shù)據(jù)字符常量字符常量是用單引號(hào)(即撇號(hào))括起來(lái)的一個(gè)字符。如‘a(chǎn)'表示字符常量a

還允許用一種特殊形式的字符常量,就是以ー個(gè)“'”開(kāi)頭的字符序列。’\n’,它代表ー個(gè)“換行”符。這是ー種“控制字符”,在屏幕上是不能顯示的。'\1到3位八進(jìn)制數(shù)’表示該數(shù)對(duì)應(yīng)的ascii碼對(duì)應(yīng)的字符,如‘'101’也表示一個(gè)字符A。'Ml到2位進(jìn)制數(shù)‘如:‘'x41'表示,A'表示輸出數(shù)據(jù)時(shí)跳至下一格制表位,ー個(gè)制表位為8個(gè)字符寬度。'\b'表示輸出數(shù)據(jù)時(shí)光標(biāo)退一格<\n,表示輸出時(shí)換行表示輸出ー個(gè)' 'V表示輸出ー個(gè)‘'V"表示輸出ー個(gè)'’例2.5轉(zhuǎn)義字符的使用。''101'也表示ー個(gè)字符#include<iostream.h>main(){cout?"abc\tde'rf'tg'n";cout?"h\ti'b\bjk\n";cout?"\l01"?endl?'\x42'?An';)f gdehjkn輸出結(jié)果:B字符變量字符型變量用來(lái)存放字符常量,請(qǐng)注意只能放ー個(gè)字符,并使用一個(gè)字節(jié)來(lái)存放ー個(gè)字符字符變量的定義形式如下:charcl,c2:用下面語(yǔ)句對(duì)cl、c2賦值:cl='a';c2='b';將一個(gè)字符常量放到ー個(gè)字符變量中,是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。例大小寫(xiě)字母的轉(zhuǎn)換。#include<iostream.h>main(){ charcl,c2;cl='a'; c2=,b,;cl=cl-32; c2=c2-32;cout?c1<<endl?c2?endl;)八.Ifl軸出結(jié)果:IB字符串常量字符串常量是ー對(duì)雙引號(hào)括起來(lái)的字符序列。如:“howdoyoudo.",“CHINA“,“a“,123.45"所占字節(jié)數(shù)為字符個(gè)數(shù)+1,在每個(gè)字符串的末尾都隱含一格‘、0'符號(hào),表示字符串結(jié)束標(biāo)志。.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式1234123456算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符位運(yùn)算符賦值運(yùn)算符條件運(yùn)算符.逗號(hào)運(yùn)算符.指針運(yùn)算符+ - */%><==>=<=! &&II? ? ~1A= 及其擴(kuò)展賦值運(yùn)算符?;?和&.求字節(jié)數(shù)運(yùn)算符sizeof.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型).分量運(yùn)算符 . ->.下標(biāo)運(yùn)算符 [].! 算術(shù)運(yùn)算符和算術(shù)表達(dá)式.基本的算術(shù)運(yùn)算符+(加法運(yùn)算符,或正值運(yùn)算符。如3+5、+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符。如5-2、-3)*(乘法運(yùn)算符。如3*5)/(除法運(yùn)算符。如5/3)%(模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如7%4的值為3)。算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,又稱“左結(jié)合性”,有些運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?,即右結(jié)合性.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。例如:(double)a (將a轉(zhuǎn)換成double類型)(int)(x+y) (將x+y的值轉(zhuǎn)換成整型)(float)(5%3) (將5%3的值轉(zhuǎn)換成float型)其一般形式為(類型名)(表達(dá)式)例強(qiáng)制類型轉(zhuǎn)換。#include<iostream.h>main(){floata=2.2,b=9.4;floatc;c=(int)b%(int)a;cout?c?endl;}.自增、自減運(yùn)算符(只能對(duì)變量進(jìn)行運(yùn)算,常量不可使用該運(yùn)算符)++i,-i (在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)注意:自增運(yùn)算符(++)和自減運(yùn)算符G-),只能用于變量,而不能用于常量或表達(dá)式例如main(){inta=l;intb;b=a++;cout?b?endl;b=++a;cout?b?endl;)若單獨(dú)使用時(shí),如:a++:和++a:都相當(dāng)于a=a+l;賦值運(yùn)算符和賦值表達(dá)式.賦值運(yùn)算符=如:a=l;將數(shù)據(jù)1存入變量a對(duì)應(yīng)的內(nèi)存中。2復(fù)合的賦值運(yùn)算符在賦值符“=”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。如果在“=”前加一個(gè)“+”運(yùn)算符就成了復(fù)合運(yùn)算符“+=”。①a+=b(其中a為變量,b為表達(dá)式)等價(jià)于a=a+b注意,如果b是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào)。如:①x%=y+3等價(jià)于x=x%(y+3) (不要錯(cuò)寫(xiě)成x=x%y+3)可以使用10種復(fù)合賦值運(yùn)算符。即:+=,-=,*=,/=,%=,?=,?=,&=,A=,1=3.賦值表達(dá)式的值由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱為“賦值表達(dá)式”。它的一般形式為〈變量x賦值運(yùn)算符><表達(dá)式>比如:a=l是ー個(gè)賦值表達(dá)式,該式子的值為被賦值的值。例如:b=a=l!由于a=l是ー個(gè)賦值表達(dá)式,其值為1,從而使得b=a=l;轉(zhuǎn)換為b=l;逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式用逗號(hào)將兩個(gè)表達(dá)式連接起來(lái)。如:3+5,6+8 稱為逗號(hào)表達(dá)式,又稱為“順序求值運(yùn)算符”。逗號(hào)表達(dá)式的一般形式為表達(dá)式1,表達(dá)式2逗號(hào)表達(dá)式的求解過(guò)程是:先求解表達(dá)式1,再求解表達(dá)式2。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。請(qǐng)注意并不是任何地方出現(xiàn)的逗號(hào)都是作為逗號(hào)運(yùn)算符。第3章順序程序設(shè)計(jì)C++語(yǔ)句概述C++語(yǔ)句可以分為以下5類:(1)控制語(yǔ)句,完成一定的控制功能。c只有9種控制語(yǔ)句,它們是:①if〇?else?(條件語(yǔ)句)②for()~ (循環(huán)語(yǔ)句)③while()~ (循環(huán)語(yǔ)句)④d〇?while。(循環(huán)語(yǔ)句)⑤continue (結(jié)束本次循環(huán)語(yǔ)句)⑥break (中止執(zhí)行switch或循環(huán)語(yǔ)句)⑦switch (多分支選擇語(yǔ)句)⑧goto (轉(zhuǎn)向語(yǔ)句)⑨return (從函數(shù)返回語(yǔ)句)(2)函數(shù)調(diào)用語(yǔ)句。由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成一個(gè)語(yǔ)句;(3)表達(dá)式語(yǔ)句。(4)空語(yǔ)句。下面是一個(gè)空語(yǔ)句: ;(5)可以用{}把ー些語(yǔ)句括起來(lái)成為復(fù)合語(yǔ)句,又稱分程序。程序的三種基本結(jié)構(gòu)(1)順序結(jié)構(gòu)。(2)選擇結(jié)構(gòu)。(3)循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)就是按照語(yǔ)句的書(shū)寫(xiě)順序執(zhí)行。順序結(jié)構(gòu)程序設(shè)計(jì)舉例例輸入三角形的三邊長(zhǎng),求三角形面積。#include<math.h>#include<iostream.h>main(){floata,b,c,s,area;cin?a?b?c;s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));cout?Ha=n?a?endl<<',b=,'?b?endl<<,,c=',?c?endl;cout?narea="?area?endl;例從鍵盤(pán)輸入一個(gè)大寫(xiě)字母,要求改用小寫(xiě)字母輸出。#include<iostream.h>main(){charcl,c2;cin?c1;c2=cl+32;coutvv”轉(zhuǎn)換為小寫(xiě)字母為:n?c2?endl;}例求ax2+bx+c=0方程的根。#include<math.h>#include<iostream.h>main(){doublea,b,c,xl,x2,delta;cin?a?b?c;delta=b*b-4*a*c;x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);coutvv”方程根xl=M?xl?endlvv”方程根x2=*'?x2?endl;方程根xl=-i ■方程;貝x2=-i B兒第4章選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu),是三種基本結(jié)構(gòu)之一。關(guān)系運(yùn)算符和關(guān)系表達(dá)式所謂‘‘關(guān)系運(yùn)算”實(shí)際上是“比較運(yùn)算”。將兩個(gè)值進(jìn)行比較,判斷其比較的結(jié)果是否符合給定的條件。6種關(guān)系運(yùn)算符:優(yōu)先級(jí)相同(高):①((小于)②<=(小于或等于)③>(大于)④>=(大于或等于)優(yōu)先級(jí)相同(低):⑤==(等于)⑥!=(不等于)關(guān)于優(yōu)先次序:(1)前4種關(guān)系運(yùn)算符(V,<=,>,>=)的優(yōu)先級(jí)別相同,后兩種也相同。(2)關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。(3)關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符。關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式)連接起來(lái)的式子,稱關(guān)系表達(dá)式。關(guān)系表達(dá)式的值是ー個(gè)邏輯值,即“真”或“假”。關(guān)系表達(dá)式“a>b”的值為“真”,表達(dá)式的值為1〇關(guān)系表達(dá)式“b+c<a”的值為“假”,表達(dá)式的值為〇。邏輯運(yùn)算符及其優(yōu)先次序三種邏輯運(yùn)算符:(1)&&邏輯與(2)11邏輯或(3)!邏輯非⑴!俳)一&&(與)f(或),即“!”為三者中最高的。(2)邏輯運(yùn)算符中的“&&”和“ド低于關(guān)系運(yùn)算符,“ド’高于算術(shù)運(yùn)算符。邏輯表達(dá)式邏輯表達(dá)式的值應(yīng)該是ー個(gè)邏輯量“真”或“假”。編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時(shí),以數(shù)值1代表“真”,以〇代表“假”,但在判斷ー個(gè)量是否為“真”時(shí),以。代表“假”,以非。代表“真”。即將一個(gè)非零的數(shù)值認(rèn)作為“真”。例如,要判別某一年year是否閏年。閏年的條件是符合下面二者之一:①能被4整除,但不能被1。。整除。②能被4整除,又能被400整除??梢杂靡粋€(gè)邏輯表達(dá)式來(lái)表示:(year%4==。&&year%1。。!=。)IIyear%400==。if語(yǔ)句if語(yǔ)句是用來(lái)判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。if語(yǔ)句的三種形式if(表達(dá)式)語(yǔ)句if(表達(dá)式)語(yǔ)句1else語(yǔ)句2if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句n說(shuō)明:(1)三種形式的if語(yǔ)句中在if后面都有“表達(dá)式”,一般為邏輯表達(dá)式或關(guān)系表達(dá)式。(2)第二、第三種形式的if語(yǔ)句中,在每個(gè)else前面有一分號(hào),整個(gè)語(yǔ)句結(jié)束處有分號(hào)。(3)在if和else后面可以只含一個(gè)內(nèi)嵌的操作語(yǔ)句(如上例),也可以有多個(gè)操作語(yǔ)句,此時(shí)用花括號(hào)“{}”將幾個(gè)語(yǔ)句括起來(lái)成為ー個(gè)復(fù)合語(yǔ)句。if語(yǔ)句的嵌套在if語(yǔ)句中又包含ー個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套。一般形式如下:if()if()語(yǔ)句1else語(yǔ)句2內(nèi)嵌ifelseif()語(yǔ)句3else語(yǔ)句4內(nèi)嵌if應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。else總是與它上面的最近的if配對(duì)。條件運(yùn)算符若if語(yǔ)句中,在表達(dá)式為“真”和“假”時(shí),且都只執(zhí)行一個(gè)賦值語(yǔ)句給同一個(gè)變量賦值時(shí),可以用簡(jiǎn)單的條件運(yùn)算符來(lái)處理。例如,若有以下if語(yǔ)句:if(a>b)max=a;elsemax=b;可以用下面的條件運(yùn)算符來(lái)處理: max=(a>b)?a:b;其中“(a>b)?a:b”是ー個(gè)“條件表達(dá)式”。它是這樣執(zhí)行的:如果(a>b)條件為真,則條件表達(dá)式取值a,否則取值b。條件運(yùn)算符要求有3個(gè)操作對(duì)象,稱三目(元)運(yùn)算符,它是C++語(yǔ)言中唯一的一個(gè)三目運(yùn)算符。條件表達(dá)式的一般形式為 表達(dá)式1?表達(dá)式2:表達(dá)式3。說(shuō)明:(1)條件運(yùn)算符的執(zhí)行順序:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值。(2)條件運(yùn)算符優(yōu)先于賦值運(yùn)算符,因此上面賦值表達(dá)式max=(a>b)?a:b,的求解過(guò)程是先求解條件表達(dá)式,再將它的值賦給max。條件運(yùn)算符的優(yōu)先級(jí)別比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符都低。

(3)條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆薄?4)條件表達(dá)式不能取代一般的if語(yǔ)句,只有在if語(yǔ)句中內(nèi)嵌的語(yǔ)句為賦值語(yǔ)句(且兩個(gè)分支都給同一個(gè)變量賦值)時(shí)オ能代替if語(yǔ)句。(5)條件表達(dá)式中,表達(dá)式1的類型可以與表達(dá)式2和表達(dá)式3的類型不同。例輸入一個(gè)字符,判別它是否大寫(xiě)字母,如果是,將它轉(zhuǎn)換成小寫(xiě)字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。#include<iostream.h>main(){charch;cin?ch;ch=(ch>='A'&&ch<='Z')?(ch+32):ch;coutくぐ,轉(zhuǎn)換后的字符為"<<ch?endl;)此程序改寫(xiě)為if語(yǔ)句形式如何修改?Switch語(yǔ)句Switch語(yǔ)句是多分支選擇語(yǔ)句。當(dāng)然這些都可以用嵌套的if語(yǔ)句來(lái)處理,但如果分支較多,則嵌套的if語(yǔ)句層數(shù)多,程序冗長(zhǎng)而且可讀性降低。Switch語(yǔ)句直接處理多分支選擇,它的一般形式如ド:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1case常量表達(dá)式2:語(yǔ)句2case常量表達(dá)式n:語(yǔ)句ndefault!語(yǔ)句n+1}例如,要求按照考試成績(jī)的等級(jí)打印出百分制分?jǐn)?shù)段,可以用Switch語(yǔ)句實(shí)現(xiàn):Switch(grade){case'a":cout?"85~100\n";case'b':cout?"70~84\n";case'c':cout?"60~69\n";case'd':cout?"<60\n";default:cout?"error\n";)說(shuō)明:switch后面括弧內(nèi)可以是ー個(gè)“表達(dá)式”(2)當(dāng)表達(dá)式的值與某ー個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語(yǔ)句,若所有的case中的常量表達(dá)式的值都沒(méi)有與表達(dá)式的值匹配的,就執(zhí)行default后面的語(yǔ)句。(3)每一個(gè)case的常量表達(dá)式的值必須互不相同,否則就會(huì)出現(xiàn)互相矛盾的現(xiàn)象(對(duì)表達(dá)式的同?個(gè)值,有兩種或多種執(zhí)行方案)。(4)各個(gè)case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。例如,可以先出現(xiàn)“default:…”,再出現(xiàn)“case'd':…”,然后是,*case'a':…”。(5)執(zhí)行完一個(gè)case后面的語(yǔ)句后,流程控制轉(zhuǎn)移到下ー個(gè)case繼續(xù)執(zhí)行?!癱ase常量表達(dá)式”只是起語(yǔ)句標(biāo)號(hào)作用,并不是在該處進(jìn)行條件判斷。在執(zhí)行Switch語(yǔ)句時(shí),根據(jù)Switch后面表達(dá)式的值找到匹配的入口標(biāo)號(hào),就從此標(biāo)號(hào)開(kāi)始執(zhí)行下去,不再進(jìn)行判斷。(6)多個(gè)case可以共用ー組執(zhí)行語(yǔ)句,如:case'a':case'b':casecout?casecout?H>60\n";break;grade的值為’a‘、’b'或‘c'時(shí)都執(zhí)行同一組語(yǔ)句。注意此處的break語(yǔ)句。在上例中程序中未使用break語(yǔ)句,則當(dāng)表達(dá)式值為a時(shí)會(huì)依次執(zhí)行每個(gè)case后的cout語(yǔ)句,以及defualt后的cout語(yǔ)句。從而得到錯(cuò)誤的輸出結(jié)果。程序舉例例求ax2+bx+c=0方程的解。①a=0,不是二次方程。②b2-4ac=0,有兩個(gè)相等實(shí)根。③b2-4ac>0,有兩個(gè)不等實(shí)根。④b2-4ac<0I有兩個(gè)共親更根。第5章循環(huán)控制概述循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造単元。(1)用while語(yǔ)句;(2)用dowhile語(yǔ)句(3)用for語(yǔ)句。while語(yǔ)句while語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。其一般形式如下:while(表達(dá)式)語(yǔ)句當(dāng)表達(dá)式為非〇值時(shí),執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。例5.2求程序:#include<iostream.h>main()(inti,sum=0;i=l;while(i<=100){sum=sum+i;i++;)coutvv”結(jié)果為:“v<sumv<endl;c\MC:.DocumentsandSe..|B|Sj|匿果由:5050IPressanykeytocontinu叮」 ヰ需要注意:(1)循環(huán)體如果包含ー個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)。如果不加花括弧,則while語(yǔ)句的范圍只到while后面第一個(gè)分號(hào)處。(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。dowhile語(yǔ)句 特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。其一般形式為do循環(huán)體語(yǔ)句while(表達(dá)式);它是這樣執(zhí)行的:先執(zhí)行ー次指定的循環(huán)體語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”)時(shí),返回重新執(zhí)行循環(huán)體語(yǔ)句,如此反復(fù),直到表達(dá)式的值等于〇為止,此時(shí)循環(huán)結(jié)束。例5.3用dowhile語(yǔ)句求En。#include<iostream.h>main(){inti,sum=O;i=l;do{sum=sum+i;i++;)while(i<=100);cout?"結(jié)果為:"《sum?endl;)注意這兩種循環(huán)的區(qū)別。for語(yǔ)句for語(yǔ)句使用非常靈活,它完全可以代替while語(yǔ)句。for語(yǔ)句的,一般形式為for(表達(dá)式1i表達(dá)式2:表達(dá)式3)語(yǔ)句注意:當(dāng)語(yǔ)句是多條時(shí),應(yīng)用大括號(hào)引起來(lái)。它的執(zhí)行過(guò)程如下:(1)先求解表達(dá)式10(2)求解表達(dá)式2,若其值為真(值為非0),則執(zhí)行for語(yǔ)句中的指定語(yǔ)句,然后執(zhí)行ド面第(3)步。若為假(值為〇),則結(jié)束循環(huán),轉(zhuǎn)到第(5)步。(3)求解表達(dá)式3。(4)轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。(5)循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的ー個(gè)語(yǔ)句。for語(yǔ)句最簡(jiǎn)單的應(yīng)用形式也就是最易理解的如ド形式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語(yǔ)句對(duì)于以上for語(yǔ)句的一般形式也可以改寫(xiě)為while循環(huán)的形式:表達(dá)式1;while(表達(dá)式2){語(yǔ)句表達(dá)式3;)說(shuō)明:(1)for語(yǔ)句的一般形式中的“表達(dá)式ド可以省略,此時(shí)應(yīng)在for語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式1時(shí),其后的分號(hào)不能省略。(2)如果表達(dá)式2省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止地進(jìn)行下去。也就是認(rèn)為表達(dá)式2始終為真。(3)表達(dá)式3也可以省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。(4)可以省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,即只給循環(huán)條件。(5)三個(gè)表達(dá)式都可省略例:使用for循環(huán)實(shí)現(xiàn)1至U100的和#include<iostream.h>main(){inti,sum=0;for(i=l;i<=l00;i++)sum=sum+i;cout?"結(jié)果為:"<<sum?endl;)5.5循環(huán)的嵌套ー個(gè)循環(huán)體內(nèi)又包含另ー個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)。各種語(yǔ)言中關(guān)于循環(huán)的嵌套的概念都是ー樣的。三種循環(huán)(while循環(huán)、dowhile循環(huán)和for循環(huán))可以互相嵌套。例如,下面兒種都是合法的形式:⑸⑸for(;;){…while()(}|do{…for(;;)()}while();{... {for(;;)while() {...}do{do (4)while(){???}{???while(); do}while(); {...}while();…}試使用各種形式的循環(huán)嵌套寫(xiě)程序輸出九九乘法表。例使用for循環(huán)輸出九九乘法表#include<iostream.h>main(){inti,j;fbr(i=l;i<=9;i++)(for(j=l;j<=i;j++)cout?i?M*,'<<j?M=M?i*j?M”;cout?endl;輸出結(jié)果:1*1=12*1=23*1=34*1=45*1=56*1=62*2=43*2=64*2=85*2=106*2=123*3=94*3=125*3=156*3=184*4=165*4=206*4=245*5=256*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427*7=498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=815.6break語(yǔ)句和continue語(yǔ)句break語(yǔ)句可以使流程跳出Switch結(jié)構(gòu),繼續(xù)執(zhí)行Switch語(yǔ)句下面的ー個(gè)語(yǔ)句。break語(yǔ)句還可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)ド面的語(yǔ)句。如:在上面的程序中加入if(i==5)break;則程序執(zhí)行至i為5時(shí),循環(huán)就會(huì)結(jié)束。如下程序及結(jié)果。#include<iostream.h>main(){inti,j;fbr(i=l;i<=9;i++){ for(j=l;j<=i;j++)cout?i?H*H?j?n="?i*j?H°;cout?endl;if(i==5)break;))1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=25break語(yǔ)句不能用于循環(huán)語(yǔ)句和Switch語(yǔ)句之外的任何其他語(yǔ)句中。continue語(yǔ)句ー般形式為:continue;其作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。continue語(yǔ)句和break語(yǔ)句的區(qū)別是:continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。而break語(yǔ)句則是結(jié)束整個(gè)循環(huán)過(guò)程,不再判斷執(zhí)行循環(huán)的條件是否成立。若將程序修改為如下:則結(jié)果發(fā)生改變。#include<iostream.h>main(){intij;for(i=l;i<=9;i++){ if(i==5)continue;for(j=l;j<=i;j++)cout?i?M*M<<j?,,=',?i*j?Mn;cout?endl;1*1=12*1=22*2=43*1=33*2=63*3=94*1=46*1=64*2=86*2=124*3=126*3=184*4=166*4=246*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427*7=498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*B=729*9=81若程序修改為如下形式輸出結(jié)果是什么樣的呢????#include<iostream.h>main(){inti,j;for(i=l;iv=9;i++){forG=l;j<=i;j++)cout?i?M*,,?j?,,=*,?i*j?Hcout?endl;if(i==5)continue;第6章數(shù)組ー維數(shù)組的定義和引用ー維數(shù)組的定義ー維數(shù)組的定義方式為 類型說(shuō)明符數(shù)組名[常量表達(dá)式];例如: int a [10]: 即:inta[10];它表示數(shù)組名為a,此數(shù)組有10個(gè)元素,可存放10個(gè)整型數(shù)據(jù)。說(shuō)明:(1)數(shù)組名定名規(guī)則和變量名相同,遵循標(biāo)識(shí)符定名規(guī)則。(2)數(shù)組名后是用方括弧括起來(lái)的常量表達(dá)式,不能用圓括弧;(3)常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組長(zhǎng)度。(4)常量表達(dá)式中可以包括常量和符號(hào)常量,不能包含變量。ー維數(shù)組元素的引用數(shù)組必須先定義,然后使用。數(shù)組元素的表示形式為 數(shù)組名[下標(biāo)] 數(shù)組的下標(biāo)從〇開(kāi)始。下標(biāo)可以是整型常量或整型表達(dá)式。例如:a[0]=a[5]+a[7]-a[2*3]ー維數(shù)組的初始化對(duì)數(shù)組元素的初始化可以用以下方法實(shí)現(xiàn):(1)在定義數(shù)組時(shí)對(duì)數(shù)組元素賦以初值。例如:inta[10]={0,1,2,3,4,5,6,7,8,9);(2)可以只給一部分元素賦值。例如:inta[10]={0,1,2,3,4};(3)如果想使一個(gè)數(shù)組中全部元素值為0,可以寫(xiě)成inta[10]={0,0,0,0,0,0,0,0,0,0};效果同:inta[10]={0};(4)在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度。例如:inta[]={1,2,3,4,5):此數(shù)組中有5個(gè)元素。ー維數(shù)組程序舉例例定義一個(gè)數(shù)組,存放10個(gè)學(xué)生數(shù)據(jù),由鍵盤(pán)輸入10學(xué)生成績(jī),求最高分,最低分和平均分。#include<iostream.h>main(){ floatscoref10],sum,ave,max,min;inti;coutvv"請(qǐng)輸入10個(gè)學(xué)生成績(jī)數(shù)據(jù):M?endl;for(i=0;i<=9;i++)cin?score[i];max=score[0];min=score[0];sum=score[0];fbr(i=l;i<=9;i++){if(max<score[i])max=score[i];if(min>score[i])min=score[i];sum=sum+score[i];)ave=sum/10;coutvv"最高分:n?max?endlvv"最低分:"vvminvvendlvv”平均分:"wavevvendl;請(qǐng)輸入:L。個(gè)學(xué)生成績(jī)數(shù)據(jù):678909966559778100100100874.7ニ維數(shù)組的定義二維數(shù)組定義的一般形式為 類型說(shuō)明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]。例如: float a[3] [4]5即:floata[3][4];定義a為3義4(3行4歹リ)的數(shù)組,注意不能寫(xiě)成floata[3,4];對(duì)二維數(shù)組采用這樣的定義方式,使我們可以把二維數(shù)組看作是ー種特殊的ー維數(shù)組:它的元素又是ー個(gè)ー維數(shù)組。例如,可以把a(bǔ)看作是ー個(gè)ー維數(shù)組,它有3個(gè)元素:a[〇]、a[l]、a[2],每個(gè)元素又是ー個(gè)包含4個(gè)元素的ー維數(shù)組。有了二維數(shù)組的基礎(chǔ),再掌握多維數(shù)組是不困難的,定義三維數(shù)組的方法是floata[2][3][4];ニ維數(shù)組的引用二維數(shù)組的元素的表示形式為 數(shù)組名[下標(biāo)][下標(biāo)]如a[2][3]〇下標(biāo)可以是整型表達(dá)式,如a[2-1][2*2-1]〇不要寫(xiě)成a[2,3],a[2-1,2*2-1]形式。數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值,例如:b[1][2]=a[2][3]/2在使用數(shù)組元素時(shí),應(yīng)該注意下標(biāo)值應(yīng)在一定義的數(shù)組大小的范圍內(nèi)。常出現(xiàn)的錯(cuò)誤是inta[3]⑷;a[3][4]=3;定義a為3X4的數(shù)組,它可用的行下標(biāo)值最大為2,列下標(biāo)值最大為3。用a[3][4J超過(guò)了數(shù)組的范圍。請(qǐng)讀者嚴(yán)格區(qū)分在定義數(shù)組時(shí)用的a[3][4I和引用元素時(shí)的a[3][4]的區(qū)別。前者a[3][4l用來(lái)定義數(shù)組的維數(shù)和各維的大小,后者a[3][4j中的3和4是下標(biāo)值,a[3][4]代表某ー個(gè)元素。二維數(shù)組的初始化可以用下面的方法對(duì)二維數(shù)組初始化:(1)分行給ニ維數(shù)組賦初值。如inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12));(2)可以將所有數(shù)據(jù)寫(xiě)在ー個(gè)花括弧內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12);(3)可以對(duì)部分元素賦初值。inta[3][4]={{1},{5},{9}};inta[3][4]={{1}.{0,6},{0,0,11}};(4)如果對(duì)全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};與下面的定義等價(jià):inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12);這樣的寫(xiě)法,能通知編譯系統(tǒng):數(shù)組共有3行。數(shù)組各元素為二維數(shù)組程序舉例例將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二維數(shù)組中。字符數(shù)組字符數(shù)組的定義定義方法與前面介紹的類似。例如:chare[10];定義c為字符數(shù)組,包含10個(gè)元素。也可以用整型數(shù)值來(lái)存放字符型數(shù)據(jù),因此上面第一行也可以改用:intc[10];/*合法,但浪費(fèi)存儲(chǔ)空間?/c[0]=T; c[1]="; c[2]='a'; c[3]='m';c[4]=''; c[5]=h'; c[6]="a'; c[7]='p';c[8]='p';c[9]=y;逐一為數(shù)組中的每個(gè)元素賦值。字符數(shù)組的初始化對(duì)字符數(shù)組初始化,最容易理解的方式是逐個(gè)字符賦給數(shù)組中各元素。如:charc[10]={T;','a','m','','h','a','p','p','y'};把10個(gè)字符分別賦給c[0]到。[9]10個(gè)元素。此時(shí)數(shù)組用cout輸出時(shí)可能會(huì)輸出錯(cuò)誤的結(jié)果。如果花括弧中提供的初值個(gè)數(shù)(即字符個(gè)數(shù))大于數(shù)組長(zhǎng)度,則按語(yǔ)法錯(cuò)誤處理。如果初值個(gè)數(shù)小于數(shù)組長(zhǎng)度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動(dòng)定為空字符(即、〇,)。如:chare[10]={'c',",P',Y,'o','g','r','a','m');如果提供的初值個(gè)數(shù)與預(yù)定的數(shù)組長(zhǎng)度相同,在定義時(shí)可以省略數(shù)組長(zhǎng)度,系統(tǒng)會(huì)自動(dòng)根據(jù)初值個(gè)數(shù)確定數(shù)組長(zhǎng)度。如: chare[]={T,",'a','m',",'h','a','p','p','y'};數(shù)組e的長(zhǎng)度自動(dòng)定為10。用這種方式可以不必人工去數(shù)字符的個(gè)數(shù),尤其在賦初值的字符個(gè)數(shù)較多時(shí),比較方便。字符串和字符串結(jié)束標(biāo)志將字符串作為字符數(shù)組來(lái)存放。"字符串結(jié)束標(biāo)志'以字符‘、?!硎?。用cout輸岀字符數(shù)組中的字符時(shí),遇到‘、0’時(shí)輸出オ會(huì)停止。比如:main(){charc[10]={,r,*'/a','m','cout?c?endl;)如上程序得到的輸出結(jié)果為:卜amhappy燙?!し即由于c數(shù)組中沒(méi)有字符串結(jié)束標(biāo)志,輸出完數(shù)組中的字符后又輸出了一些未知的字符。如果有一個(gè)字符串,其中第10個(gè)字符為‘、?!?則此字符串的有效字符為9個(gè)。也就是說(shuō),在遇到字符''0'時(shí),表示字符串結(jié)束,由它前面的字符組成字符串。系統(tǒng)對(duì)字符串常量也自動(dòng)加一個(gè)''〇’作為結(jié)束符。例如“eProgram”共有9個(gè)字符,但在內(nèi)存中占10個(gè)字節(jié),最后一個(gè)字節(jié)''0'是由系統(tǒng)自動(dòng)加上的。說(shuō)明:‘'0'代表ASCII碼為〇的字符,從ASCII碼表中可以查到,ASCH碼為0的字符不是一個(gè)可以顯示的字符,而是ー個(gè)“空操作符”,即它什么也不做。用它來(lái)作為字符串結(jié)束標(biāo)志不會(huì)產(chǎn)生附加的操作或增加有效字符,只起一個(gè)供辨別的標(biāo)志。可以用字符串常量來(lái)使字符數(shù)組初始化。例如ehare口={"Iamhappy");也可以省略花括弧,直接寫(xiě)成chare[]="1amhappy";如此初始化的數(shù)組c中比字符個(gè)數(shù)多ー個(gè)''0',字符數(shù)組并不要求它的最后ー個(gè)字符為''0',甚至可以不包含''0'。像以下這樣寫(xiě)完全是合法的:chare[5]={'c',V,'i','n','a');注意:如果ー個(gè)字符數(shù)組中包含ー個(gè)以上‘'0',則遇第一個(gè)‘'〇'時(shí)輸出就結(jié)束。第7章函數(shù)7.I概述ー個(gè)較大的程序一般應(yīng)分為若干個(gè)程序模塊,每ー個(gè)模塊用來(lái)實(shí)現(xiàn)ー個(gè)特定的功能。所有的高級(jí)語(yǔ)言中都有子程序這個(gè)概念,用子程序?qū)崿F(xiàn)模塊的功能。子程序的作用是由函數(shù)完成的。ー個(gè)C++程序可由一個(gè)主函數(shù)和若干個(gè)函數(shù)構(gòu)成。由主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用。同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次。通俗的講,函數(shù)可理解為用ー個(gè)函數(shù)名字,代替了一些程序代碼,實(shí)現(xiàn)了某個(gè)特定功能。定義好函數(shù)后,若要使用該功能則調(diào)用函數(shù)即可完成。從而可以使程序變得簡(jiǎn)短,淸晰。先舉ー個(gè)簡(jiǎn)單的函數(shù)調(diào)用的例子,下面程序的功能是輸出一個(gè)三角形。#include<iostream.h>main(){inti,j;for(i=l;i<=10;i++){ for(j=l;j<=10-i;j++)coutvv"”;for(j=1;j<=2*i-l;j++)cout?M*M;cout?endl;)其中循環(huán)語(yǔ)句中的10表示輸出三角形的行數(shù)。若要實(shí)現(xiàn)輸出2個(gè)三角形,且行數(shù)不一樣則可按如下程序:#include<iostream.h>main(){inti,j;for(i=l;i<=10;i++){ for(j=l;j<=10-i;j++)cout?HH;for(j=l;j<=2*i-l;j++)cout?,,*M;cout?endl;)fDr(i=l;i<=6;i++){ for(j=l;j<=6-i;j++)cout?nH;for(j=l;j<=2*i-l;j++)cout?H*M;cout?endl;})山此看出功能相同或相似的代碼被車(chē)復(fù)寫(xiě)了兩遍,如此會(huì)使得程序冗長(zhǎng)。故而引入函數(shù)定義。利用一個(gè)名字,按照一定格式定義,使得這個(gè)名字代替一段代碼,需要重復(fù)使用這些相似代碼時(shí)可使用函數(shù)

調(diào)用實(shí)現(xiàn)。而其可以通過(guò)參數(shù)實(shí)現(xiàn)代碼相同而處理的數(shù)據(jù)不同。(比如此例中行數(shù)不一樣)。利用函數(shù)實(shí)現(xiàn)此程序:#include<iostream.h>voidprintTriangle(intn)(血i,j;fbr(i=l;i<=n;i++){ for(j=l;j<=n-i;j++)cout?MH;for(j=1;j<=2*i-l;j++)cout?',*H;cout?endl;)main(){printTriangle(lO):〃輸出ー個(gè)10行的三角形printTriangle(6);〃輸出ー個(gè)6行的三角形}該程序執(zhí)行結(jié)果同上一個(gè)程序相同。說(shuō)明:ー個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)組成。ー個(gè)程序由一個(gè)或多個(gè)源程序文件組成。C++程序的執(zhí)行從main函數(shù)開(kāi)始,調(diào)用其他函數(shù)后流程回到main函數(shù),在main函數(shù)中結(jié)束整個(gè)程序的運(yùn)行。main函數(shù)是系統(tǒng)定義的。(4)所有函數(shù)都是平行的,即在定義函數(shù)時(shí)是互相獨(dú)立的,ー個(gè)函數(shù)并不從屬于另ー函數(shù),即函數(shù)不能嵌套定義,函數(shù)間可以互相調(diào)用,但不能調(diào)用main函數(shù)。(5)從用戶使用的角度看,函數(shù)有兩種:①標(biāo)準(zhǔn)函數(shù),即庫(kù)函數(shù)。這是由系統(tǒng)提供的,用戶不必自己定義這些函數(shù),可以直接使用它們。②用戶自己定義的函數(shù)。用以解決用戶的專門(mén)需要。(6)從函數(shù)的形式看,函數(shù)分兩類:①無(wú)參函數(shù)。②有參函數(shù)。7.2函數(shù)定義的一般形式.無(wú)參函數(shù)的定義形式類型標(biāo)識(shí)符函數(shù)名〇(聲明部分語(yǔ)句}類型標(biāo)識(shí)符函數(shù)名〇此形式稱為函數(shù)首部,打括號(hào)及其里邊的部分為函數(shù)體。ー個(gè)函數(shù)定義是由函數(shù)首部和函數(shù)體構(gòu)成的。函數(shù)體可以為空,但打括號(hào)不可省略。例如:函數(shù)名后的括號(hào)內(nèi)不寫(xiě)參數(shù),則為無(wú)參函數(shù),調(diào)用時(shí)也不可寫(xiě)參數(shù)。voidprintTriangle(){intij;for(i=l;i<=10;i++){ for(j=l;j<=10-i;j++)cout?Mfor(j=l;j<=2*i-l;j++)cout?M*M;cout?endl;))該函數(shù)的功能是輸出ー個(gè)10行的三角形。2.有參函數(shù)定義的一般形式類型標(biāo)識(shí)符函數(shù)名(形式參數(shù)表列)(聲明部分語(yǔ)句}例如:如下函數(shù)名后的括號(hào)內(nèi)寫(xiě)了參數(shù),則屬于又參函數(shù)。調(diào)用時(shí)也必須寫(xiě)上參數(shù)。voidprintTriangle(intn){inti,j;fbr(i=l;i<=n;i++){ for(j=l;j<=n-i;j++)cout?nH;for(j=l;j<=2*i-l;j++)cout?M*n;cout?endl;})如上兩個(gè)函數(shù)定義時(shí)指定為void型函數(shù),表示這樣的函數(shù)調(diào)用后沒(méi)有返回結(jié)果。函數(shù)的返回值表示函數(shù)調(diào)用完成后得到的ー個(gè)值。上例中的函數(shù)只是輸出ー個(gè)三角形,不需要什么結(jié)果,所以不需要有返回值。而有些函數(shù)是需要有返回值的,后邊講解。如果在定義函數(shù)時(shí)不指定函數(shù)類型,系統(tǒng)會(huì)隱含指定函數(shù)類型為int型。以有“空函數(shù)”它的形式為類型說(shuō)明符函數(shù)名(){)例如:dummy(){}調(diào)用此函數(shù)時(shí),什么工作也不做,沒(méi)有任何實(shí)際作用。函數(shù)參數(shù)和函數(shù)的值形式參數(shù)和實(shí)際參數(shù)在調(diào)用函數(shù)時(shí),大多數(shù)情況下,主調(diào)函數(shù)和被調(diào)用函數(shù)之間有數(shù)據(jù)傳遞關(guān)系。這就是前面提到的有參函數(shù)。前面已提到:在定義函數(shù)時(shí)函數(shù)名后面括弧中的變量名稱為“形式參數(shù)”(簡(jiǎn)稱“形參”),在主調(diào)函數(shù)中調(diào)用ー個(gè)函數(shù)時(shí),函數(shù)名后面括弧中的參數(shù)(可以是一個(gè)表達(dá)式)稱為“實(shí)際參數(shù)”(簡(jiǎn)稱“實(shí)參”)。注意:形參是函數(shù)定義時(shí),函數(shù)假定要處理的數(shù)據(jù)。實(shí)參是函數(shù)調(diào)用時(shí),寒暑真正要處理的數(shù)據(jù)。voidprintTriangle(intn){intij;fbr(i=l;i<=n;i++){ for(j=l;j<=n-i;j++)cout?MH;for(j=1;j<=2*i-l;j++)cout?,f*M;cout?endl;))在此函數(shù)定義時(shí),我們不知道要輸出的三角形是多少行的,所以我們假定為n行。n就是ー個(gè)形參。main(){printTriangle(lO):〃此時(shí)使用函數(shù)來(lái)輸出ー個(gè)10行的三角形,此時(shí)叫做函數(shù)調(diào)用,10就是實(shí)參。printTriangle(6); 〃此時(shí)使用函數(shù)來(lái)輸出ー個(gè)6行的三角形,此時(shí)叫做函數(shù)調(diào)用,6就是實(shí)參。intx;cin?x;printTriangle(x);〃此時(shí)函數(shù)調(diào)用輸出ー個(gè)由用戶輸入的x值確定行數(shù)的三角形。}關(guān)于形參與實(shí)參的說(shuō)明:(1)在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時(shí),它們并不占內(nèi)存中的存儲(chǔ)單元。只有在發(fā)生函數(shù)調(diào)用時(shí),函數(shù)max中的形參オ被分配內(nèi)存單元。在調(diào)用結(jié)束后,形參所占的內(nèi)存単元也被釋放。⑵實(shí)參可以是常量、變量或表達(dá)式,如:prinlTriangle(6);printTriangle(x);/但要求它們有確定的值。在調(diào)用時(shí)將實(shí)參的值賦給形參。⑶在被定義的函數(shù)中,必須指定形參的類型。如上程序中的這一行:voidprintTriangle(intn)指定n的類型。(4)實(shí)參與形參的類型應(yīng)相同或賦值兼容。形參n是整型的,那么實(shí)參類型必須與它類型相同或賦值兼容。(5)實(shí)參變量對(duì)形參變量的數(shù)據(jù)傳遞都是值傳遞或地址傳遞的。值傳遞時(shí),在調(diào)用函數(shù)時(shí),給形參分配存儲(chǔ)單元,并將實(shí)參對(duì)應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單元仍保留并維持原值。因此,在執(zhí)行一個(gè)被調(diào)用函數(shù)時(shí),形參的值如果發(fā)生改變,并不會(huì)改變主調(diào)函數(shù)的實(shí)參的值。(6)函數(shù)定義在函數(shù)調(diào)用之后的,需要在函數(shù)調(diào)用之前對(duì)函數(shù)進(jìn)行聲明。舉例說(shuō)明函數(shù)的值傳遞方式及聲明語(yǔ)句格式。#include<iostream.h>doublefact(intn); 〃此處為函數(shù)的聲明。也可寫(xiě)作:doublefact(int);main(){intx,result;coutvv”請(qǐng)輸入x值:"?endl;cin?x;result=fact(x);〃此處為函數(shù)的調(diào)用coutvv"計(jì)算得到的階乘為:H?result?endl;}〃以下為函數(shù)的定義,由于該函數(shù)需要得到ー個(gè)計(jì)算得結(jié)果,故而將函數(shù)類型設(shè)置為doubledoublefact(intn){inti;doubler=1;for(i=l;i<=n;i++)r=r*i;returnr;} 請(qǐng)輸入X值:程序執(zhí)行結(jié)果:計(jì)算得到的階乘為:120此程序的執(zhí)行過(guò)程為:(此過(guò)程非常重要!!!請(qǐng)認(rèn)真理解!!)程序從main函數(shù)開(kāi)始,首先為變量x和result分配內(nèi)存,執(zhí)行coutvv”請(qǐng)輸入x值:"<<endl;使得屏幕上顯示“請(qǐng)輸入x值:"字樣,然后執(zhí)行cin?x;等待用戶輸入,當(dāng)用戶從鍵盤(pán)上輸入5并按回車(chē),則5被存入x變量對(duì)應(yīng)的內(nèi)存中,接著執(zhí)行result=fact(x);此語(yǔ)句是函數(shù)的調(diào)用,此時(shí)轉(zhuǎn)去執(zhí)行fact函數(shù),在fact函數(shù)要執(zhí)行時(shí),由于fact函數(shù)中要使用變量i和r以及形參n,則首先為i,r,n分配內(nèi)存,然后將實(shí)參x的值賦值給形參!!。此時(shí)執(zhí)行fact函數(shù)中的循環(huán)語(yǔ)句,循環(huán)語(yǔ)句執(zhí)行完畢后計(jì)算得到的結(jié)果就在r變量中,此時(shí)在執(zhí)行returnr;語(yǔ)句使得r中存放的數(shù)據(jù)作為整個(gè)函數(shù)的結(jié)果,此時(shí)就使得該語(yǔ)句執(zhí)行完畢result=fact(x);(即將函數(shù)的結(jié)果存入了result變量中)。此處注意:當(dāng)fact函數(shù)中執(zhí)行完returnr;語(yǔ)句后,fact函數(shù)所使用的變量i,r,n所占用內(nèi)存會(huì)被釋放,即這三個(gè)變量消失了。main函數(shù)中result=fact(x);執(zhí)行完后,result變量中就存放了由fact函數(shù)計(jì)算得到的x的階乘的值了,再由cout<<"計(jì)算得到的階乘為:"<<result?endl;輸出這個(gè)結(jié)果。然后main函數(shù)也執(zhí)行完畢了,此時(shí)main函數(shù)中使用的變量x,result所占內(nèi)存被釋放。函數(shù)的返回值有時(shí)候我們希望通過(guò)函數(shù)調(diào)用使主調(diào)函數(shù)能得到ー個(gè)確定的值(比如上例中我們調(diào)用fact函數(shù)想得到ー個(gè)階乘),這就是函數(shù)的返回值。通過(guò)賦值語(yǔ)句可以將這個(gè)函數(shù)的值賦給某個(gè)變量。下面對(duì)函數(shù)值作一些說(shuō)明:(1)函數(shù)的返回值是通過(guò)函數(shù)中的return語(yǔ)句獲得的。return語(yǔ)句將被調(diào)用函數(shù)中的ー個(gè)確定值帶回主調(diào)函數(shù)中去。如果需要從被調(diào)用函數(shù)帶回ー個(gè)函數(shù)值(供主調(diào)函數(shù)使用),被調(diào)用函數(shù)中必須包含return語(yǔ)句。如果不需要從被調(diào)用函數(shù)帶回函數(shù)值可以不要return語(yǔ)句。若函數(shù)不需要得到ー個(gè)函數(shù)值時(shí)ー般將函數(shù)定義為void型函數(shù),此時(shí)在函數(shù)體內(nèi)一般不使用return語(yǔ)句,若使用時(shí)return語(yǔ)句后不得出現(xiàn)表達(dá)式,可使用return;形式。ー個(gè)函數(shù)中可以有一個(gè)以上的return語(yǔ)句,執(zhí)行到哪ー個(gè)return語(yǔ)句,哪ー個(gè)語(yǔ)句起作用。return語(yǔ)句后面的括弧也可以不要,如returnz;它與"return(z);”等價(jià)。return后面的值可以是ー個(gè)表達(dá)式。intmax(intx,inty){return(x>y?x:y); )這樣的函數(shù)體更為簡(jiǎn)短,只用ー個(gè)return語(yǔ)句就把求值和返回都解決了。(2)函數(shù)值的類型。既然函數(shù)有返回值,這個(gè)值當(dāng)然應(yīng)屬于某ー個(gè)確定的類型,應(yīng)當(dāng)在定義函數(shù)時(shí)指定函數(shù)值的類型。例如:intmax(floatx,floaty)/Z函數(shù)值為整型charletter(charcl,charc2)/Z函數(shù)值為字符型doublemin(intx,inty) 〃函數(shù)值為雙精度型凡不加類型說(shuō)明的函數(shù),一律自動(dòng)按整型處理。(3)在定義函數(shù)時(shí)對(duì)函數(shù)值說(shuō)明的類型一般應(yīng)該和return語(yǔ)句中的表達(dá)式類型一致。如果函數(shù)值的類型和return語(yǔ)句中表達(dá)式的值不一致,則以函數(shù)類型為準(zhǔn)。對(duì)數(shù)值型數(shù)據(jù),可以自動(dòng)進(jìn)行類型轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。(4)如果定義函數(shù)時(shí)給出函數(shù)類型且非void型,當(dāng)被調(diào)用函數(shù)中沒(méi)有return語(yǔ)句時(shí),函數(shù)的返回值是ー個(gè)不確定的值。(5)為了明確表示函數(shù)“不帶回值”,可以用“void”將函數(shù)定義為“無(wú)類型”(或稱“空類型”)函數(shù)。此時(shí)禁止使用被調(diào)用函數(shù)的返回值。函數(shù)的調(diào)用函數(shù)調(diào)用的一般形式函數(shù)調(diào)用的一般形式為函數(shù)名(實(shí)參表列);如果是調(diào)用無(wú)參函數(shù),則沒(méi)有“實(shí)參表列”,但括弧不能省略。如果實(shí)參表列包含多個(gè)實(shí)參,則各參數(shù)間用逗號(hào)隔開(kāi)。實(shí)參與形參的個(gè)數(shù)應(yīng)相等,類型應(yīng)一致。實(shí)參與形參按順序?qū)?yīng),ーー傳遞數(shù)據(jù)。函數(shù)調(diào)用的方式按函數(shù)在程序中出現(xiàn)的位置來(lái)分,可以有以下三種函數(shù)調(diào)用方式:.函數(shù)語(yǔ)句把函數(shù)調(diào)用作為ー個(gè)語(yǔ)句。這時(shí)不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。printTriangle(lO);printTriangle(6);.函數(shù)表達(dá)式函數(shù)出現(xiàn)在ー個(gè)表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時(shí)要求函數(shù)帶回ー個(gè)確定的值以參加表達(dá)式的運(yùn)算。例如:result=fact(x);.函數(shù)作參數(shù)#include<iostream.h>intmax(inta,intb);main(){intx,y,z,result;coutcv"請(qǐng)輸入x,y值:"《endl;cin?x?y?z;result=max(max(x,y),z);coutvv"最大值為:H?result?endl;)intmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;函數(shù)調(diào)用作為ー個(gè)函數(shù)的實(shí)參。例如:result=max(max(x,y),z);其中max(x,y)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實(shí)參。函數(shù)調(diào)用作為函數(shù)的參數(shù),實(shí)質(zhì)上也是函數(shù)表達(dá)式形式調(diào)用的ー種,因?yàn)楹瘮?shù)的參數(shù)本來(lái)就要求是表達(dá)式形式。對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型(1)首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫(kù)函數(shù)或用戶自己定義的函數(shù))。(2)如果使用庫(kù)函數(shù),一般還應(yīng)該在本文件開(kāi)頭用#include命令將調(diào)用有關(guān)庫(kù)函數(shù)時(shí)所需用到的信息“包含”到本文件中來(lái)。例如,前面用到的#include<math.h>其中“math.hn是一個(gè)“頭文件’’。此文件中包含了庫(kù)函數(shù)sqrt()(求平方根)。(3)如果使用用戶自己定義的函數(shù),而且該函數(shù)與調(diào)用它的函數(shù)(即主調(diào)函數(shù))在同一個(gè)文件中,一般還應(yīng)該在主調(diào)函數(shù)中對(duì)被調(diào)用的函數(shù)作聲明。(4)在函數(shù)聲明中也可以不寫(xiě)形參名,而只寫(xiě)形參的類型。函數(shù)原型的一般形式為1)函數(shù)類型函數(shù)名(參數(shù)類型1,參數(shù)類型2……)2)函數(shù)類型函數(shù)名(參數(shù)類型1參數(shù)名1,參數(shù)類型2參數(shù)名2……)(5)如果己在所有函數(shù)定義之前,在函數(shù)的外部已做了函數(shù)聲明,則在各個(gè)主調(diào)函數(shù)中不必對(duì)所調(diào)用的函數(shù)再作聲明。inti(float,float);main(){-}/?不必聲明它所調(diào)用的函數(shù)?/charletter(charc1,charc2)/?定義!etter函數(shù)?/{...}floatf(floatx,floaty)/?定義f函數(shù)?/{...}inti(floatj,floatk)/?定義i函數(shù)?/{...}函數(shù)的嵌套調(diào)用C++語(yǔ)言的函數(shù)定義都是互相平行、獨(dú)立的,也就是說(shuō)在定義函數(shù)時(shí),ー個(gè)函數(shù)內(nèi)不能包含另ー個(gè)函數(shù),即不能嵌套定義函數(shù),但可以嵌套調(diào)用函數(shù),也就是說(shuō),在調(diào)用ー個(gè)函數(shù)的過(guò)程中,又調(diào)用另ー個(gè)函數(shù)。voidfl();voidf2();上圖表示的是兩層嵌套(連main函數(shù)共3層函數(shù)),其執(zhí)行過(guò)程是:(1)執(zhí)行main函數(shù)的開(kāi)頭部分;(2)遇函數(shù)調(diào)用fl函數(shù)的調(diào)用語(yǔ)句,流程轉(zhuǎn)去fl函數(shù);(3)執(zhí)行fl函數(shù)的開(kāi)頭部分;(4)遇調(diào)用f2函數(shù)的調(diào)用語(yǔ)句,流程轉(zhuǎn)去函數(shù)f2:(5)執(zhí)行f2函數(shù),如果再無(wú)其他嵌套的函數(shù),則完成f2函數(shù)的全部操作;(6)返回fl中調(diào)用f2函數(shù)的地方;(7)繼續(xù)執(zhí)行fl函數(shù)中尚未執(zhí)行的部分,直到fl函數(shù)結(jié)束;(8)返回main函數(shù)中調(diào)用fl函數(shù)處;(9)繼續(xù)執(zhí)行main函數(shù)的剩余部分直到結(jié)束。7.6數(shù)組作為函數(shù)參數(shù)前面已經(jīng)介紹了可以用變量作函數(shù)參數(shù),此外,數(shù)組元素也可以作函數(shù)實(shí)參,其用法與變量相同。數(shù)組名也可以作實(shí)參和形參,傳遞的是整個(gè)數(shù)組。.數(shù)組元素作函數(shù)實(shí)參變量做實(shí)參時(shí)數(shù)據(jù)存放在變量對(duì)應(yīng)的內(nèi)存空間中,數(shù)組元素在內(nèi)存中也對(duì)應(yīng)ー個(gè)內(nèi)存空間,也可以存放數(shù)據(jù),因此數(shù)組元素當(dāng)然可以作為函數(shù)的實(shí)參,與用變量作實(shí)參效果ー樣。#include<iostream.h>intmax(inta,intb);main(){intx[3]/esult;coutvv”請(qǐng)輸入x,y值:“vvendl;cin?x[0]?x[lJ?x[2J;result=max(max(x[O],x[l]),x[2]);coutvv"最大值為:"?result?endl;)請(qǐng)輸入x-y請(qǐng)輸入x-y值:24{intc;if(a>b)c=a;最大值為:6

elsec=b;returnc;.數(shù)組名可作函數(shù)參數(shù)可以用數(shù)組名作函數(shù)參數(shù),此時(shí)實(shí)參與形參都應(yīng)用數(shù)組名。例有一個(gè)一維數(shù)組score#include<iostream.h>floataverage(floata[10]){inti;floatr,sum=a[0];for(i=l;i<10;i++)sum=sum+a[i];r=sum/10;retum(r);有例有一個(gè)一維數(shù)組score#include<iostream.h>floataverage(floata[10]){inti;floatr,sum=a[0];for(i=l;i<10;i++)sum=sum+a[i];r=sum/10;retum(r);,內(nèi)放10個(gè)學(xué)生成績(jī),求平均成績(jī)。main(){ floatscore[10J,aver;inti;coutvv”請(qǐng)輸入10個(gè)成績(jī)"vvendl;for(i=0;i<10;i++)cin?score[i];aver=average(score);coutvv”平均分是:n?aver?endl;)說(shuō)明:(1)用數(shù)組名作函數(shù)參數(shù),應(yīng)該在主調(diào)函數(shù)和被調(diào)用函數(shù)分別定義數(shù)組,例中a是形參數(shù)組名,score是實(shí)參數(shù)組名,分別在其所在函數(shù)中定義,不能只在一方定義。(2)實(shí)參數(shù)組與形參數(shù)組類型應(yīng)一致(都為float型),如不一致,結(jié)果將出錯(cuò)。(3)在被調(diào)用函數(shù)中聲明了形參數(shù)組的大小為!0,但在實(shí)際上,指定其大小是不起任何作用的,因?yàn)镃++編譯對(duì)形參數(shù)組大小不做檢查,只是將實(shí)參數(shù)組的首地址傳給形參數(shù)組。score[n]和a[n]指的是同一單元。(4)形參數(shù)組也可以不指定大小,在定義數(shù)組時(shí)在數(shù)組名后面跟ー個(gè)空的方括弧,為了在被調(diào)用函數(shù)中處理數(shù)組元素的需要,可以另設(shè)ー個(gè)參數(shù),傳遞數(shù)組元素的個(gè)數(shù)。可改寫(xiě)為:#include<iostream.h>floataverage(floata[],intn){#include<iostream.h>floataverage(floata[],intn){inti;floatr,sum=a[0J;for(i=l;i<n;i++)sum=sum+a[i];r=sum/n;retum(r);){ floatscore[10],aver;inti;coutvv”請(qǐng)輸入10個(gè)成績(jī)"vvendl;for(i=0;i<10;i++)cin?score[i];aver=average(score,10);coutvv”平均分是:,,?aver?endl;}(5)最后應(yīng)當(dāng)說(shuō)明一點(diǎn):用數(shù)組名作函數(shù)實(shí)參時(shí),不是把數(shù)組內(nèi)元素的值傳遞給形參,而是把實(shí)參數(shù)組在內(nèi)存中對(duì)應(yīng)的起始地址傳遞給形參數(shù)組,這樣兩個(gè)數(shù)組就共占同一段內(nèi)存單元。見(jiàn)下圖假設(shè)將形參數(shù)組看作a,是參數(shù)組看作b,若數(shù)組a的起始地址為1000,b數(shù)組的起始地址也是1000,顯然,a和b同占一段內(nèi)存單元,a[〇]與b[〇]同占ー個(gè)單元……。由此可以看到,形參數(shù)組中各元素的值如發(fā)生變化會(huì)使實(shí)參數(shù)組元素的值同時(shí)發(fā)生變化。a[〇]a[l]a[2]a[3]a⑷a[5]a「6]a[7]a[8]a[9]起始皿1000I2I4I6I8I10I12I14I16I18I20b[01b[l]b[2]b[3]b[4]b[5]b[6コb[7]b[8]b[9]例如:實(shí)現(xiàn)先為每個(gè)成績(jī)都加10分然后再求平均分。#include<iostream.h>floataverage(floata[],intn){inti;a[0]=a[0]+10;#include<iostream.h>floataverage(floata[],intn){inti;a[0]=a[0]+10;floatr,sum=a[0J;fbr(i=l;i<n;i++){ a[i]=a[i]+10;sum=sum+a[i];)r=sum/n;return(r);}{floatscore[101,aver;inti;couivv”請(qǐng)輸入10個(gè)成纟責(zé)"vvendl;for(i=0;i<10;i++)cin?score[i];aver=average(score,10);coutvv”平均分是:u?aver?endl;cout?M加分后的成績(jī)?yōu)?“vvendl;for(i=0;i<=9;i++)coutvvscore[i]vv"”;cout?endl;)請(qǐng)輸入]。不成績(jī)55435667535150776360平均分是:67.5加分后的成績(jī)?yōu)?655366776361608773707.7局部變量和全局變量局部變量在ー個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是說(shuō)只有在本函數(shù)內(nèi)才能使用它們,在此函數(shù)以外是不能使用這些變量的。這稱為“局部變量”。(1)主函數(shù)main中定義的變量也只在主函數(shù)中有效,主函數(shù)也不能使用其他函數(shù)中定義的變量。(2)不同函數(shù)中可以使用相同名字的變量,它們代表不同的對(duì)象,互不干擾。(3)形式參數(shù)也是局部變量。(4)在ー個(gè)函數(shù)內(nèi)部,可以在復(fù)合語(yǔ)句中定義變量,這些變量只在本復(fù)合語(yǔ)句中有效,這種復(fù)合語(yǔ)句也可稱為“分程序”或“程序塊エ全局變量在函數(shù)內(nèi)定義的變量是局部變量而在函數(shù)之外定義的變量稱為外部變量,外部變量是全局變量(也稱全程變量)。全局變量可以為本文件中其他函數(shù)所共用。它的有效范圍為從定義變量的位置開(kāi)始到本源文件結(jié)束。如:intp=l,q=5;//外部變量floatfl(inta)〃定義函數(shù)fl{intb,c;charc1,c2; 〃外部變量charf2(intx,inty)〃定義函數(shù){inti,j;main(){intm,n;p、q、cl、c2都是全局變量,但它們的作用范圍不同,在main函數(shù)和f2函數(shù)中可以使用全局變量p、q、cl、c2,但在函數(shù)fl中只能使用全局變量p、q,而不能使用cl和c2。在ー個(gè)函數(shù)中既可以使用本函數(shù)中的局部變量,又可以使用有效的全局變量。說(shuō)明:如果在同一個(gè)源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量被“屏蔽”,即它不起作用。如:例外部變量與局部變量同名。inta=3,b=5; //a,b為外部變量max(inta,intb)〃此處a、b為局部變量,此處的a,b和上一行定義的a,b不是同一個(gè){intc;c=a>b?a:b;此處的a,b是max函數(shù)的形

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論