版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C++面向?qū)ο蟪绦蛟O(shè)計(jì)安徽師范大學(xué)數(shù)學(xué)計(jì)算機(jī)學(xué)院騰莉1C++面向?qū)ο蟪绦蛟O(shè)計(jì)
譚浩強(qiáng)編著
清華大學(xué)出版社2C++語(yǔ)言開(kāi)展歷史60年代,MartinRichards為計(jì)算機(jī)軟件人員在開(kāi)發(fā)系統(tǒng)軟件時(shí),作為記述語(yǔ)言使用而開(kāi)發(fā)了BCPL語(yǔ)言。1970年,KenThompson在繼承BCPL語(yǔ)言的許多優(yōu)點(diǎn)的根底上創(chuàng)造了實(shí)用的B語(yǔ)言。1972年,貝爾實(shí)驗(yàn)室的DennisRitchie和Briankernighan在B語(yǔ)言的根底上,作了進(jìn)一步的充實(shí)和完善,設(shè)計(jì)出了C語(yǔ)言。80年代初,貝爾實(shí)驗(yàn)室在C語(yǔ)言的根底上開(kāi)發(fā)了C++語(yǔ)言。3C語(yǔ)言的主要特點(diǎn):C語(yǔ)言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,語(yǔ)言本身簡(jiǎn)潔、使用靈活方便。運(yùn)算符豐富,除了提供對(duì)數(shù)據(jù)的算術(shù)邏輯運(yùn)算外,還提供了二進(jìn)制的位運(yùn)算。程序的可移植性好4隨著C語(yǔ)言應(yīng)用的推廣,C語(yǔ)言存在的一些缺陷或缺乏也開(kāi)始流露出來(lái),并受到大家的關(guān)注。如:C語(yǔ)言對(duì)數(shù)據(jù)類型檢查的機(jī)制比較弱;缺少支持代碼重用的結(jié)構(gòu);隨著軟件工程規(guī)模的擴(kuò)大,難以適應(yīng)開(kāi)發(fā)特大型的程度等等。5第一章C++的初步知識(shí)61.1從C到C++C++是從C語(yǔ)言的根底上開(kāi)展起來(lái)的C++保存了C語(yǔ)言原有的精華C++克服了C語(yǔ)言標(biāo)準(zhǔn)性缺乏的特點(diǎn)C++提供全面的面向?qū)ο蟮木幊讨С?1.2簡(jiǎn)單的C++程序#include<iostream>intmain(){cout<<"Iamastudent.\n";return0;}主函數(shù)函數(shù)體開(kāi)始函數(shù)體結(jié)束輸出流,在屏幕上打印引號(hào)內(nèi)的字符串分號(hào),一條完整語(yǔ)句的結(jié)束符本程序編譯執(zhí)行后,在屏幕上輸出Iamastudent.包含文件8#include<iostream.h>voidmain(){cout<<"Iamastudent.\n";}教材P8的說(shuō)明。傳統(tǒng)寫法9#include<iostream.h>intmain(){inti;cin>>i;cout<<"i="<<i<<endl;return0;}例子分析教材例1.2和1.310說(shuō)明:使用cout輸出流對(duì)象,配合插入運(yùn)算符“<<“進(jìn)行輸出,endl是換行符使用cin輸入流對(duì)象,配合提取運(yùn)算符“>>“進(jìn)行輸入使用cin和cout需要使用到頭文件iostream111.3C++對(duì)C的擴(kuò)充1.3.1C++的輸入輸出程序在執(zhí)行期間,接收外部信息的操作稱為程序的輸入;而把程序向外部發(fā)送信息的操作稱為程序的輸出。在C++中沒(méi)有專門的輸入輸出語(yǔ)句,所有輸入輸出是通過(guò)輸入輸出流來(lái)實(shí)現(xiàn)的。
12
要使用C++提供的輸入輸出時(shí),必須在程序的開(kāi)頭增加一行:
#include<iostream.h>131.用cout進(jìn)行輸出
當(dāng)要輸出一個(gè)表達(dá)式的值時(shí),可使用cout來(lái)實(shí)現(xiàn),其一般格式為:
cout<<表達(dá)式<<表達(dá)式......;
其中運(yùn)算符“<<”稱為插入運(yùn)算符,它將緊跟其后的表達(dá)式的值,輸出到顯示器當(dāng)前光標(biāo)的位置。14#include<iostream.h>main(){inta=6;floatf1=12.4;cout<<a<<'\t'<<f1<<'\t'<<endl;}顯示器顯示器a6f112.4612.415charch1=‘a(chǎn)’,ch2=‘b’;cout<<“c1=”<<ch1<<‘\t’<<“c2=”<<ch2<<endl;c1=a c2=binti1=4,i2=5;floata=3.5;cout<<“a*i1=”<<a*i1<<endl<<“a*i2=”<<a*i2<<endl;a*i1=14a*i2=17.516指定輸出項(xiàng)占用的寬度:在輸出的數(shù)據(jù)項(xiàng)之間進(jìn)行隔開(kāi)的另一種方法是指定輸出項(xiàng)的寬度。如上面的兩個(gè)輸出語(yǔ)句可改寫為:i=4;j=12;m=7;k=2;cout<<setw(6)<<i<<setw(10)<<j<<endl;_____4________12cout<<setw(5)<<m<<setw(10)<<j*k<<endl;____7________24其中setw(6)指明其后的輸出項(xiàng)占用的字符寬度為6,即括號(hào)中的值指出緊跟其后的輸出項(xiàng)占用的字符位置個(gè)數(shù),并向右對(duì)齊。setw是“setwidth”的縮寫。17使用setw()應(yīng)注意以下三點(diǎn):1、在程序的開(kāi)始位置必須包含頭文件iomanip.h,即在程序的開(kāi)頭增加:#include<iomanip.h>2、括號(hào)中必須給出一個(gè)表達(dá)式〔值為正整數(shù)〕,它指明緊跟其后輸出項(xiàng)的寬度。3、該設(shè)置僅對(duì)其后的一個(gè)輸出項(xiàng)有效。一旦按指定的寬度輸出其后的輸出項(xiàng)后,又回到原來(lái)的缺省輸出方式。18#include<iostream.h>#include<iomanip.h>main(){inta=6;floatf1=12.4;cout<<setw(6)<<a<<setw(10)<<f1<<endl;}_____6______12.419
2.用cin進(jìn)行輸入cin>>變量名1>>變量名2......;inta,b;cin>>a>>b; //程序運(yùn)行至此停下,等待從鍵盤輸入變量值鍵盤輸入:35<CR>或:3<CR>5<CR>均可。a3鍵盤b5鍵盤輸入語(yǔ)句自動(dòng)過(guò)濾空白字符。20實(shí)型數(shù)據(jù)、字符型數(shù)據(jù)同整型數(shù)據(jù)一樣。floatc,d;cin>>c>>d;charch1,ch2;cin>>ch1>>ch2;假設(shè)輸入:ab<CR> 那么ch1為a, ch2為b。假設(shè)輸入:ab<CR> 那么ch1為a, ch2為b。cin可自動(dòng)跳過(guò)輸入的空格和回車21注:C++中允許變量的定義放在程序的任何位置,但必須在使用該變量前定義。221.3.2用const定義常變量c語(yǔ)言中:#definePI3.14c++中:
constfloatPI=3.14;注:常變量具備變量的屬性,但程序運(yùn)行期間的值不可變。231.3.3函數(shù)原型聲明形式:函數(shù)類型函數(shù)名〔參數(shù)表〕例如:intmax(intx,inty);intmax(int,int);注:假設(shè)被調(diào)函數(shù)出現(xiàn)在調(diào)用函數(shù)之后,無(wú)論被調(diào)函數(shù)的函數(shù)值類型如何,必須進(jìn)行函數(shù)聲明。241.3.4函數(shù)的重載C++允許在同一作用域中用同一函數(shù)名定義多個(gè)函數(shù),這些函數(shù)的參數(shù)個(gè)數(shù)或參數(shù)類型不同,這些同名的函數(shù)用來(lái)實(shí)現(xiàn)不同的功能,稱為函數(shù)的重載。25例:#include<iostream.h>voidprint(doublea){cout<<++a;}voidprint(inta,intb){cout<<b<<a;}voidmain(){print(3.14);print(3,14);}4.14143261.3.5函數(shù)模板形式:template<typenameT>
通用函數(shù)定義
template<classT>
通用函數(shù)定義注:函數(shù)模板適用于函數(shù)參數(shù)的個(gè)數(shù)相同而類型不同,且函數(shù)體相同的情況。27#include<iostream.h>template<typenameT>Tmax(Ta,Tb,Tc){if(b>a)a=b;if(c>a)a=c;returna;}intmain(){inti1,i2,i3,i;doubled1,d2,d3,d;longg1,g2,g3,g;cin>>i1>>i2>>i3;cin>>d1>>d2>>d3;cin>>g1>>g2>>g3;i=max(i1,i2,i3);d=max(d1,d2,d3);g=max(g1,g2,g3);cout<<i<<d<<g<<endl;return0;}p14例1.8281.3.6有默認(rèn)參數(shù)的函數(shù)例:floatarea(floatr=6.5);area();area(7.5);例:floatvolume(floath,floatr=12.5);volume(45.6);volume(45.6,34.4);29有默認(rèn)參數(shù)的函數(shù)說(shuō)明:實(shí)參個(gè)數(shù)可與形參個(gè)數(shù)不同,未給定的實(shí)參,使用形參的默認(rèn)值。最好在函數(shù)聲明中給出默認(rèn)值。默認(rèn)值參數(shù)應(yīng)全部出現(xiàn)在參數(shù)列表的最右端。一個(gè)函數(shù)不能既作為重載函數(shù),又作為有默認(rèn)值的函數(shù)。30#include"iostream.h"intleijia(inta,intb=2,intc=3);voidmain(){intx=5,y=6,z=7,he;he=leijia(x,y,z);cout<<"he="<<he<<endl;he=leijia(x,y);cout<<"he="<<he<<endl;he=leijia(x);cout<<"he="<<he<<endl;}intleijia(inta,intb,intc){cout<<"a="<<a<<"b="<<b<<"c="<<c<<endl;return(a+b+c);}311.3.7變量的引用一、引用的概念
1、定義:對(duì)變量起另外一個(gè)名字(別名)2、格式
類型&引用變量名=原變量名;
322、引用在定義的時(shí)候一定要初始化。1、原變量名必須是一個(gè)已定義過(guò)的變量:例如:intmax;
int&refmax=max;int&refmax;int&refmax=max;錯(cuò)誤,沒(méi)有具體的引用對(duì)象max是已定義過(guò)的變量33二、對(duì)引用變量的說(shuō)明3、對(duì)引用的操作就是對(duì)被引用的變量的操作。4、引用類型變量的初始化值不能是一個(gè)常數(shù)。如:int&ref1=5;//錯(cuò)誤int&ref=i;34例如:intmax;
int&refmax=max;max與refmax在內(nèi)存中占用同一地址maxrefmax510#include"iostream.h"main(){intmax;int&refmax=max;max=5;refmax=10;refmax=max+refmax;cout<<max<<refmax<<endl;}20max與refmax同一地址355、定義引用時(shí)的數(shù)據(jù)類型,必須與其代表的變量類型一致。
floata;
int&b=a;6、引用只能代表一個(gè)變量。inta1,a2;
int&b=a1;
int&b=a2;
36錯(cuò)誤錯(cuò)誤7、引用同變量一樣有地址,可以對(duì)其地址進(jìn)行操作,即將其地址賦給一指針。inta,*p;int&m=a;apm10p=&m;*p=10;&m&是變量的引用&是變量的地址378、可以對(duì)某個(gè)變量進(jìn)行屢次引用#include"iostream.h"voidmain(){intb;int&a=b;int&c=b;int&d=b;a=3;b=a+c+d;cout<<a<<b<<c<<d;}結(jié)果:999938#include"iostream.h"voidmain(){intnum=1;int&ref=num;ref=ref+2;cout<<num;num=num+3;cout<<ref;}3639以下哪些選項(xiàng)是錯(cuò)誤的選項(xiàng)是:A〕floati;B〕inti;int&j=i;int&j;j=i;C〕floati;D〕chari,j;float&j=i;char&k=i;char&k=j;ABD40設(shè)inti=32;以下正確的選項(xiàng)是:Aint&x=i;Bint&x=32;Cint&x;Dint&x=&i;A419、不能建立void類型的引用
void&a=9;10、不能建立引用數(shù)組
charc[6]=“hello”;
char&rc[6]=c;42錯(cuò)誤錯(cuò)誤11、可以建立指針變量的引用
inti=5,*p=&i;
int*&pt=p;
注意:int&*pt=p;錯(cuò)誤
#include"iostream.h"voidmain(){inta=10,*pa=&a,*&rp=pa;(*pa)++;cout<<"a="<<a<<endl;(*rp)++;cout<<"a="<<a<<endl;}a=11a=1243三、引用的主要兩點(diǎn)用途〔引用與函數(shù)〕1、引用作函數(shù)的形參44voidchange(int&x,int&y){intt;t=x;x=y;y=t;}voidmain(){inta=3,b=5;change(a,b);cout<<a<<‘\t’<<b<<endl;}35abxyt353輸出:5345引用作函數(shù)的形參,實(shí)際上是在被調(diào)函數(shù)中對(duì)實(shí)參變量進(jìn)行操作。引用作為形參與指針變量作形參區(qū)別voidchange(int&x,int&y){intt;t=x;x=y;y=t;}voidmain(){inta=3,b=5;change(a,b);//實(shí)參為變量
cout<<a<<‘\t’<<b<<endl;}voidchange(int*x,int*y){intt;t=*x;*x=*y;*y=t;}voidmain(){inta=3,b=5;change(&a,&b);//實(shí)參為地址
cout<<a<<‘\t’<<b<<endl;}形參為整型引用形參為指針變量a3b5xyt&a&b35346#include"iostream.h“voidf1(int*px){ *px+=10;}voidf2(int&xx){ xx+=10;}voidmain(void){ intx=0; cout<<"x="<<x<<endl; f1(&x); cout<<"x="<<x<<endl; f2(x); cout<<"x="<<x<<endl;}x=0x=10x=2047#include"iostream.h"voiddd(int&x,int&y,intz){x=x+z;y=y-x;z=10;cout<<"(2)"<<x<<'\t'<<y<<'\t'<<z<<endl;}voidmain(void){inta=3,b=4,c=5;for(inti=0;i<2;i++)dd(a,b,c);cout<<"(1)"<<a<<'\t'<<b<<'\t'<<c<<endl;}(2)8-410(2)13-1710(1)13-175482、函數(shù)的返回值為引用類型把函數(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 承包個(gè)人機(jī)井合同(2篇)
- 二零二五年度牛羊肉線上線下融合營(yíng)銷合同3篇
- 二零二五年度光伏產(chǎn)品模具研發(fā)制造合同4篇
- 2025年度寵物用品跨境電商合作合同4篇
- 2025年度環(huán)保工程派遣員工勞動(dòng)合同樣本4篇
- 2025版綿陽(yáng)市醫(yī)療機(jī)構(gòu)租賃合同4篇
- 2025年度城市綜合體施工合同(含裝修工程)2篇
- 2025年美團(tuán)外賣騎手服務(wù)區(qū)域劃分合同
- 2025年冷鏈物流送貨員專業(yè)培訓(xùn)及聘用合同
- 二零二五年度農(nóng)業(yè)產(chǎn)業(yè)鏈借貸合同協(xié)議
- 柴油墊資合同模板
- 湖北省五市州2023-2024學(xué)年高一下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- 城市作戰(zhàn)案例研究報(bào)告
- 【正版授權(quán)】 ISO 12803:1997 EN Representative sampling of plutonium nitrate solutions for determination of plutonium concentration
- 道德經(jīng)全文及注釋
- 2024中考考前地理沖刺卷及答案(含答題卡)
- 多子女贍養(yǎng)老人協(xié)議書范文
- 安踏運(yùn)動(dòng)品牌營(yíng)銷策略研究
- 彩票市場(chǎng)銷售計(jì)劃書
- 骨科抗菌藥物應(yīng)用分析報(bào)告
- 支付行業(yè)反洗錢與反恐怖融資
評(píng)論
0/150
提交評(píng)論