C++程序語言設計(清華大學出版社)復習要點_第1頁
C++程序語言設計(清華大學出版社)復習要點_第2頁
C++程序語言設計(清華大學出版社)復習要點_第3頁
C++程序語言設計(清華大學出版社)復習要點_第4頁
C++程序語言設計(清華大學出版社)復習要點_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

二、填空題201?卞列程序實現了輸入兩個整數,比較兩個數的人小的功能,請在空格內填寫相應的語句使程序正確執行。#iiiclude<iostieam>usingnamespacestd;iiitmaiii(){mtx、y;cout?MEntei-xandy:n;ciii?x?y;if(x!=y)】f(x>y)cout?Mx>yH?endl;elsecout?Mx<yH?endl;elsecout?Mx=yM?endl;}卞列程序實現了輸入一個整數,將各位數字反轉后輸出的功能,請在空格內填寫相應的語句使程序正確執行。#include<iostreain>usingnamespacestd;iiitmaiii(){intn.right_digit,newnum=0;cout?nEnterthenumber:n;cm?n;cout?HThenumberinreverseorderisdo{right_digit=n%10;cout?right_digit;n/=10;〃相當于n=iV'10}while(n!=0);cout?endl;}下列程序實現了輸入一個8位二進制數,將其轉換為十進制數輸出。例如:11012=1(23)+1(22)+0(21)+1(20)=1310所以,如果輸入1101,則應輸出13

的功能,請在空格內填寫相應的語句使程序正確執行。^include<iostreain>usingnamespacestd;doublepower(doublex,iiitn);iiitmain(){inti;intvalue=0;charch;cout?HEnteran8bitbinarynumber”;for(i=7;i>=0;i~)ficm?ch;//輸入時是一次輸入8個字符,運行時是一次//取一個字符if(ch==T)H?value?endl;value+=int(powei(2j));}cout?HH?value?endl;doublepower(doublex、mtn){doublepower(doublex、mtn){doubleval=1.0;while(n—)val*=x;retuin(val);}運行結果:Enteran8bitbiiiaiynumberDecimalvalueis10501101001下列程序實現了在主函數中初始化一個矩陣并將每個元素都輸出,然后調用子函數,分別計算每一行的元素之和,將和直接存放在每行的第一個元素中,返回主函數之后輸出各行元素的和。的功能,請在空格內填寫相應的語句使程序正確執行。#include<iostreain>usingnamespacestd;voidRowSum(intA[][4],mtmow){intsum;for(mti=0;i<mow;i++){sum=0;for(mtj=0;j<4;j++)sum+=A[i][j];cout?HSuniofrowH?i?11is"?sum?endl;A[i][0]=sum;}iiitmain(){intTable[3][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6}};for(mti=0;1<3;i++){for(intj=0;j<4;j++)cout?Table[i][j]?HH;cout?endl;}RowSum(Table,3);for(iiit1=0;i<3;i++)cout?Tablefi][0]}運行結果:TOC\o"1-5"\h\z12 3 43 4 54 5 6Sumofrow0is10Sumofrow1is14Sumofrow2is18下列程序實現了計算川的公式如下:,1⑺=0)“!=(77>0)這是一個遞歸形式的公式,應該用遞歸函數實現。#include<iostreain>usingnamespacestd;longfac(mtn){longf;if(n<0)cout?Hn<0.dataerror!"?endl;elseif(n==0)f=l;elsef=fac(n-l)*n;ietuin(f);}iiitmain(){longfac(mtn);iiitn;longy;cout?HEnterapositivemtegei:M;ciii?n;v=fac(n);cout?n?n!=H?v?endl;}運行結果:Enterapositiveinteger:88!=40320的功能,請在空格內填寫相應的語句使程序正確執行。卞列程序實現了輸入一個年份,判斷是否閏年的功能,請在空格內填寫相應的語句使程序正確執行。#include<iostreain>usingnamespacestd;iiitmain(){intyear;boolIsLeapYear;cout?HEntertheveai:n;cm?veai;IsLeapYeai-=((year%4=0&&year%100!=0)|(year%400==0));if(IsLeapYear)cout?yeai?HisaleapyeaiM?endl;elsecout?yeai?Hisnotaleapvearn?endl;}卞列程序實現了輸入一個整數,求出它的所有因子的功能,請在空格內填寫相應的語句使程序正確執行。#include<iostreain>usingnamespacestd;iiitmain(){intak;cout?nEnterapositivemteger:n;cm?n;cout?HNumberH?n?HFactors”;for(k=l;k<=n;k++)if(n%k=0)cout?k?H”;cout?endl:}下列程序實現了尋找并輸出11-999之間的數m,它滿足m、m2和m3均為回文數。回文:各位數字左右對稱的整數。

例如:11滿足上述條件,因為:11=11,112=121,113=1331。的功能,請在空格內填寫相應的語句使程序正確執行。分析:10取余的方法,從最低位開始,依次取出該數的各位數字。按反序重新構成新的數,比較與原數是否相等,若相等,則原數為回文。#include<iostreain>usingnamespacestd;iiit{boolsynun(longn);longm;foi(m=ll;m<1000;in卄)if(syiiuii(m)&&syiiuu(m*m)&&synmi(m*m*m))cout?Hm=H?m?H?Mm*m*m=H?m*m*m?endl:}boolsynun(longn){運行結果:m=11m*m=121 m*m*m=1331運行結果:m=11m*m=121 m*m*m=1331m=101m*m=10201 1030301m=lllm*m=12321 367631i=n;m=0;while(i){m=m*10+i%]0;i=i/10 ;}ieturn(m=n);}下列程序實現了用數組來處理求Fibonacci數列問題的功能,請在空格內填寫相應的語句使程序正確執行。#iiiclude<iostieam>usingnamespacestd;iiit{mti;staticmtf[20]={l,l}y/初始化第0、1個數fbr(i=2;i<20;i++)//求第2?19個數fbr(i=0;i<20;i++)//輸出,每行5個數〃{iqi%5==0)cout?endl;cout.width(12);//設置輸出寬度為12cout?f{i];}

K列程序實現了用遞歸法計算從n個人中選擇k個人組成一個委員會的不同組合數的功能,請在空格內填寫相應的語句使程序正確執行。#iiiclude<iostieam>usingnamespacestd;iiit{intn.k;mtconun(intn,iiitk);cin?n?k;cout?conun(n,k)?endl;}運行結果:185運行結果:1858568{if(k>n)return0;elseif(n=k||k=0)return1;elsereturnconmi(n-l,k)+coinin(n-Lk-1);}三、簡答題30什么是對象?什么是面向對彖方法?這種方法有哪些特點?從一般意義上講,對彖是現實世界中一個實際存在的爭物,它可以是有形的,也可以是無形的。對象是構成世界的一個獨立單位,它具有自己的靜態特征和動態特征。面向對彖方法中的對象,是系統中用來描述客觀事物的一個實體,它是用來構成系統的一個基本單位,由一組屬性和一組行為構成。面向對彖的方法將數據及對數據的操作方法放在一起,作為一個相互依存、不可分離的整體-對象。對同類型對象抽象出其共性,形成類。類中的人多數數據,只能用本類的方法進行處理。類通過一個簡單的外部接II,與外界發生關系,對象與對象之間通過消息進行通訊。這樣,程序模塊間的關系更為簡單,程序模塊的獨立性、數據的安全性就有了良好的保障。通過實現繼承與多態性,還町以人大提高程序的可重用性,使得軟件的開發和維護都更為方便。面向對彖方法所強調的基本原則,就是直接面對客觀存在的事物來進行軟件開發,將人們在口常生活中習慣的思維方式和表達方式應用在軟件開發中,使軟件開發從過分專業化的方法、規則和技巧中回到客觀世界,回到人們通常的思維。C++中的函數是什么?什么叫主調函數,什么叫被調函數,二者之間有什么關系?如何調用一個函數?一個較為復雜的系統往往需要劃分為若干子系統,高級語言中的子程序就是用來實現這種模塊劃分的。C和C卄語言中的子程序就體現為函數。調用其它函數的函數被稱為主調函數,被其它函數調用的函數稱為被調函數。一個函數很町能既調用別的函數又被另外的函數調用,這樣它可能在某一個調用與被調用關系中充當主調函數,而在另一個調用與被調用關系中充當被調函數。調用函數之前先要聲明函數原型。按如下形式聲明:類型標識符被調函數名(含類型說明的形參表);聲明了函數原型之后,便口I以按如下形式調用子函數:函數名(實參列表)3什么叫內聯函數?它有哪些特點?解:定義時使用關鍵字uilme的函數叫做內聯函數;編譯器在編譯時在調用處用函數體進行替換,節省了參數傳遞、控制轉移等開銷:內聯函數體內不能有循環語句和switch語句;內聯函數的定義必須出現在內聯函數第一次被調用之前;對內聯函數不能進行異常接口聲明;構造函數和析構函數有什么作用?構造函數的作用就是在對象被創建時利用特定的值構造對象,將對象初始化為一個特定的狀態,使此對象具有區別于彼對彖的特征,完成的就是是一個從一般到具體的過程,構造函數在對象創建的時候由系統自動調用。析構函數與構造函數的作用幾乎正好相反,它是用來完成對象被刪除前的一些清理工作,也就是專門作打尾工作的。一般情況下,析構函數是在對彖的生存期即將結束的時刻由系統自動調用的,它的調用完成之后,對象也就消失了,相應的內存空間也被釋放。什么叫做可見性?可見性的一般規則是什么?可見性是標識符是否可以引用的問題;可見性的一般規則是:標識符要聲明在前,引用在后,在同一作用域中,不能聲明同名的標識符。對于在不同的作用域聲明的標識符,遵循的原則是:若有兩個或多個具有包含關系的作用域,外層聲明的標識符如杲在內層沒有聲明同名標識符時仍町見,如呆內層聲明了同名標識符則外層標識符不可見。面向對象的編程語言有哪些特點?面向對彖的編程語言與以往各種編程語言有根本的不同,它設計的出發點就是為了能更直接的描述客觀世界中存在的爭物以及它們之間的關系。面向對彖的編程語言將客觀爭物看作具有屬性和行為的對彖,通過抽彖找出同一類對象的共同屬性(靜態特征)和行為(動態特征),形成類。通過類的繼承與多態可以很方便地實現代碼重用,人人縮短了軟件開發周期,并使得軟件風格統一。因此,面向對象的編程語言使程序能夠比較直接地反問題域的本來面目,軟件開發人員能夠利用人類認識爭物所采用的一般思維方法來進行軟件開發。C++語言是目前應用最廣的面向對彖的編程語言。注釋有什么作用?C卄中有哪幾種注釋的方法?他們之間有什么區別?注釋在程序中的作用是對程序進行注解和說明,以便于閱讀。編譯系統在對源程序進行編譯時不理會注釋部分,因此注釋對于程序的功能實現不起任何作用。而且由于編譯時忽略注釋部分,所以注釋內容不會增加最終產生的可執行程序的犬小。適當地使用注釋,能夠提高程序的可讀性。在C卄中,有兩種給出注釋的方法:一種是延用C語言方法,使用“/*“和”護括起注釋文字。另一種方法是使用”〃”,從”〃”開始,直到它所在行的行尾,所有字符都被作為注釋處理。比較值調用和引用調用的相同點與不同點。值調用是指當發生函數調用時,給形參分配內存空間,并用實參來初始化形參(直接將實參的值傳遞給形參)。這一過程是參數值的單向傳遞過程,一旦形參獲得了值便與實參脫離關系,此后無論形參發生了怎樣的改變,都不會影響到實參。引用調用將引用作為形參,在執行主調函數中的調用語句時,系統自動用實參來初始化形參。這樣形參就成為實參的一個別名,對形參的任何操作也就直接作用于實參。解釋public和private的作用,公有類型成員與私有類型成員有些什么區別?公有類型成員用public關鍵字聲明,公有類型定義了類的外部接II:私有類型的成員用private關鍵字聲明,只允許本類的函數成員來訪問,而類外部的任何訪問都是非法的,這樣,私有的成員就整個隱蔽在類中,在類的外部根本就無法看到,實現了訪問權限的有效控制。什么叫做靜態函數成員?它有何特點?使用static關鍵字聲明的函數成員是靜態的,靜態函數成員屬于整個類,同一個類的所有對象共同維護,為這些對象所共享。靜態函數成員具有以卞兩個方面的好處,一是由于靜態成員函數只能直接訪問同一個類的靜態數據成員,町以保證不會對該類的其余數據成員造成負面影響;二是同一個類只維護一個靜態函數成員的拷貝,節約了系統的開銷,提高程序的運行效率。四、編程題編寫一個遞歸函數求滿足以下條件的最人的n:I2+22+???+n2<1000#include<iostream>usingnamespacestd;intfindn(int,int);intmain(){cout<<"n="?findn(0,0)?endl;return0;}intfindn(intn,ints){intsi,nl;si=s+n*n;if(sl<1000){nl=n+1;findn(nl,si);}elsereturnn"l;}運用函數重載的原理,設計兩個求面積的函數:area();//求圓面積,需要傳遞一個參數area();//求矩形面積,需要傳遞兩個個參數編寫主函數,然后自行輸入數據進行測試。#include<iostream>usingnamespacestd;constdoublePI=3.1415926;doublearea(floatr)//求圓面枳,需傳遞一個參數{returnPI*r*r;}doublearea(floatx,floaty)//求矩形面枳,需傳遞兩個參數{returnx*y;}intmainO{floata,b,r;cout?"輸入圓半徑:cin>>r;cout<<"圓面積:"?area(r)?endl;cout<<"輸入矩形的長和寬:";cin>>a>>b;cout<<"矩形面積:"《area(a,b)<<endl;return0;}/*運行結果:輸入圓半徑:1圓面積:3.14159輸入矩形的長和寬:24矩形面積:8定義一個rectangle類,用于計算兩個給定長方形的面積,其中在設計類成員函數addarea()(用于計算兩個長方形的面積之和),使用rectangle類的對彖作為參數。#include<iosusingnamespacestd;classrectangle{private:doublelength,width;public:rectangle0{};rectangle(doublea,doubleb){

length=a;width=b;voidaddarea(rectanglerl,rectangler2){cout?"總面枳:"?rl.length*rl.width+r2.length*r2.width?endl;}};intmainO{rectangleA(3.5,2.5),B(4.2,3.8),C;C?addarea(A,B);return0;}已知一個三角形中三條邊的長度分別為養b和c,編寫程序利用公式Js(s一d)(S—b)G—c)求出三角形的面積,其中S二(a+b+c)/2o要求邊長a、b、c的值由鍵盤輸入,并確保任意兩邊的長度之和人于等于第三條邊。#include<iostream>#include<cmath>s,area;c,b,c=bs,area;c,b,c=b?c;floata,b,cout?,za,cin>>a>>if(a+b>=c&&b+c>=a&&c+a>=b)s=(a+b+c)=sqrt(s*<<if(a+b>=c&&b+c>=a&&c+a>=b)s=(a+b+c)=sqrt(s*<<z,area=areacout}else/2.0;(s~a)*(s~b)*(s-c));"?area?endl;cout"Itisnotatrilateral!?endl;cout:return0;}生成一個Trigon類表示三角形,三邊的長度作為其3個數據成員。編寫一個求3個數之和的函數sum(Trigontri) 注意:其函數參數為Trigon類的對■彖,并將它聲明為Trigon的一個友元函數。實例化一個對象tril,三邊分別為3、4、5o利用Sum()求出該三角形的周長。定義Trigon類,包含3個數據成員a、b和c分別表示三角形三邊的長度,數據類型為float,并將函數sum()聲明為其友元函數。程序執行結果為:邊長為3、4、5的三角形的周長為:12#include<iostrEam>usingnamespacestd;classTrigon{private:floata,b,c;public:Trigon(floatx,floaty,floatz){a=x;b=y;c=z;}friendfloatsum(Trigontri); //聲明友元函數};//編寫函數sum()floatsum(Trigontri){returntri?a+tri.b+tri.c;}//實例化一個三角形對彖,其三邊長度為3、>1和5,利用函數sum()求其周長intmainO{Trigontril(3,4,5);cout<<"邊長為3、4、5的三角形的周長為:"?sum(tri1)?endl;retur

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論