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

下載本文檔

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

文檔簡(jiǎn)介

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

1、表達(dá)式語(yǔ)句

2、基本輸入輸出語(yǔ)句

3、控制語(yǔ)句

選擇語(yǔ)句

循環(huán)語(yǔ)句

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

+=、-=、*=、/=、%=等號(hào)與位運(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)算的類(lèi)型轉(zhuǎn)換賦值運(yùn)算符兩邊類(lèi)型不一致,編譯器會(huì)將右值的類(lèi)型轉(zhuǎn)換成左值的類(lèi)型字符型賦值給整型變量

將字符型數(shù)據(jù)放在整型變量低8位,無(wú)符號(hào)數(shù)高8位補(bǔ)0,有符號(hào)數(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ù)值大小不變,存儲(chǔ)形式變?yōu)楦↑c(diǎn)數(shù)形式條件語(yǔ)句(if語(yǔ)句)功能:是一種選擇結(jié)構(gòu),用來(lái)判斷給出的條件是否滿(mǎn)足,并根據(jù)判定結(jié)果來(lái)決定要執(zhí)行的操作If語(yǔ)句的三種形式

1、簡(jiǎn)化的if語(yǔ)句

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

語(yǔ)句;

說(shuō)明:

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

語(yǔ)句可以是單條語(yǔ)句,也可以是花括號(hào)括起來(lái)的多條語(yǔ)句

2、If~else語(yǔ)句

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

語(yǔ)句1;

else

語(yǔ)句2;

3、if~elseif語(yǔ)句

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

語(yǔ)句1;

elseif(表達(dá)式2)

語(yǔ)句2;

elseif(表達(dá)式n)

語(yǔ)句n;

else

語(yǔ)句n+1;If語(yǔ)句的嵌套

if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句

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

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

else語(yǔ)句2;}

else

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

else語(yǔ)句4;}

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

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

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

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

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

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

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

3、default語(yǔ)句后的break可省略;

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

如:switch(grade)

{case‘A’:

case‘B’:

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

default:cout<<“不及格”;}【例3.5】一個(gè)產(chǎn)品分為m、p、q3個(gè)等級(jí),根據(jù)等級(jí)可打印相應(yīng)的產(chǎn)品的價(jià)格。switch(grade){case′m′:cout<<″1500″;break;case′p′:cout<<″1000″;break;case′q′:cout<<″500″;break;defaut:cout<<″沒(méi)有這個(gè)等級(jí)″;}【例3.6】將月份的阿拉伯?dāng)?shù)字轉(zhuǎn)換成對(duì)應(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<<″沒(méi)有這個(gè)月份.″;}}循環(huán)語(yǔ)句循環(huán)語(yǔ)句主要有三種:for循環(huán)語(yǔ)句、while語(yǔ)句和do~while循環(huán)語(yǔ)句While語(yǔ)句

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

循環(huán)體語(yǔ)句;

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

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

while(表達(dá)式);

功能:先執(zhí)行一次循環(huán)體語(yǔ)句,然后判斷是否滿(mǎn)足循環(huán)條件。Do~while語(yǔ)句中循環(huán)體至少被執(zhí)行一次?!纠?.7】讀入若干個(gè)學(xué)生的成績(jī),計(jì)算他們的平均成績(jī)。#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<<″平均成績(jī)是:″<<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)語(yǔ)句形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

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

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

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

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

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

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

3、省略表達(dá)式3,在循環(huán)體中應(yīng)有改變循環(huán)變量值的語(yǔ)句?!纠?.9】用for語(yǔ)句求1~15的和。intsum=0;for(intj=1;j<=15;j++)sum+=j;也可寫(xiě)為: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)向語(yǔ)句轉(zhuǎn)向語(yǔ)句用于控制程序執(zhí)行順序,實(shí)現(xiàn)程序無(wú)條件轉(zhuǎn)移的語(yǔ)句常見(jiàn)的轉(zhuǎn)向語(yǔ)句有4種:

1、break語(yǔ)句

形式:break;

功能:

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

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

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

形式:continue;

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

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

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

形式:goto語(yǔ)句標(biāo)號(hào);

說(shuō)明:語(yǔ)句標(biāo)號(hào)是一個(gè)標(biāo)識(shí)符,放在某一行語(yǔ)句的前面,后加“:”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

傳值參數(shù)傳遞、引用參數(shù)傳遞函數(shù)的傳值參數(shù)傳遞概念:在函數(shù)調(diào)用時(shí),將實(shí)參的值復(fù)制到形參的存儲(chǔ)空間中,在執(zhí)行該函數(shù)的參數(shù)傳遞方式特點(diǎn):在函數(shù)執(zhí)行過(guò)程中,形參的變化不影響實(shí)參的值【例3.21】分析下面的程序,能否實(shí)現(xiàn)交換兩個(gè)數(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名格式:類(lèi)型名&引用名=變量名;說(shuō)明:

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

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

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

4、引用也可將變量地址賦給一個(gè)指針變量?!纠?.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)交換兩個(gè)數(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ù)也稱(chēng)為缺省參數(shù),是在函數(shù)定義或聲明時(shí)就將其中一個(gè)或多個(gè)參數(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)值,可以通過(guò)實(shí)參設(shè)置新值;

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

1、調(diào)用無(wú)參函數(shù),函數(shù)后的括號(hào)不能?。?/p>

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

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

4、若函數(shù)有返回值,可將函數(shù)作為語(yǔ)句的一部分,利用返回值參與表達(dá)式的運(yùn)算或執(zhí)行某項(xiàng)操作【例3.14】編寫(xiě)一個(gè)程序,輸出一個(gè)正整數(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))判斷有無(wú)平方根;int(sqrt(s))強(qiáng)制類(lèi)型轉(zhuǎn)換h=int(sqrt(s));for(j=1;j<=h;j++)//一個(gè)整數(shù)x,能寫(xiě)成x=m*n,m的值一定不會(huì)超過(guò)sqrt(x)的if(s%j==0)cout<<″″<<j<<″″<<s/j;}elsecout<<″不是一個(gè)正數(shù)″<<endl;}voidmain(void){intr;cout<<″請(qǐng)輸入一個(gè)正數(shù):″<<endl;cin>>r;search(r);}【例3.15】編制一個(gè)程序,將一個(gè)十進(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<<″輸入一個(gè)數(shù)字:″;cin>>p;convert(p);}函數(shù)的嵌套調(diào)用C++中函數(shù)定義不允許嵌套定義,但允許函數(shù)嵌套調(diào)用,即在調(diào)用一個(gè)函數(shù)的過(guò)程中又調(diào)用另一個(gè)函數(shù)【例3.16】計(jì)算k=sin2r+a2+sins的值。sin的計(jì)算公式是:sinx=x-x3/3!+x5/5!-...【例3.16】計(jì)算k=sin2r+a2+sins的值。sin的計(jì)算公式是: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);//書(shū)上fabs(t)表示浮點(diǎn)數(shù)t的絕對(duì)值returnk;}doublejisuan(doubler,doublea,doubles){returnmysin(r)*mysin(r)+a*a+mysin(s);}voidmain(){doubler,a,s;cout<<″輸入3個(gè)數(shù):″;cin>>r>>a>>s;cout<<jisuan(r,a,s);}函數(shù)的遞歸調(diào)用一個(gè)函數(shù)直接或間接地調(diào)用該函數(shù)本身,稱(chēng)為函數(shù)的遞歸調(diào)用兩種方式:

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

2、間接遞歸,一個(gè)函數(shù)中調(diào)用其他函數(shù),其他函數(shù)又調(diào)用該函數(shù),例3.18;【例3.17】計(jì)算函數(shù)f(x)。f(x)= 3, 當(dāng)x=0時(shí) f(x-1)+6, 當(dāng)x>0時(shí)#include<iostream.h>intf(intx){if(x<0)cout<<″參數(shù)錯(cuò)誤″<<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】計(jì)算函數(shù)f(x)。f(x)=0, 當(dāng)x=0時(shí)f(x-1)+3, 當(dāng)x為正奇數(shù)時(shí) f(x-1)+5, 當(dāng)x為正偶數(shù)時(shí)#include<iostream.h>intfeven(intx);//聲明feven(x)函數(shù),x為偶數(shù)時(shí)調(diào)用intfodd(intx)//fodd(x),x為奇數(shù)時(shí)調(diào)用,x-1為偶數(shù){returnfeven(x-1)+3;}intfeven(intx)//feven(x),x為偶數(shù)時(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個(gè)奇數(shù)、8個(gè)偶數(shù),f(g)=8*3+8*5=64)【例3.19】指出下面的程序?yàn)槭裁词清e(cuò)誤的。main(){intd;df();}intdf(){cout<<d;}1、函數(shù)df()需先定義后使用;2、d為局部變量,df()函數(shù)無(wú)法使用。例3.18Feven(x)偶數(shù)Fodd(x-1)奇數(shù)Fodd(x)奇數(shù)Feven(x-1)偶數(shù)調(diào)用調(diào)用調(diào)用調(diào)用函數(shù)的重載概念:指同一個(gè)函數(shù)名可以對(duì)應(yīng)多個(gè)不同的函數(shù)實(shí)現(xiàn),每一類(lèi)實(shí)現(xiàn)對(duì)應(yīng)一個(gè)函數(shù)體,這類(lèi)函數(shù)名相同,功能相近,只是參數(shù)的類(lèi)型或個(gè)數(shù)不同函數(shù)參數(shù)類(lèi)型重載

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

利用函數(shù)的參數(shù)個(gè)數(shù)不同實(shí)現(xiàn)函數(shù)的重載【例3.24】重載函數(shù)meet。函數(shù)meet有兩個(gè)功能,如果它的兩個(gè)參數(shù)是char型的,那么函數(shù)meet將兩者連接起來(lái)輸出,如果它的兩個(gè)參數(shù)的類(lèi)型是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)行時(shí)根據(jù)參數(shù)類(lèi)型判別執(zhí)行哪一個(gè)函數(shù)體【例3.25】重載函數(shù)abs(),求int、float和double類(lèi)型數(shù)據(jù)的絕對(duì)值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】求若干個(gè)參數(shù)當(dāng)中的最大的值,根據(jù)參數(shù)個(gè)數(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)會(huì)根據(jù)參數(shù)的個(gè)數(shù)正確地選擇執(zhí)行函數(shù)系統(tǒng)函數(shù)的調(diào)用系統(tǒng)函數(shù)是系統(tǒng)預(yù)先定義好的,使用時(shí)只要在程序前加入正確的頭文件就可以調(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論