第3章 語句和函數(shù)_第1頁
第3章 語句和函數(shù)_第2頁
第3章 語句和函數(shù)_第3頁
第3章 語句和函數(shù)_第4頁
第3章 語句和函數(shù)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章語句和函數(shù)C++程序設(shè)計語句聲明語句執(zhí)行語句

1、表達(dá)式語句

2、基本輸入輸出語句

3、控制語句

選擇語句

循環(huán)語句

轉(zhuǎn)向語句空語句復(fù)合語句(塊語句)賦值語句“=”是最簡單的賦值運(yùn)算符,帶有賦值運(yùn)算符的表達(dá)式稱為賦值表達(dá)式,由賦值表達(dá)式組成的語句就是賦值語句結(jié)構(gòu):變量標(biāo)識符賦值運(yùn)算符表達(dá)式;【例3.1】賦值語句。intx,y;floata,b,c;x=36; //賦值語句對x賦值36y=x*2+2*3-12;//賦值語句對y賦表達(dá)式x*2+2*3-12的值a=36.5; //賦值語句對a賦值36.5b=2.5*a+1.2; //賦值語句對b賦表達(dá)式2.5*a+1.2的值c=2.5*3.14-2.7/1.35+2.2;//賦值語句對c賦表達(dá)式2.5*3.14-2.7/1.35+2.2的值復(fù)合賦值運(yùn)算符包括:等號與算術(shù)運(yùn)算符結(jié)合:

+=、-=、*=、/=、%=等號與位運(yùn)算符結(jié)合:

<<=、>>=、&=、^=、|=結(jié)合性:自右向左例如:Inta=3;a+=a*=2;//a=a+(a=a*2)=12Inta=8;a+=a*=a+a;//a=a+(a=a*(a+a))=256賦值運(yùn)算的類型轉(zhuǎn)換賦值運(yùn)算符兩邊類型不一致,編譯器會將右值的類型轉(zhuǎn)換成左值的類型字符型賦值給整型變量

將字符型數(shù)據(jù)放在整型變量低8位,無符號數(shù)高8位補(bǔ)0,有符號數(shù)高8位補(bǔ)字符型數(shù)據(jù)的最高位數(shù)據(jù)Int型賦給longint型,int型數(shù)據(jù)放在低16位,高位補(bǔ)0Unsigned型賦給longint型,高位補(bǔ)0實(shí)型賦給整型,舍棄實(shí)數(shù)的小數(shù)部分整型賦給實(shí)數(shù)、數(shù)值大小不變,存儲形式變?yōu)楦↑c(diǎn)數(shù)形式條件語句(if語句)功能:是一種選擇結(jié)構(gòu),用來判斷給出的條件是否滿足,并根據(jù)判定結(jié)果來決定要執(zhí)行的操作If語句的三種形式

1、簡化的if語句

形式:if(表達(dá)式)

語句;

說明:

表達(dá)式一般是邏輯、關(guān)系表達(dá)式,值為0或非0;

語句可以是單條語句,也可以是花括號括起來的多條語句

2、If~else語句

形式:if(表達(dá)式)

語句1;

else

語句2;

3、if~elseif語句

形式:if(表達(dá)式1)

語句1;

elseif(表達(dá)式2)

語句2;

elseif(表達(dá)式n)

語句n;

else

語句n+1;If語句的嵌套

if語句中又包含一個或多個if語句

形式:if(表達(dá)式1)

{if(表達(dá)式2)語句1;

else語句2;}

else

{if(表達(dá)式3)語句3;

else語句4;}

功能:實(shí)現(xiàn)多路選擇功能

注意:else總于最近的未配對的if配對,為了區(qū)分層次關(guān)系最好用花括弧將相關(guān)語句塊括起來【例3.3】判斷一個數(shù)是否大于60。#include<iostream.h>voidmain(){inta;cin>>a;cout<<″大于60嗎?″<<endl;if(a>60)cout<<″是″;elsecout<<″否″;}【例3.4】判斷一個整數(shù)是正數(shù)、負(fù)數(shù)還是0。Voidmain(){inta;cin>>a;if(a>=0)if(a==0)cout<<″零″;elsecout<<″正數(shù)″;elsecout<<″負(fù)數(shù)″;}開關(guān)語句(switch語句)形式:switch(表達(dá)式)

{case常量表達(dá)式1:語句1;break;

case常量表達(dá)式2:語句2;break;

case常量表達(dá)式n:語句n;break;

default:語句n+1;break;}功能:首先計算switch語句中表達(dá)式的值,當(dāng)表達(dá)式的值與某一個case后面常量表達(dá)式的值匹配時,執(zhí)行該case后的語句,遇到break語句退出switch語句;若表達(dá)式值與所有case后面的常量值都不匹配,則執(zhí)行default語句注意:1、case語句及default語句出現(xiàn)的順序沒有影響,但每個case后的常量表達(dá)式值必須各不相同;

2、若case后面無break語句,則在執(zhí)行完case語句后,不再進(jìn)行條件判斷,直接轉(zhuǎn)向下一個case語句繼續(xù)執(zhí)行,直到遇到break才能推出switch語句;

3、default語句后的break可省略;

4、多個case語句可共享一組執(zhí)行語句;

如:switch(grade)

{case‘A’:

case‘B’:

case‘C’:case‘D’:cout<<“及格\n”;break;

default:cout<<“不及格”;}【例3.5】一個產(chǎn)品分為m、p、q3個等級,根據(jù)等級可打印相應(yīng)的產(chǎn)品的價格。switch(grade){case′m′:cout<<″1500″;break;case′p′:cout<<″1000″;break;case′q′:cout<<″500″;break;defaut:cout<<″沒有這個等級″;}【例3.6】將月份的阿拉伯?dāng)?shù)字轉(zhuǎn)換成對應(yīng)月份的英文單詞。#include<iostream.h>voidmain(){intmonth;cin>>month;switch(month){case1:cout<<″January″<<endl;break;case2:cout<<″February″<<endl;break;case3:cout<<″March″<<endl;break;case4:cout<<″April″<<endl;break;case5:cout<<″May″<<endl;break;case6:cout<<″June″<<endl;break;case7:cout<<″July″<<endl;break;case8:cout<<″August″<<endl;break;case9:cout<<″Septemper″<<endl;break;case10:cout<<″October″<<endl;break;case11:cout<<″November″<<endl;break;case12:cout<<″December″<<endl;break;default:cout<<″沒有這個月份.″;}}循環(huán)語句循環(huán)語句主要有三種:for循環(huán)語句、while語句和do~while循環(huán)語句While語句

形式:while(表達(dá)式)

循環(huán)體語句;

功能:先判斷表達(dá)式的值,為真則執(zhí)行循環(huán)體,否則終止循環(huán),循環(huán)體內(nèi)需對循環(huán)控制變量進(jìn)行修改Do~while語句

形式:do循環(huán)體語句;

while(表達(dá)式);

功能:先執(zhí)行一次循環(huán)體語句,然后判斷是否滿足循環(huán)條件。Do~while語句中循環(huán)體至少被執(zhí)行一次?!纠?.7】讀入若干個學(xué)生的成績,計算他們的平均成績。#include<iostream.h>voidmain(){intsum=0,count=0,grade;cin>>grade;while(grade>=0)//0表示輸入結(jié)束{count++;sum+=grade;cin>>grade;}if(count>0)cout<<″平均成績是:″<<sum/count<<endl;}【例3.8】求1~15的和。#include<iostream.h>main(){intj=1,sum=0;Dosum+=j++;while(j<16);cout<<″1~15的和是:″<<sum<<endl;}for循環(huán)語句形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

循環(huán)體語句;功能:先計算表達(dá)式1的值,再判斷表達(dá)式2的值決定是否執(zhí)行循環(huán)體,表達(dá)式2的值為真則執(zhí)行,否則退出循環(huán);沒執(zhí)行完一次循環(huán)體后,計算表達(dá)式3的值,再判斷表達(dá)式2的值決定是否繼續(xù)執(zhí)行循環(huán)。說明:

表達(dá)式1是用來初始化循環(huán)變量的表達(dá)式;

表達(dá)式2是循環(huán)條件表達(dá)式,決定什么時候退出循環(huán);

表達(dá)式3是增量表達(dá)式,決定循環(huán)變量的變化方式。注意:for語句括號內(nèi)的三個表達(dá)式都可以省略,但分號不能省略;

1、省略表達(dá)式1,應(yīng)在for語句前給循環(huán)變量賦值;

2、省略表達(dá)式2,即不判斷結(jié)束條件,循環(huán)無終止進(jìn)行,應(yīng)在循環(huán)體中設(shè)置轉(zhuǎn)向語句結(jié)束循環(huán);

3、省略表達(dá)式3,在循環(huán)體中應(yīng)有改變循環(huán)變量值的語句?!纠?.9】用for語句求1~15的和。intsum=0;for(intj=1;j<=15;j++)sum+=j;也可寫為:j=1;for(;j<=15;){sum+=j;j++;}例3.31intm=0;for(intj=1;j<=5;j++)for(intk=1;k<=6;k++)for(intp=1;p<=7;p++)m++;//m=5*6*7=210轉(zhuǎn)向語句轉(zhuǎn)向語句用于控制程序執(zhí)行順序,實(shí)現(xiàn)程序無條件轉(zhuǎn)移的語句常見的轉(zhuǎn)向語句有4種:

1、break語句

形式:break;

功能:

(1)用于switch語句中,可使程序跳出switch語句,繼續(xù)執(zhí)行switch后面的語句;

(2)用于循環(huán)語句中,可使程序從最近的封閉循環(huán)體中跳出,繼續(xù)執(zhí)行循環(huán)體后面的語句

2、continue語句(繼續(xù)語句)

形式:continue;

功能:用于循環(huán)語句中,可使程序結(jié)束本次循環(huán),即跳過continue后面的語句,轉(zhuǎn)去判斷循環(huán)控制條件,決定是否進(jìn)行下一次循環(huán)

注意:continue語句只結(jié)束本次循環(huán),不結(jié)束整個循環(huán)結(jié)構(gòu);

break語句是結(jié)束最近一層循環(huán)的整個循環(huán)結(jié)構(gòu)?!纠?.10】讀入10個學(xué)生的成績,計算其平均成績,如果遇到負(fù)數(shù)則報告出錯并退出。#include<iostream.h>voidmain(){intrecord,sum=0;boolflag=true;for(intj=1;j<=10;j++){cin>>record;if(record<0){flag=false;break;}sum+=record;}if(flag)cout<<″平均成績是:″<<sum/10.0<<endl;elsecout<<″出錯″<<endl;}【例3.11】統(tǒng)計一句話(以′.′結(jié)束)里字符a的數(shù)目。#include<iostream.h>voidmain(){intcount=0;charc;while(c!=′.′){cin>>c;if(c!=′a′)continue;//如果不是字符′a′,則讀下一個字符,否則計數(shù)器加1count++;}cout<<count;}3、goto語句(無條件轉(zhuǎn)移語句)

形式:goto語句標(biāo)號;

說明:語句標(biāo)號是一個標(biāo)識符,放在某一行語句的前面,后加“:”

功能:使程序無條件跳轉(zhuǎn)到標(biāo)號所指的語句處執(zhí)行

注意:在結(jié)構(gòu)化程序設(shè)計中盡量不用goto語句4、return語句

形式:return表達(dá)式;

功能:停止執(zhí)行當(dāng)前函數(shù),指定函數(shù)要返回的值,轉(zhuǎn)去執(zhí)行調(diào)用函數(shù)后面的語句

注意:return語句后表達(dá)式的類型必須與函數(shù)類型一致循環(huán)嵌套(多重循環(huán))概念:在一個循環(huán)體中又包含另一個循環(huán)語句稱為循環(huán)嵌套,又稱多重循環(huán)說明:for、while、do~while三種循環(huán)語句都可以相互嵌套,先執(zhí)行最里層的循環(huán)語句,再依次執(zhí)行外層的循環(huán)語句,注意內(nèi)外循環(huán)不能交叉【例3.12】給一個二維數(shù)組的各個元素賦初值。#include<iostream.h>voidmain(){inta[3][4];cout<<″輸入整數(shù):″;for(intj=0;j<3;j++)for(intk=0;k<4;k++){cout<<″a[″<<j<<″][″<<k<<″]=:″;cin>>a[j][k];}}函數(shù)函數(shù)是程序設(shè)計語言中實(shí)現(xiàn)某項功能的基本單位,程序通過在各個函數(shù)之間進(jìn)行調(diào)用來實(shí)現(xiàn)總體的功能函數(shù)可以是用戶自定義的,也可以是系統(tǒng)定義好的標(biāo)準(zhǔn)函數(shù)(庫函數(shù))一個C++程序中可以有多個函數(shù),但main函數(shù)只能有一個,除main函數(shù)外,函數(shù)地位平等,可以相互調(diào)用,main函數(shù)不能被其他函數(shù)調(diào)用函數(shù)的定義C++程序中函數(shù)需先聲明或定義后方可調(diào)用形式:函數(shù)類型函數(shù)名(參數(shù)列表)

{函數(shù)體}說明:

1、函數(shù)類型也就是函數(shù)的返回值類型,函數(shù)的返回值一般由return語句給出;沒有返回值,函數(shù)類型為void;沒有指定函數(shù)類型,默認(rèn)類型為int;return語句返回值類型與函數(shù)類型不一致將自動轉(zhuǎn)換為函數(shù)名前的類型;

2、函數(shù)名需滿足標(biāo)識符命名規(guī)則,后必須跟一對圓括號;

3、函數(shù)的參數(shù)列表是括號中的0個或多個“,”分隔的形式參數(shù)(形參),形參只是一個標(biāo)識符,用來確定函數(shù)參數(shù)的個數(shù)、位置、類型,在函數(shù)調(diào)用過程中進(jìn)行數(shù)值傳送

4、函數(shù)定義是相互獨(dú)立的,不能在一個函數(shù)體中定義另一個函數(shù)【例3.13】編寫一個返回一個整數(shù)的絕對值的函數(shù)。intabsolute(ints){intz;//函數(shù)體里的變量聲明if(s>=0)z=s;elsez=-s;returnz;}函數(shù)原型聲明在C++中,如果被調(diào)用函數(shù)在使用時尚未定義,即調(diào)用在前定義在后,則必須在函數(shù)調(diào)用前對其函數(shù)原型進(jìn)行聲明形式:函數(shù)類型函數(shù)名(參數(shù)列表);注意:

1、在函數(shù)原型聲明中,參數(shù)名可以省略,但參數(shù)的類型和函數(shù)類型不可以省略;

例3.13原型聲明可寫為:intabsolute(int);

2、在函數(shù)定義和原型聲明中的參數(shù)均為形參,它們間的參數(shù)名可以不同,但類型、順序不能變;

3、函數(shù)原型聲明可以放在主調(diào)函數(shù)內(nèi)部,也可以在外部,位于主調(diào)函數(shù)內(nèi)部必須位于調(diào)用語句之前,在外部需位于主調(diào)函數(shù)之前函數(shù)的參數(shù)與返回值形參:定義(聲明)函數(shù)時,函數(shù)名后面括號中的變量名實(shí)參:調(diào)用函數(shù)時,函數(shù)名后括號中的參數(shù)(或表達(dá)式)功能:形參和實(shí)參用于實(shí)現(xiàn)主調(diào)函數(shù)與被調(diào)函數(shù)之間數(shù)據(jù)的傳遞;函數(shù)未被調(diào)用時,形參并不占用實(shí)際內(nèi)存空間,一旦函數(shù)被調(diào)用,系統(tǒng)將為形參分配空間,并將實(shí)參的值放在所分配的空間中形參與實(shí)參的傳遞有兩種形式:

傳值參數(shù)傳遞、引用參數(shù)傳遞函數(shù)的傳值參數(shù)傳遞概念:在函數(shù)調(diào)用時,將實(shí)參的值復(fù)制到形參的存儲空間中,在執(zhí)行該函數(shù)的參數(shù)傳遞方式特點(diǎn):在函數(shù)執(zhí)行過程中,形參的變化不影響實(shí)參的值【例3.21】分析下面的程序,能否實(shí)現(xiàn)交換兩個數(shù)值#include<iostream.h>voidswap(floatx,floaty){floata=x;x=y;y=a;}voidmain(){floatm=6,n=27;cout<<″交換前:″<<endl;cout<<endl<<″m=″<<m<<endl;cout<<″n=″<<n<<endl;swap(m,n);cout<<″交換后:″<<endl;cout<<endl<<″m=″<<m<<endl;cout<<″n=″<<n<<endl;}運(yùn)行結(jié)果:交換前:m=6n=27交換后:m=6n=27函數(shù)的引用參數(shù)引用:變量或?qū)ο蟮膭e名格式:類型名&引用名=變量名;說明:

1、變量名必須已定義過,類型應(yīng)與引用的類型一致;

2、聲明引用時必須賦初值,且不能在程序中改變引用的目標(biāo);一個變量的引用就是它的別名,不能再是其它變量的別名;

3、聲明的引用可當(dāng)作目標(biāo)變量一樣使用;

4、引用也可將變量地址賦給一個指針變量?!纠?.22】引用的定義。intm;int&n=m; //引用n是變量m的別名m=53;cout<<n; //n也是53n+=22; //n變?yōu)?5,m也是75cout<<m; //輸出75【例3.23】用引用實(shí)現(xiàn)交換兩個數(shù)值。#include<iostream.h>voidswap(float&x,float&y) //x和y都是引用參數(shù){floata=x;x=y;y=a;}voidmain(){floatm=6,n=27;cout<<″交換前:″<<endl;cout<<endl<<″m=″<<m<<endl;cout<<″n=″<<n<<endl;swap(m,n);cout<<″交換后:″<<endl;cout<<endl<<″m=″<<m<<endl;cout<<″n=″<<n<<endl;}運(yùn)行結(jié)果:交換前:m=6n=27交換后:m=27n=6設(shè)置函數(shù)參數(shù)的默認(rèn)值概念:函數(shù)的默認(rèn)參數(shù)也稱為缺省參數(shù),是在函數(shù)定義或聲明時就將其中一個或多個參數(shù)(形參)進(jìn)行初始化賦值,使調(diào)用函數(shù)在參數(shù)缺省狀態(tài)下默認(rèn)使用該值

例:floatgh(floatm,floatn,floatp=9);

調(diào)用gh(6,8)等同于gh(6,8,9)注意:

1、如果不需要使用形參設(shè)置的默認(rèn)值,可以通過實(shí)參設(shè)置新值;

2、給函數(shù)中多個形參部分設(shè)置默認(rèn)值,必須按照從右到左的順序指定默認(rèn)值,即為某個參數(shù)指定默認(rèn)值時,其后的參數(shù)都必須指定默認(rèn)值,否則已設(shè)默認(rèn)值將被忽略。Voidfl(doublea,floatb=2.5,intc=1);正確的Voidfl(doublea,floatb=2.5,intc);b的默認(rèn)值無效3、設(shè)置默認(rèn)值后,實(shí)參的個數(shù)可以與形參的不同,函數(shù)調(diào)用時,實(shí)參與形參按照從左到右的順序進(jìn)行匹配,沒有給出實(shí)參的,形參就取消指定的默認(rèn)值。例intsum(inta,intb,intc=5,intd=6);調(diào)用sum(3,2,1)等價于sum(3,2,1,6)函數(shù)的調(diào)用對函數(shù)進(jìn)行過定義或原型聲明后即可進(jìn)行調(diào)用,調(diào)用過程包括:參數(shù)傳遞、函數(shù)體執(zhí)行、返回主調(diào)函數(shù)形式:函數(shù)名(實(shí)參列表)注意:

1、調(diào)用無參函數(shù),函數(shù)后的括號不能??;

2、實(shí)參與形參一一對應(yīng),即個數(shù)相等、類型匹配、順序一致(有默認(rèn)值的可缺?。?;

3、若函數(shù)無返回值,可將函數(shù)單獨(dú)調(diào)用作為一條語句,完成一定的操作;

4、若函數(shù)有返回值,可將函數(shù)作為語句的一部分,利用返回值參與表達(dá)式的運(yùn)算或執(zhí)行某項操作【例3.14】編寫一個程序,輸出一個正整數(shù)的全部約數(shù)。#include<iostream.h>#include<math.h>//調(diào)用系統(tǒng)定義的數(shù)學(xué)函數(shù)需要voidsearch(ints){if(s>0){cout<<endl;inth,j;if(sqrt(s)==int(sqrt(s)))cout<<″″<<sqrt(s);//sqrt(s)==int(sqrt(s))判斷有無平方根;int(sqrt(s))強(qiáng)制類型轉(zhuǎn)換h=int(sqrt(s));for(j=1;j<=h;j++)//一個整數(shù)x,能寫成x=m*n,m的值一定不會超過sqrt(x)的if(s%j==0)cout<<″″<<j<<″″<<s/j;}elsecout<<″不是一個正數(shù)″<<endl;}voidmain(void){intr;cout<<″請輸入一個正數(shù):″<<endl;cin>>r;search(r);}【例3.15】編制一個程序,將一個十進(jìn)制的一位數(shù)變?yōu)槎M(jìn)制的數(shù)輸出。#include<iostream.h>voidconvert(ints){switch(s){case0:cout<<0;break;case1:cout<<1;break;case2:cout<<10;break;case3:cout<<11;break;case4:cout<<100;break;case5:cout<<101;break;case6:cout<<110;break;case7:cout<<111;break;case8:cout<<1000;break;case9:cout<<1001;}cout<<endl;}voidmain(){intp;cout<<″輸入一個數(shù)字:″;cin>>p;convert(p);}函數(shù)的嵌套調(diào)用C++中函數(shù)定義不允許嵌套定義,但允許函數(shù)嵌套調(diào)用,即在調(diào)用一個函數(shù)的過程中又調(diào)用另一個函數(shù)【例3.16】計算k=sin2r+a2+sins的值。sin的計算公式是:sinx=x-x3/3!+x5/5!-...【例3.16】計算k=sin2r+a2+sins的值。sin的計算公式是:sinx=x-x3/3!+x5/5!-...include<iostream.h>doublemysin(doublex){doublee=1e-6,k=0,t=x;//e是設(shè)定的精度intn=1;do{k+=t;n++;t=-t*x*x/((2*n-1)*(2*n-2));}while(t>=e);//書上fabs(t)表示浮點(diǎn)數(shù)t的絕對值returnk;}doublejisuan(doubler,doublea,doubles){returnmysin(r)*mysin(r)+a*a+mysin(s);}voidmain(){doubler,a,s;cout<<″輸入3個數(shù):″;cin>>r>>a>>s;cout<<jisuan(r,a,s);}函數(shù)的遞歸調(diào)用一個函數(shù)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用兩種方式:

1、直接遞歸,一個函數(shù)中直接調(diào)用自身,例3.17;

2、間接遞歸,一個函數(shù)中調(diào)用其他函數(shù),其他函數(shù)又調(diào)用該函數(shù),例3.18;【例3.17】計算函數(shù)f(x)。f(x)= 3, 當(dāng)x=0時 f(x-1)+6, 當(dāng)x>0時#include<iostream.h>intf(intx){if(x<0)cout<<″參數(shù)錯誤″<<endl;elseif(x==0)return3;elsereturnf(x-1)+6;}voidmain(){intg=35;cout<<″結(jié)果為:″<<f(g)<<endl;}運(yùn)行結(jié)果為:213(35×6+3=213)【例3.18】計算函數(shù)f(x)。f(x)=0, 當(dāng)x=0時f(x-1)+3, 當(dāng)x為正奇數(shù)時 f(x-1)+5, 當(dāng)x為正偶數(shù)時#include<iostream.h>intfeven(intx);//聲明feven(x)函數(shù),x為偶數(shù)時調(diào)用intfodd(intx)//fodd(x),x為奇數(shù)時調(diào)用,x-1為偶數(shù){returnfeven(x-1)+3;}intfeven(intx)//feven(x),x為偶數(shù)時調(diào)用,x-1為奇數(shù){if(x==0)return0;elsereturnfodd(x-1)+5;}voidmain(){intg=16;if(g%2==0)cout<<feven(g)<<endl;//偶數(shù)執(zhí)行feven(g)elsecout<<fodd(g)<<endl;//奇數(shù)執(zhí)行fodd(g)}執(zhí)行結(jié)果為:64

(g=16,其中有8個奇數(shù)、8個偶數(shù),f(g)=8*3+8*5=64)【例3.19】指出下面的程序為什么是錯誤的。main(){intd;df();}intdf(){cout<<d;}1、函數(shù)df()需先定義后使用;2、d為局部變量,df()函數(shù)無法使用。例3.18Feven(x)偶數(shù)Fodd(x-1)奇數(shù)Fodd(x)奇數(shù)Feven(x-1)偶數(shù)調(diào)用調(diào)用調(diào)用調(diào)用函數(shù)的重載概念:指同一個函數(shù)名可以對應(yīng)多個不同的函數(shù)實(shí)現(xiàn),每一類實(shí)現(xiàn)對應(yīng)一個函數(shù)體,這類函數(shù)名相同,功能相近,只是參數(shù)的類型或個數(shù)不同函數(shù)參數(shù)類型重載

函數(shù)參數(shù)個數(shù)相同,但其類型中至少有一個不同函數(shù)參數(shù)個數(shù)重載

利用函數(shù)的參數(shù)個數(shù)不同實(shí)現(xiàn)函數(shù)的重載【例3.24】重載函數(shù)meet。函數(shù)meet有兩個功能,如果它的兩個參數(shù)是char型的,那么函數(shù)meet將兩者連接起來輸出,如果它的兩個參數(shù)的類型是double型的,那么函數(shù)meet將輸出兩者的和。#include<iostream.h>voidmeet(charx,chary){cout<<″字符串是:″;cout<<x<<y<<endl;}voidmeet(doublex,doubley){cout<<″兩數(shù)的和是:″;cout<<x+y<<endl;}voidmain(){meet(′a′,′b′);meet(5.6,7.3);}運(yùn)行結(jié)果為:字符串是:ab兩數(shù)的和是:12.9程序在運(yùn)行時根據(jù)參數(shù)類型判別執(zhí)行哪一個函數(shù)體【例3.25】重載函數(shù)abs(),求int、float和double類型數(shù)據(jù)的絕對值intabs(intx){if(x>=0)returnx;elsereturn-x;}floatabs(floatx){if(x>=0)returnx;elsereturn-x;}doubleabs(doublex){if(x>=0)returnx;elsereturn-x;}voidmain(){inta=-357;floatb=63.85;doublec=-6974.26;cout<<abs(a)<<′\t′<<abs(b)<<′\t′<<abs(c)<<endl;}輸出結(jié)果為:35763.856974.26【例3.26】求若干個參數(shù)當(dāng)中的最大的值,根據(jù)參數(shù)個數(shù)的不同調(diào)用不同的max()函數(shù)。#include<iostream.h>floatmax(floatx,floaty){if(x>y)returnx;elsereturny;}floatmax(floatx,floaty,floatz){floatb=max(x,y);returnmax(b,z);}Voidmain(){cout<<max(1,2)<<endl;cout<<max(1,2,3);}程序的執(zhí)行結(jié)果是:23系統(tǒng)會根據(jù)參數(shù)的個數(shù)正確地選擇執(zhí)行函數(shù)系統(tǒng)函數(shù)的調(diào)用系統(tǒng)函數(shù)是系統(tǒng)預(yù)先定義好的,使用時只要在程序前加入正確的頭文件就可以調(diào)用【例3.27】應(yīng)用math.h中定義的sin()函數(shù),求0.05到π/4之間的正弦函數(shù)值#include<iostream.h>#include<math.h>voidmain(){doublepi=3.14,x=0.05;inti=0;while(x<pi/4){cout<<

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論