C++程序設計(第2版)-習題解答C++程序設計第2版普通高等教育“十一五”國家級規劃教材習題答案作者鄧振杰C++程序設計習題解答_第1頁
C++程序設計(第2版)-習題解答C++程序設計第2版普通高等教育“十一五”國家級規劃教材習題答案作者鄧振杰C++程序設計習題解答_第2頁
C++程序設計(第2版)-習題解答C++程序設計第2版普通高等教育“十一五”國家級規劃教材習題答案作者鄧振杰C++程序設計習題解答_第3頁
C++程序設計(第2版)-習題解答C++程序設計第2版普通高等教育“十一五”國家級規劃教材習題答案作者鄧振杰C++程序設計習題解答_第4頁
已閱讀5頁,還剩101頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

《C++程序設計》習題解答

第1章C++概述.填空題(1)在面向對象程序設計中,對象是由ヽ和封裝在ー起構成的實體。(2)在面向對象程序設計中,類是具有和的對象的集合,它是對ー類對象的抽象描述。(3)面向對象程序設計最突出的特點就是ヽ和〇C++語言包含頭文件的格式有兩種,即和=C—源程序要經過ヽヽ和四個環節,才能在屏幕上顯示結果。(6)每個C++程序都從函數開始執行。(7)每個函數體都以開始,以結束。C++程序中的每條語句以結束。C++程序的頭文件和源程序的擴展名分別為和,目標程序的擴展名為,可執行程序的擴展名為〇(10)在C++程序中使用基本輸入/輸出語句需包含的頭文件是,應放在程序的。(11)在C++程序中注釋語句有和兩種格式。(12)C-程序的續行符為。(13)如果從鍵盤輸入語句給變量X,則輸入函數的形式為;如果再將變量X的值顯示在屏幕上,其輸出函數的形式為。(14)C++程序中的“endl”在輸出語句中起作用〇參考答案:(1)對象名,ー組屬性數據,ー組操作(2)相同屬性數據,操作(3)封裝性,繼承性,多態性(4)#include<文件名.擴展名〉,include”文件名.擴展名”(5)編輯,編譯,連接,運行(6)主函數⑺{ヽ}(8)分號;.h,.cpp,.obj,.exe#include<iostream.h>,開始部分/**/,//\cin?X>cout?X(14)換行并清空流2.選擇題(1)面向對象程序設計把數據和( )封裝在ー起。A.數據隱藏 B.信息C.數據抽象 D.對數據的操作(2)C++源程序的擴展名是( )。A.cB.exeD.pchC.cppA.cB.exeD.pchTOC\o"1-5"\h\z(3)把高級語言程序轉換為目標程序需使用( )?A.編輯程序B.編譯程序 C,調試程序 D.運行程序C++語言與C語言相比最大的改進是( )=A.安全性B.復用性C.面向對象D.面向過程(5)以下敘述不正確的是( )?C++程序的基本単位是函數一GH?程序可由一個或多個函數組成一個C++程序有且只有一個主函數C++程序的注釋只能由現在語句的后面參考答案:D(2)C(3)B(4)C(5)D.簡答題(1)試比較面向對象程序設計、結構化程序設計和模塊化程序設計。(2)解釋以下概念:類對象封裝數據抽象繼承多態(3)簡述C++語言有哪些特點。參考答案:(1)結構化程序設計強調從程序結構和風格上研究程序設計。結構化程序設計的程序代碼是按順序執行的,有一套完整的控制結構,函數之間的參數按一定規則傳遞,不提倡使用全局變量,程序設計的首要問題是“設計過程'模塊化程序設計將軟件劃分成若干個可單獨命名和編址的部分,稱之為“模塊”。模塊化程序設計的設計思路是“自頂向下,逐步求精”,其程序結構是按功能劃分成若干個基本模塊,各模塊之間的關系盡可能簡單,在功能上相對獨立。模塊和模塊之間隔離,不能訪問模塊內部信息,即這些信息對模塊外部是不透明的,只能通過嚴格定義的接口對模塊進行訪問。模塊化程序設計將數據結構和相應算法集中在ー個模塊中,提出了“數據結構+算法=程序設計”的程序設計思想。模塊化能夠有效地管理和維護軟件研發,能夠有效地分解和處理復雜問題。但它仍是ー種面向過程的程序設計方法,程序員必須時刻考慮所要處理數據的格式,對不同格式的數據做相同處理或對相同數據格式做不同處理都要用新編程,代碼可重用性不好。面向對象程序設計面對的是一個個對象,用?種操作調用ー組數據。把數據和有關操作封裝成一個對象。各個對象的操作完成了,總的任務也就完成了。他適用于編寫大型程序。結構化程序設計和模塊化程序設計適用于比較小的程序,他要求細致的描寫程序設計的每個細節。(2)類:在面向對象程序設計中,類是具有相同屬性數據和操作數據的函數的封裝,它是對ー類對象的抽象描述。對象:在面向對象程序設計中,對象是由對象名、ー組屬性數據和一組操作封裝在ー起構成的實體。其中屬性數據是對象固有特征的描述,操作是對這些屬性數據施加的動態行為,是ー系列的實現步驟,通常稱之為方法。封裝:封裝是ー種數據隱藏技術,在面向對象程序設計中可以把數據和與數據有關的操作集中在ー起形成類,將類的一部分屬性和操作隱藏起來,不讓用戶訪問,另一部分作為類的外部接口,用戶可以訪問。數據抽象:抽象的作用是表示同類事物的本質,C++中的數據類型就是對ー批具體的數的抽象。類是對象的抽象,對象是類的特例。繼承:在面向對象程序設計中,繼承是指新建的類從已有的類那里獲得已有的屬性和操作。多態:在面向対象程序設計中,多態性是指相同的函數名可以有多個不同的函數體,即ー個函數名可以對應多個不同的實現部分。(3)面向對象程序設計最突出的特點就是封裝性、繼承性和多態性。①封裝性封裝是ー種數據隱藏技術,在面向對象程序設計中可以把數據和與數據有關的操作集中在ー起形成類,將類的一部分屬性和操作隱藏起來,不讓用戶訪問,另一部分作為類的外部接口,用戶可以訪問。類通過接口與外部發生聯系,用戶只能通過類的外部接口使用類提供的服務,而內部的具體實現細節則被隱藏起來,對外是不可見的。②繼承性在面向對象程序設計中,繼承是指新建的類從已有的類那里獲得已有的屬性和操作。已有的類稱為基類或父類,繼承基類而產生的新建類稱為基類的子類或派生類。由父類產生子類的過程稱為類的派生。通過繼承,程序可以在現有類的基礎上聲明新類,即新類是從原有類的基礎上派生出來的,新類將共享原有類的屬性,并且還可以添加新的屬性。繼承有效地實現了軟件代碼的重用,增強了系統的可擴充性。③多態性在面向對象程序設計中,多態性是指相同的函數名可以有多個不同的函數體,即ー個函數名可以對應多個不同的實現部分。在調用同一函數時,由于環境的不同,可能引發不同的行為,導致不同的動作,這種功能稱為多態。它使得類中具有相似功能的不同函數可以使用同一個函數名。多態既表達了人類的思維方式,又減少了程序中標識符的個數,方便了程序員編寫程序。多態是面向對象程序設計的重要機制。.編程題編寫程序在屏幕上顯示字符串“歡迎大家學習C++語言!”,并按照書中介紹練習C++語言的上機實現過程。參考答案:#include<iostream.h>voidmain()cout?”歡迎大家學習GH?語言”《endl;第2章C++程序設計基礎1.填空題VisualC++中如果一個變量為int型,它所占的內存空間是字節,位。shortint型變量占用的內存空間是字節,longint型變量占用的內存空間是字節,char型變量占用的內存空間是字節,float型變量占用的內存空間是字節,double型變量占用的內存空間是字節。bool類型數據的值為非〇時會自動轉換成,如果等于。會自動轉換成C++程序中的關系運算符滿足條件時返回,不滿足條件時返回?(5)表達式x&&y>=z是類型的表達式;表達式x+y||z是類型的表達式。¢6)表達式K3&&5V7的值是,表達式!(5<8)]|2<6的值是。(7)表達式a+b<c&&d==5中運算符優先級由高到低的排列順序是。(8)試寫出下列各表達式的含義。y=x?2 y=3*++x a>b?max=a:max=b y=x*-y (x-y)==(x-z) y=xA2 x*=y+l (9)以下程序的功能是:從鍵盤輸入ー個字符,判斷其是否是字母,并輸出相應信息,請填空。#include<iostream.h>voidmain()(charc;cin?c;if((c>='aTc<=fz')_(c>='A'c〈=Z))cout<<”接收的是ー個字母"<<endl;elsecout?”接收的不是ー個字母""endl;}(10)以下程序的輸出結果是。#include<iostream.h>voidmain()(inti=0j=0;while(i<15)Ij++;i+=++j;}cout?i?"M<<j?endl;}(11)以下程序的功能是:在屏幕上同一行顯示1?9的平方的值,請填空。#include<iostream.h>voidmain(){unsignedinti;for cout?i*i?;cout?endl;)(12)以下程序的功能是:求一組(10個)正數中的最大數,當輸入為負數時提前結束程序,請填空。#include<iostream.h>voidmain(){constintN=10;intx,max=0;cout?”Pleaseinputdata:"?endl;for(inti=l;iv=N;i++){cin?x;if()(max=x;continue;)else\f( _)cout?"max="?max<<endl;}(13)以下程序的輸出結果是.#include<iostream.h>voidmain()inti=0;while(-H-i)if(i==10)break;ifi[i%3!=l)continue;cout?i?endl;(14)以下程序的輸出結果是〇#include<iostream.h>voidmain()intx=5;do|switch(x%2)(case1:x—;break;case0:x++;break;}x-;cout?x?endl;}wbile(x>0);}參考答案:(1)4,32(2)2,4,1,4,8(3)true,false(4)1,0(5)邏輯,邏輯(6)1,1(7)+v==&&(8)戸xv<2的含義:x左移兩位后的值賦值給yy=3*++x的含義:將x加1后乘以3后的值賦值給ya>b?max=a:max=b的含義:若a>b貝リ將a的值賦值給max,否則將b的值賦值給maxy=x*-y的含義:現將負y的值乘以x,再將結果值賦值給y(x-y)==(x?z)的含義:比較x?y和x-z是否相等產xハ2的含義:將x和2按位異或的值賦值給yx*=y+l的含義:將x乘以(y+1),再將結果值賦值給x&&,||,&&208i=l;i<=9;i-H-,”“x>0&&max<x,x<0,break;14731-1

2.選擇題(1)下列四組標識符中不屬于VisualC++關鍵字的是()〇A.witch B.break C.main D.continuefloat char cin case(2)下列四組變量命名,不符合VisualC++變量命名規則的是( )。A.ccB.6xC.wlD.ye_78avercharyear78woA.ccB.6xC.wlD.ye_78avercharyear78woB.unsignedshorta;signedintb;B.unsignedshorta;signedintb;D.inta;signedintb;oB,只能是關系表達式和邏輯表達式D.可以是任意表達式)〇C.tl=false D.tl=lt2=true t2=0t3=false t3=l)ed=6d=6d=6d=6(3)假設有兩個變量a=65432和b=a*2,在保證數據正確存儲的前提下,以下變量類型定義錯誤的是()〇A.inta;intb;C.unsigncdshorta;unsignedshortb;(4)在if語句中的表達式(A,只能是關系表達式C,只能是邏輯表達式(5)以下程序的輸出結果為(A.tl=true B.tl=8t2=false t2=0t3=true t3=-l#include<iostream.h>voidmain()(booltl=8;boolt2=0;boolt3=-l;cout?"tl="?tl?endl;cout?"tl="?t2?endl;cout?"tl="?t3?endl;}(6)以下程序的輸出結果為(TOC\o"1-5"\h\za=13 b=4 c=3a=13 b=8 c=4C.a=13 b=4 c=4a=13 b=8 c=3#include<iostream.h>voidmain(){intx=8,y=5;inta,b,c,d;a=x+y-;b=x/y?2;c=x?y++;d=x%y*2;cout?Ma="?a?Hb=H?b;cout?Mc=^,?c?^^d=,,?d?endl;}參考答案:(1)A(2)B(3)C(4)D(5)D(6)B3.簡答題(1)字符常量和字符串常量有什么區別?(2)定義符號常量的方法有哪些?它們有什么區別?。(3)while與do-while語句的主要區別是什么?參考答案:(1)在C++語言中,字符串常量和字符常量是不同的。字符串常量是用ー對雙引號括起來的字符序列。例如,"a"、"123"、"hello"等都是字符串常量。一般字符常量是用一對單引號括起來的一個字符,其值為ASCII碼值。例如,豆、,ベ、$、5等都是合法的字符常量。C++語言提供了兩種定義符號常量的方法:①用const語句定義符號常量這種方法是C++語言中廣泛采用的定義符號常量的方法,其一般格式為:const數據類型符號常量=表達式;②用#define語句定義符號常量這是C語言中定義符號常量的方法,其中#define是預處理指令。其缺點是不能顯示聲明常量的類型。其一般格式為:#define常量名常量值while把循環條件判斷放在循環體執行前,而do-while循環條件判斷放在循環體執行后,不管循環條件是否成立,它都至少執行一次循環體。程題(1)求100以內的自然數中奇數之和。(2)求100以內能被13整除的最大自然數。(3)有一個函數如下所示:'x(x<l)y=?x+5 (l<x<10).x—5 (x>10)從鍵盤輸入ー個x,求出相應的y值。(4)輸入3個整型數,按由大到小的順序輸出顯示。(5)根據從鍵盤輸入的表示星期幾的數字,輸出它對應的英文名稱。(6)從鍵盤輸入ー個整數,求其階乘。(7)編寫ー個簡易計算器程序,根據用戶輸入的運算符做兩個數的加I、減、乘或除運算。(8)編寫程序在屏幕上打印如下圖案。***********參考答案:#include<iostrcam.h>voidmain(){intsum=0;fbr(inti=l;i<=100;)(sum=sum+i;i=i+2;}cout?H100以內奇數之和為:"vvsumwendl;)#include<iostream.h>voidmain(){intmax=0;inti=13;while(i<=100)(iRi%13=0&&max<i)max=i;i=i+13;continue;)}cout?H100以內能被13整除的最大自然數為:“wmaxvvendl;}#include<iostream.h>voidmain(){floatx,y;cin?x;if(x<l)y=x;elseifi(x>=l&&x<=10)y=x+5;elsey=x-5;cout?y?endl;)#include<iostream.h>voidmain(){intinta,intb,intc;cin?inta?intb?intc;if(inta<intb)ifi[intb<intc)cout?intc?",'?intb?Mn?inta;else{cout?intb?M”;if(inta<intc){cout?intc?"M?inta;}else{cout?inta?Mn?intc;}elseif(inta<intc){cout?intc?MM?inta?M"?intb;}else{cout?inta?"**;ifl(intb<intc){cout?intc?M*'?intb;}else{cout?intb?MM?intc;}}#include<iostream.h>voidmain(){intdata;cout?npleaseinputthedata(0-6):M;cin?data;switch(data){case0:cout?,,Sunday,,?endl;break;case1:cout?MMonday"?endl;break;case2:cout?,,Tuesday,,?endl;break;case3:cout?MWednsdayM?endl;break;case4:cout?HThursdayM?endl;break;case5:cout?,,Friday,,?endl;break;case6:cout?,,Satuday,,?endl;brcak;default:cout?,,errorH?endl;}}#include<iostream.h>voidmain()(intn,t=l;cout?MPleaseinputainteger:u?endl;cin?n;if(n<0){cout?MError!n?endl;return;}elseif(n=0||n=l)t=l;elsefbr(inti=l;i<=n;i++)t=t*i;cout<<Mn!=,,?t?endl;voidmain()(floatx,y;charch;coutw”請輸入兩個操作數:";cin?x?y;coutvv”請輸入運算符+??/:”;cin?ch;switch(ch)(case :cout?x+y?end1;break;caseIJ:cout?x-y?endl;brcak;case,*,:cout?x*y?endl;break;caseソ':coutvvx/yv〈endl;break;default:cout〈v”輸入有誤,退出!";})#include<iostream.h>voidmain(){fbr(inti=0;i<5;i++)fbr(intj=0;j<2*i+lj++)cout?"*"?"";cout?endl;第3章函數空題(1)在C++中,ー個函數一般由兩部分組成,分別是和¢2)在C++中,若沒有定義函數的返回類型,則系統默認為型。(3)當一個函數沒有返回值時,函數的類型應定義為。(4)在C++中,函數的參數傳遞可有三種形式,即ヽ和(5)在函數體外定義的變量是變量:在函數體內定義的變量是變量。(6)在C++的一個程序內可以定義多個同名的函數,稱為。(7)在ー個函數的定義或聲明前加上關鍵字,該函數就聲明為內聯函數。(8)若在一個函數中又調用另ー個函數,則稱這樣的調用過程為函數的調用。(9)在調用ー個函數的過程中出現直接或間接調用該函數本身,就稱作函數的調用。(10)在程序中可以使用系統函數,但是要在程序的說明函數所在的頭文件名。(11)以下程序的輸出結果為〇#include<iostream.h>#defineN8voidfiin(int);voidmain()(fbr(inti=l;i<N;i++)fun(i);}voidfun(intx){inta=0,b=2;cout?(a+=x+3,a+b)?endl;}(12)以下程序的輸出結果為?#include<iostream.h>constintN=5;voidfun();inta=0;voidmain()(fbr(inti=l;i<N;i++)fun();)voidfun()intb=2;cout?(a+=3,a-i-b)?endl;)(13)以下程序的輸出結果為0#include<iostrcam.h>intm=3;voidfiin(intm)(m=6;)voidmain()(fim(m);cout?Mm=,,?m?,,\n";}(14)以下程序的輸出結果為0#include<iostream.h>intgcd(int,int);voidmain()(inta,b;a=16;b=24;cout?44GCD(4t?a?,,,?b?,,)=,,?gcd(a,b)?endl;)intgcd(inta,intb)(ifi(b=O)returna;elsereturngcd(b,a%b);}參考答案:(1)函數頭,函數體intvoid(4)傳值調用,傳址調用,引用調用(5)全局變量,局部變量(6)函數重載(7)inline(8)嵌套(9)遞歸(10)開始處6789101112581114m=3GCD<16,24>=82.選擇題(1)以下敘述不正確的是( )?A,函數是構成C++程序的基本元素B.程序總是從第一個定義的函數開始執行C.主函數是C++程序中不可缺少的函數D.在函數調用之前,必須要進行函數的定義或聲明TOC\o"1-5"\h\z(2)以下函數聲明正確的是( )。doublefun(intx,inty) B,doublefiin(intx;inty)C.doublefun(intx,inty); D.doublefun(intx,y);(3)當ー個函數無返回值時,函數的類型應為( ).A.任意 B.void C.int D.char(4)下列關于函數聲明說法不正確的是( )?voidfiin(void);A.函數聲明是一條獨立的語句,必須以分號結尾B.函數聲明通常放在程序的開始部分C.函數fun無參數傳入D.函數fun返回一?個值,其類型為void(5)下列關于return語句的說法錯誤的是( )。A.在函數中通過return語句返回一個函數值return語句中表達式的類型決定函數返回的類型C.在無返回值的函數體中可以沒有return語句D.當函數返回值的類型為void時,函數中不應出現return(表達式)(6)下列關于重載函數的說法正確的是( )。A.重載函數必須具有不同的返回值類型B,重載函數形參個數必須不同C.重載函數必須具有不同的形參列表D,重載函數名可以不同一個函數為voidHint,floats’絃),另ー個函數為voidf(int),則它們( ),A.不能在同一個程序中定義B.可以在同一個程序中定義并可重載C.可以在同一個程序中定義,但不可重載D,以上說法均不正確(8)下列函數定義中正確的是( )。A.doublefun(doublex,y) B.doublefun(doublex,doubley)doublez;returnx/y;

doublez;z=x/y;z=x/y;returnz;C.doublefun(doublex,y)z=x/y;returnz;C.doublefun(doublex,y)z=x/y;returnz;z=x/y;returnx/y;(9)下列關于默認參數值函數說法錯誤的是( )。A.C++中,允許設置參數的默認值B.必須從參數表最右邊的參數開始,設置參數的默認值C.在函數聲明和函數定義中,默認參數的值必須相同D,函數調用時,帶默認值的參數無實參輸入時,使用默認值(10)下列程序的輸出結果為( ).A.10,20,30 B.35,7,5 C.35,20,10D.10,20,35#include<iostream.h>intfim(inta,intb,intc)(a=5;b=a+2;c=a*b;return(c);}voidmain(){inta=10,b=20,c=30;c=fun(a,b,c);cout?c?M,n?b?M,"?a?,,\nM;}(11)下列程序的輸出結果為()〇A.0 B.4 C.15 D.60#include<iostream.h>intfun(inta,intb){intc;c=a*b;return(c);}voidmain(){inta=3,b=5,c=4,x=0;x=fun(fun(a,b),c);cout?x?endl;

)(12)下列函數的返回類型為()〇D,無法確定D.x=25D,無法確定D.x=25fiin(void){floatx=3.0,y;y=x*x/2;return(y);)(13)下列程序的輸出結果為( )?A.x=15 B.x=17 C.x=23#include<iostrcam.h>intx=5;intfun(inta)|intc;c=x*a;return(c);voidmain(){intx=3;inta=4;x=x+fun(a);cout?Mx=,,?x?endl;}參考答案:(1)B (2)C (3)B (4)D(5)B(6) C(7)C(8)B(9)C (10)C (11)D(12) C(13)C3.簡答題(1)在C++中,函數定義的格式是怎樣的?(2)什么是函數的聲明?函數聲明和函數定義有什么區別?是否必須要進行函數的聲明?(3)什么是內聯函數?引入內聯函數的目的是什么?(4)什么是函數重載?函數重載的原則是什么?(5)函數的嵌套調用應注意什么?(6)函數的遞歸調用的步驟是什么?(7)什么是局部變量?什么是全局變量?(8)在C++中,如何使用系統函數?參考答案:(1)類型函數名(形參表)語句序列(2)函數原型乂稱函數聲明,用來告訴編譯器函數的名稱、函數的返回類型、函數要接收的參數個數、參數類型和參數順序,編譯器用函數原型驗證函數調用。在定義函數之前常用函數原型加以說明。函數原型通常位于程序代碼的開始處。在函數原型說明中也可以不給出參數名,只給出類型。如果函數調用在函數定義之前則必須聲明。若在后則可以不用聲明。(3)內聯函數是在函數名第一次出現時在函數名之前冠以關鍵字inline。在程序編譯時,編譯器將程序中出現的內聯函數的調用表達式用內聯函數的函數體進行替換。使用內聯函數,加快了程序的執行速度,節省程序運行時的開銷。(4)函數重載是指同一個函數名可以對應著多個不同函數的實現。原則:函數重載要求編譯器能夠唯一一地確定調用ー個函數時應執行哪個函數代碼。確定函數時,編譯器是通過函數的參數個數、參數類型和參數順序來區分的。也就是說,進行函數重載時,要求同名函數參數個數不同、參數類型不同或參數順序不同。否則,將無法確定是哪ー個函數體。(5)在使用函數的嵌套調用時要注意函數的返回地址,在函數體執行完畢后,一定要返回調用該函數的主調函數,不能出現越級返回的情況。(6)第一階段:遞推。將原問題不斷分解為新的子問題,逐漸從未知向已知遞推,最終達到一知的條件,即遞歸結束的條件,這時遞推階段結束。第二階段:回歸。從已知條件出發,按照遞推的逆過程,逐一求值回歸,最后達到遞歸的開始處,結束回歸階段,完成遞歸調用。(7)在函數或者類內說明的變量是局部變量。全局變量是在函數和類外部定義的變量。(8)CH將所提供的系統函數的說明分別放在不同的頭文件中,即.h文件,在程序中使用系統函數時,要在程序開始處說明函數所在的頭文件名。4.編程題(1)從鍵盤輸入10個浮點數,求其和及其平均值。要求寫出其和及平均值的函數。(2)編寫函數ftm,函數首部為doublefun(intn),其功能是計算S=Si!的值,并通過函數值返回主調函數。 1(3)輸入一個年份,判斷是否是閏年。(4)寫出ー個函數,使從鍵盤輸入的ー個字符串反序存放,并在主函數中輸入、輸出該字符串。(5)編寫ー個函數,其功能是:輸入全班學生的成績,以負數結束輸入,統計學生人數,作為函數值返回主調函數,并計算平均分,通過函數ave返回主調函數。參考答案:voidsa()floatx,sum=0,ave=0;cout?”請輸入10個符點數:“wend匕fbr(inti=0;i<10;i++)cin?x;sum=sum+x;ave=sum/10;"?ave?endl;cout?M10個符點數的和為:“wsumvv”;平均值為:}"?ave?endl;doublefun(intn){intsum=0,fac=l;fbr(inti=l;i<=n;i-H-){fac=fac*i;sum=sum+fac;)retum(sum);)voidleap(intyear){intflag;iRyear%4==0)ifi(year%100=0)if(year%400=0)flag=l;elseflag=0;elseflag=l;elseflag=0;ififflag)coutwyearvv"年是閏年"vvendl;elsecoutwyeaEV”不年是閏年"vvendl;)#include<iostream.h>voidinverts(){charch;cin?ch;if(ch=='〇')return;elseinverts();cout?ch;}voidmain()(coutw”請輸入字符串,輸入0結束:”vvendl;inverts();cout?endl;)#include<iostream.h>inttotal(float&ave)floatscore;floatsum=0;intn=0;coutvぐ請輸入全班學生成績,以負數結束"vvendl;cin?score;do(n=n+l;sum=sum+score;cin?score;}while(score>0);ave=sum/n;returnn;)floatave()(floataverage;coutvv"人數為:tt?total(average)?endl;returnaverage;)voidmain()(coutw”平均值為:”v〈ave()vvendl;第4章數組1.填空題(1)若定義inta[8];則a數組元素下標的下限是,上限是〇(2)若定義floatb[3][4]:則b數組中含有個類型的數組元素。(3)在C++中二維數組的存放順序為〇(4)要使一個數組a[5]中全部元素的值為0,可以定義為。(5)以下程序段為數組a中所有元素輸入數據,請填空。voidmain()(inti,a[5];fbr(i=O;i<5;i++)cin?;)(6)以下程序按2行3列輸出二維數組,請填空。#include<iostream.h>voidmain(){intb[2][3]={l,2,3,4,5,6),ij;fbr(i=O;;i++)(fbr(j=O;J++)cout?b[i][j]?")(7)下列函數的功能是:將數組a中n個元素逆序存放,請填空。voidinvert(inta[],intn){inti=0j=n-l;while()(intt;t=a[i];a[j]=t;if)(8)一知整數數組b[2][5]={{7,15,2,8,20},{12,25,37,16,28}},求數組中所有元素的最大值,請填空。#include<iostream.h>voidmain()intb[2][5]=:intij,c,d,k=O;fbr(i=0;i<2;i++)for(j=O;J++)if(b[i]U]>k)c=i;d=j;}cout?"b["?c?"]["?d?"]="?k?endl;)參考答案:0,712,float按行優先順序存放inta[5]={0,0,0,0,0};或inta[5]={〇};bKstaticinta[5];a[i]i<2,j<3,cout?endl;⑺i<=j,a[i]=a[j],j—(8){{7,15,2,8,20},{12,25,37,16,28}},j<5,k=b[i][j]2.選擇題(1)C++中引用數組元素時,其數組下標的數據類型允許是( )。A.整型表達式 B.整型常量C.整型常量或整型表達式 D.任何類型的表達式(2)下列對ー維整型數組a的正確說明是( ).A.inta(10); B.intn=10,a[n];C.血n; D.#defineSIZE10;cin?n; inta[SIZE];inta[n];(3)下列數組說明和初始化正確的是( ).A.inta[5]=0; B.intb[3]={l,2,3,4};C.floatc[]={1,2,3}; D.floatd={5.3,6.0};(4)下列數組說明和初始化錯誤的是( )?A.inta[2][3]={l,2,3,4,5,6};B.intb[][3]={2,3,4,5};C.intc[3][2]={{1},{2},{3}};D.floatd[3][]={5.3,6.0,6.8};(5)若有以下定義,則對a數組元素錯誤的引用是()〇inta[5]={1,2,3,4,5};A.a[0] B.a[2] C.a[a[4]-2]D.a[5](6)若有以下定義,則數組元素a[3]的值是( )。inta[5]={1,2,3};A.0 B.1 C.2 D.3(7)若有以下定義,則對a數組元素正確的引用是()〇floata[2][3]={l,2,3,4,5,6};A.a[l] B.a[0][3]C.a[2][2]D.a[l][l](8)若有以下定義,則數組元素b[2][2]的值是()〇intb[][3]={{l},{2,3},{4,5,6},{7});A.0 B.3 C.5 D.6(9)下列對字符數組s初始化錯誤的是( )。A.chars[5]={nabcM}; B.chars[5]=「a','b',で};C.chars[5]=" D.chars[5]="abcde”;(10)對兩個數組a和b進行初始化:chara[]=,,abcden;charb[]={'a',b','c','d',七’};TOC\o"1-5"\h\z則下列敘述正確的是( )。A.a與b完全相同 B.a與b長度相同C.a與b中都存放字符 D.a數組比b數組長度長(11)若有以下定義,則對字符串的操作錯誤的是( )。chars[10]="program”4]="test”;A.strcpy(s,t) B.cout?strlen(s);C.strcat(s,t) D.cin?t;(12)下列程序的運行結果是( )〇A.0 B.6 C.7 D.8#include<iostream.h>intfiin(chars[]){inti=0;while(s[i])i++;returni;)voidmain()(cout?fun(HabcdefgH)?endl;)(13)下列程序的運行結果是()〇A.ABC123B.123abc C.123ABC D.123ABCde#include<iostream.h>#include<string.h>voidmain()(charsl[10]=Habcden,s2[10]="123",s3[]=“ABC”;cout?strcat(s2,strcpy(sl,s3))?endl;}參考答案:(1)C(2)D(3)C(4)D(5)D(6)A(7)D(8)D(9)D(10)D(11)C(12)C(13)C3.編程題(1)定義ー個整型的ー維數組,并將各數組元素都賦值為該數組下標值的2倍。(2)定義ー個整型的二維數組,每個數組元素的賦值規則為:行下標值加上列下標值。(3)定義一個整型的二維數組,要求使用二重循環將每個數組元素都賦值為2。(4)統計輸入字符串中數字,字母和其它字符的個數。(5)從鍵盤上任意輸入15個數,找出其中的最大數及其位置。(6)從鍵盤上任意輸入!5個數,按照從大到小的順序輸出(7)從鍵盤上任意輸入15個小寫字母,變成大寫字母后按反序輸出。(8)Erarosthenes法求100以內的所有素數,按從小到大依次排列。所謂Erarosthenes法:1不是素數,除去它;2是素數,則它的倍數不是素數,去掉它們;3是素數,則它的倍數不是素數,去掉它們。依次類推,直到所給定的數。(9)打印如下圖形。參考答案:#include<iostream.h>voidmain(){inta[5];fbr(inti=0;i<5;i++)a[i]=2*i;)#include<iostream.h>voidmain(){inta[5][10];fbrfinti=0;i<5;i++)(fbr(intj=0;j<10;j++){a[i皿=i+j;cout?a[i][j]?"}cout?endl;#include<iostream.h>voidmain(){inta[5][10];fbr(inti=0;i<5;i++)fbr(intj=0;j<10;j++)1a[i]U]=2;cout?a[i]U]?n”;}cout?endl;}}#include<iostream.h>#include<string.h>voidmain(){chars[20];inti=0;intdigit=0,letters=0,other=0;coutw”請輸入字符串,以、〇結束:”;cin?s;while(s[W=へ〇ッ(if(s[i]>=,0,&&s[i]<=,9,)digit-H-;elseif(s[i]>=,a'&&s[i]<=,z,||s[i]>='A,&&s[i]<=,Z,)letters-H-;elseothe什+;if)cout<ぐ數字個數為:"?digit?endl;cout?"字符個數為:"《letters?endl;cout<〈"其他字符:"?other?endl;)#include<iostream.h>voidmain(){inta[15];coutw”請輸入數值(nvl5)”《endl;inti,k,max;fbr(i=O;i<15;i++)cin?a[i];max=a[0];fbr(i=0;i<15;i-H-)ifi[a[i]>max)max=a[i];k=i;)cout?"最大值為"《max?*\ty<"下標位置為"《k?endl;)#include<iostream.h>voidmain(){inta[15];cout?"請輸入數值(nV15)"?endl;intij,t;fbr(i=0;i<15;i-H-)cin?a[i];for(i=0;i<15;i-H-)(intflag=0;fbr(j=Oj<15-i-ly++){i?a[j]<a[j+l]){t=a[j];a[j]=a[j+l];a[j+l]=t;flag=1;))ifi(flag==0)break;}fbr(i=O;ivl5;i++)cout?a[i]?Mcout?endl;)#include<iostream.h>#include<stdio.h>voidmain()(chara[20];intn=0j,i=0;charc;coutvv”請輸入小寫字母"vvendl;c=getchar();while(n<15)(a[i]=c;i++;n-H-;c=getchar();a[i]=、(T;fbr(i=O;i<n;i-H-)if(a[i]>=,a,&&a[i]<=,z,)a[i]=a[i]-32;i=Oj=n-l;while(i<=j/2){intt;t=a[i];a[i]=a[j];a[i]=t;i++;j--;}fbr(i=O;i<n;i-H-)cout?a[i]?M”;cout?endl;}#include<iostream.h>#defineN100voidmain(){inta[N+l];〃元素值置1,表示該元素是素數;置〇,表示該元素不是素數inti;fbr(i=l;i<=N;i++)a[i]=l;i=l;while((i<=N)&&(a[i]=l))(if(i=l)a[i]=0;//l不是素數else{intj=i+l;while(j<=N)(if(j%i=O)a[j]=O;j++;i++;coutvv”輸出100以內的素數:“vvendl;for(i=l;i<=N;i-H-)if(咽==1)coutvcivvM,;cout?endl;)#include<iostream.h>voidmain()(intij;for(i=0;i<5;i-H-)fbr(j=0;j<=ij-H-)cout?H”;fbr(j=0;j<5j++)cout?n*n;cout?endl;第5章結構體和共用體1.填空題(1)通常定義結構體變量可采用3種形式,即定義、定義和 定義。(2)用于訪問ー個結構體變量中的某個結構體成員要用運算符。(3)因為共用體成員采用技術,因此,每ー時刻共用體變量只有一個成員起作用,其他的成員不起作用。(4)下列程序的輸出結果為。#include<iostream.h>structabc{charc;floatv;);voidmain()(abca={B,98.5};cout?a.c?M*'?a.v?endl;)(5)函數caculate的功能是:計算45名學生4門課的平均分,請填空。#include<iostream.h>constintm=4;constintn=45;structstudent(intnumber;charname[12];floatscore[m]; 〃m門課的成績floatave; 〃平均分}stu[n]={{0}};voidcaculate(students[],intn){intij;floatsum;fbr(i=O;i<n;i-H-){sum=;fbr(j=0;i<mj++)sum= ;=sum/m;voidmain()studentpcrs[n];stdave(pers,n);(6)下面程序的運行結果為〇#include<iostrcam.h>structflower(intnum; 〃花號charname[20]; 〃花名charcolor[l0]; 〃花色floatprice;}mudan={110245「牡丹“,“red”,12};voidmain()!cout?mudan.num?^,??,\t'?mudan.color?,\t,?mudan.price?endl;}參考答案:(1)直接定義,間接定義,無名定義(2)成員(3)覆蓋B,98.50sum+s[i].score[j]s[i].ave110245牡丹red122.選擇題(1)以下關于結構體的敘述錯誤的是( )?A.結構體是用戶定義的ー種數據類型B.結構體中可設定若干個不同類型的數據成員C.結構體中成員的數據類型可以是另ー個已定義的結構D.在定義結構體時,可以為成員設置默認值(2)若有以下定義,下列說法錯誤的是( )。structex{inta;floatb;charc;}example;struct是結構體的關鍵字 B.example是結構體名a,b,c是結構體成員名 D.example是用戶聲明的結構體變量(3)下列結構體的定義正確的是( )?A.B.studentstudentstructstudentintnum;charname[10];charsex;};C.structstudent(intnum;charname[10];charsex;};intnum;charname[10];charsex;)structstudent{intnumcharname[10]charsex);(4)若有以下定義,則結構體變量初始化正確的是( ).structst(inta;charb,;doublec;);A.std[2]={lJA',10.2;2,B,9.8};B.std[2]={{l,A,10.2},{2,B,9.8)};C.std[2]={{lJAU0.2},{2JB;9.8}};D.std[2]={{l,AJ0.2}{2,B,9.8}};(5)若有以下定義,則下列對結構體變量成員操作錯誤的是()〇structperson(intnum;charname[10];floatscore[3];}wang;A.cin?wang.num; B.wang.score[2]=86;C.cin?wang.score[0]; D.="Mary^^structstudent(intnum;charname[10];charsex;structstudent(intnum;charname[10];charsex;};structstudentstul,stu2;structstudent(intnum;charname[10];charsex;}stul,stu2;D.structstudentstructstudentintnumcharname[10]charsex};intnumcharname[10]charsex};structstul,stu2;charname[10];charsex;};studentstul,stu2;(7)以下關于共用體的敘述錯誤的是(A,在定義共用體變量時可以進行初始化B.共用體變量的地址和它的各成員的地址都是同一地址C.共用體和結構體在變量的初始化方法相同D,共用體可以作為結構體的成員,參考答案:(1)D(2)B(3)C(4)C(5)D(6)D(7)C答題(1)簡述結構體和共用體的區別。參考答案:結構體是ー種用戶自定義的數據類型,結構體成員組合在ー起形成一個整體,結構體中的成員可以是不同的類型。共用體是指多種不同類型的變量從同一地址開始存放,共同占用同一段內存單元。這種含有共用體成員的結構體稱為異質結構。共用體也是ー種自定義的數據類型,由若干數據成員組成。雖然共用體與結構體有很多相似之處,但兩者還是有本質區別的。在任一時刻,結構體中的所有成員都是可訪問的,而共用體中只有一個成員可以訪問,其他所有成員都是不可訪問的。這種不同反映到存儲空間分配上就是結構體變量各成員順序存放在一段內存中,每個成員分別占有自己的內存單元,結構體變量所占存儲空間的大小等于其所有數據成員所占存儲空間的總和。而共用體變量的各成員均從同一地址開始存放,共同占用同一存儲空間,即各成員所占用的存儲空間是相互覆蓋的。因此,每個共用體變量所占存儲空間的大小等于其所有數據成員中所占存儲空間最大者的值,在任ー時刻只能從變量的首地址開始保存ー個數據成員的值。程題(1)定義ー個結構體“教師”,其成員包括姓名、性別、年齡、職稱和聯系電話。(2)定義ー個通訊錄結構,成員包括:姓名(字符串)、電話(字符串)、生日。參考答案:structteacher{charname[10];charsex;intage;charzhicheng[10];chartelephone[20];};charname[20];chartelephone[20];charbathday[20];};第6章指針和引用1.填空題(1)若定義inta;則&a的含義為。(2)若有如下定義,則的含義為。inta;int&b=a;¢3)可以直接賦給指針的唯一正數值是。(4)指針可以進行的運算有ヽ和。(5)若定義doublex;貝リ:使指針p可以指向變量x的定義語句是。使指針p指向變量x的賦值語句是。(6)若一個數組中的所有元素的值都是地址,則稱該數組為。(7)以下程序段的輸出結果為。chars[10]="abed";char*p=s;p++;cout?(strcat(s,"ABCD"));(8)若有以下定義和語句,則++(*p)的值是。inta[5]={0,l,2,3,4},*p;p=&a[3];(9)若有以下定義和語句,則*-p的值是。inta[5]={0,l,2,3,4),*p;p=&a[3];(10)函數change的功能是。voidchange(char*a)(inti=0;for(i=O;i<strlen(a)-1;i++)if(a[i]>='a'&&a[i]<='z')a[i]=a[i]-32;)(11)如果正常執行了如下語句:intm[22],*pl=&m[4],*p2=m+15,x;x=p2-pl;則X的值為0(12)如果正常執行了如下語句:intd[]={l,2,3A5,6,7,8,9,10},*pl=d+8,*p2=&d[3];pl-=3cout?*p1?'\t'?*p2;則程序的輸出為。(13)已知數組x定義為intx[10];并能順利執行語句pl=x;則pl的聲明語句為(14)已知數組y定義為inty[5];并能順利執行語句p2=&y;則P2的聲明語句為(15)運算符用于申請所需的內存單元,運算符用來釋放不需要的內存單元。(16)將?個變量另起一個別名從而用別名來操作該變量,這個別名叫做該變量的(17)下面程序的運行結果是.#include<iostream.h>voidmain()(inta=10;int*pl=&a;int*&p2=pl;cout?,,a=n?a?H,*p1=M?*pl?M,*p2=,,?*p2;}(18)下面程序的運行結果是〇#include<iostrcam.h>voidmain(){intx=100;int&xl=x;inty=200;int&yl=y;cout?Mx=M?x?n,x1=H?x1?endl;cout?,,y=,,<<y?,,,y1="?y1?endl;xl+=20;yi/=8;cout?,,x=n<<x?n,xl=n?xl?endl;cout<<ny=,,?y?,,,y1=H?yI?endl;)參考答案:(1)取變量a的地址b是變量a的引用0(4)賦值運算,算術運算,關系運算double*p;p=&x;(6)指針數組abcdABCD42將小寫字母轉為相應的大寫字母1164int*pl;

int**p2;newdelete(16)引用a=10,*pl=10,*p2=10x=100,xl=100y=200,yl=200x=120,xl=120y=25,yl=252.選擇題TOC\o"1-5"\h\z(1)若有以下定義,則變量p所占內存空間的字節數是( )?float*p;A.l B.2 C.4 D.8(2)若有以下定義,則下面說法錯誤的是( ),inta=10,*p=&a;A.聲明變量p,其中“*”表示p是一個指針變量B.聲明變量p只可以指向一個整型變量C.變量p經初始化,獲取變量a的地址D.變量p的值為!0(3)若有以下定義,則下面均代表地址的一組選項是( )。int*p,a=10;p=&a;A.a,p,*&a B. &*a,&a,*pC.&p,*p,&a D. &a,&*p,p(4)若有說明:int*pl,*p2,m=5,n;以下均是正確賦值語句的選項為( )。〃拿不準A.pl=&m;p2=&pl; B. pl=&m;p2=&n;*pl=*p2;C.pl=&m;p2=pl; D. pl=&m;*pl=*p2;(5)若有下列程序段,則下面敘述正確的是( )。chars[]="chinachar*p;P=s;A.s與p完全相同B.數組s中的內容和指針變量p中的內容相同C.s數組的長度和p所指向的字符長度相等D.*p與s[0]相等(6)若要建立如下的指向關系,錯誤的語句組是( )?P| *15aB.inta,*p=&a;*p=15;D.int*p,a;p=&a;a=15;オ有正確答案!!!!!C,B.inta,*p=&a;*p=15;D.int*p,a;p=&a;a=15;オ有正確答案!!!!!C,字符c的地址D.cC.int*p=&a,a;*p=15;(7)下列程序的運行結果為(charstr[]="abc",*p=str;cout?*(p+2):〃將3改為2,A.67 B.0(8)若有以下定義,則對數組元素的正確引用是( )。inta[5],*p=a;A.*&a[5]B.a+2 C.*(p+5) D.*(a+2)(9)若有定義:int(*p)[4];則標示符p( ).A,是ー個指向整型變量的指針B.是ー個指針數組名C.是ー個指針,它指向ー個含有4個整型元素的ー維數組D.定義不合法(10)若有以下定義,則正確的敘述是()〇Char*b[2]={"1234","5678");A.數組b的兩個元素中各存放了字符串"1234"和"5678"的首地址B.數組b的兩個元素中各存放了含有四個字符的ー維數組的首地址C.b是ー個指針,它指向含有2個數組元素的字符型ー維數組D.數組b的兩個元素值分別是,,1234"和"5678"(11)關于引用的說明,下列說法錯誤的是()〇A.任何變量都可以被引用B.不允許把為ー個變量建立的引用重新用作另ー變量的別名C,引用和其所代表的變量使用同一片存儲空間D.如果程序需要先指向一個對象,后又指向另ー對象,此時應該采用引用(12)下列程序的運行結果為( )。#include<iostrcam.h>voidmain()(inta[5]={2,4,6,8,10},*pl,**p2;pl=a;p2=&pl;cout<<*(p++)?V?**p2;A.4 4 B.2 4C.2 2D.4 6參考答案:(1)C(2)D(3)D(4)C(5)D(6)C(7)D(8)D(9)C(10)A(11)D(12)C3.編程題(1)設有一個整型數組,有10個元素,請用3種不同的方法輸出各元素。(2)假設有一個字符串strl,其內容為“Hello!”,請利用指針將該字符串的內容復制到另ー個字符串str2中。(3)輸入10個字符串,將它們排序,然后輸出這10個已排好序的字符串。編寫3個函數分別用于輸入、排序和輸出,并在main。函數中調用它們。(4)編寫程序,將輸入字符串中的大寫字母轉換為小寫字母,并顯示輸出。(5)輸入一個字符串,然后將它們逆序輸出。例如:輸入“abed”,輸出“deba”。參考答案:#include<iostream.h>voidmain()inta[]={1,3,5,6,7,8,9,2,4,1},i,*p;for(i=0;i<10;i++)cout?a[i]?tfM;cout?endl;fbr(p=a;p<a+!0;p++)cout?*p?"n;cout?endl;fbr(i=0;i<10;i++)cout?*(a+i)?Hcout?endl;}#include<iostream.h>#include<string.h>voidmain(){charstrl[]={'h7e,,T,T;o',,\0,};char*str2;str2=newchar[strlen(str1)+1];for(inti=O;*(strl+i)!=W;i++)(str2[i]=strl[i];}str2[i]=、(T;cout?str2;}#include**iostream.hn#include"string.h”#defineN10voidin(char*p[N]) 〃輸入函數|inti;charch[40];fbr(i=O;i<N;i++)(cin?ch;p[i]=newchar[strlen(ch)+l];strcpy(p[i],ch);)}voidout(char*p[N]) 〃輸出函數(inti;fbr(i=O;i<N;i++)cout?p[i]?endl;voidsort(char*p[N]) 〃排序函數(intij,k;char*t=NULL;fbr(i=O;i<N-l;i++)(j=i+l;k=i;while(j<N){<strcmp(p[k],p[j])>0)k=j;j++;}if(i!=k){t=p[k];P[k]=p[i];p[i]=t;voidmain()(char*p[N];cout<ぐ請輸入需要排序的""Nvv"個字符串:"wendl;in(p);cout?”輸出排序前的"vvNvv"個字符串:"《endl;out(p);sort(p);cout<ぐ輸出排序后的"v〈N<ぐ個字符串:"wendl;out(p);}#include<iostream.h>#include<stdio.h>voidmain(){chara[20];intn=0j,i=0;charc;cout?"請輸入字母,以‘@‘結束"vvendl;c=getchar();while(c!-@')a[i]=c;i++;n++;c=getchar();}a[i]=ヘ(T;fbr(i=O;i<n;i-H-)if(a[i]>=,A&&a[i]v=2)a[i]=a[i]+32;fbr(i=O;i<n;i-H-)cout?a[i];cout?endl;)#include<iostream.h>#include<stdio.h>voidmain(){chara[20];intn=0,j,i=0;charc;coutw”請輸入字符串@結束"wendl;c=getchar();whiIe(c!-@,){a[i]=c;i卄;n++;c=getchar();a[i]=MT;i=0j=n-l;while(i<=y)(intt;t=a[i];a[i]=a[j];a[j]=t;卄j-s}fbr(i=O;i<n;i-H-)cout?a[i]?Mn;cout?endl;第七章類與對象1.填空題(1)在C++中,類成員有3種訪問權限,它們分別是ヽ和〇其中提供給用戶的接口功能;用來描述對象的屬性。(2)類中有一種特殊的成員函數,它主要用來為對象分配內存空間,對類的數據成員進行初始化,這種成員函數是.(3)析構函數的作用是?(4)類是對象的,而對象是類的具體.(5)如果在類中沒有明確定義析構函數,清除對象的工作仍由來完成,原因是.(6)如果想將類的一般成員函數說明為類的常成員函數,則應該使用關鍵字說明成員函數。(7)當ー個類的對象成員函數被調用時,該成員函數的指向調用它的對象。(8)被聲明為const的數據成員只允許聲明為的成員函數訪問。ー個類中若包含另ー個類的對象,則這種情況稱為類的,這個對象稱(10)若外界函數想直接訪問類的私有數據成員,則必須把該函數聲明為類的(11)一個類A若聲明為另一個類B的友元類,則意味著類A中的所有成員函數都是類B的〇(12)將類中的數據成員聲明為static的目的是.(13)類的靜態數據成員的初始化工作要放在。(14)若有以下程序結構,該程序運行時調用了次構造函數,調用了 次析構函數。classBoxvoidmain(){BoxA,B,C;}(15)下列程序的執行結果是〇#include<iostream.h>classA{inta;doubleb;public:A(intx=100,doubley=1.2){a=x;b=y;}voidshow(char*pt)cout?pt?M:H?endl;cout?na=M?a?endl;cout?Mb=,,?b?endl;);voidmain()(Aobjl,obj2(100,3.5);objl.show("Objド);obj2.show(Mobj2M);A*p;p=&obj1;p->show(Hp->objド);(*p).show(ヤ?p)objド);p=&obj2;p->show(Hp->obj2n);(*p).show(,,(*p)obj2H);p=newA;p->show(Hp->new'*);deletep;}(16)分析下列程序的輸出結果。#includc<iostream.h>classMyCla(private:intx,y;public:MyCla();MyCla(intxx);MyCla(intxx,intyy);MyCla(MyCla&);voidDisplayO;voidSet(int,int);?MyCla();};MyCla::MyCla()(coutくぐ執行無參構造函數:";x=0;y=0;cout?,,x=',?x?,,y=,,?y?endl;)MyCla::MyCla(intxx){coutvv”執行ー個參數構造函數:";x=xx;y=0;cout?Mx="<<x?,,y=,,?y?endl;)MyCla::MyCla(intxx,intyy)cout?"執行兩個參數構造函數:";x=xx;y=yy;cout<<"x="?x?"y="?y?endl;)MyCla::MyCla(MyCla&a){cout?"執行復制構造函數:";x=a.x;y=a.y;cout?"x="?x?"y="?y?endl;}voidMyCla::Display()(cout?”執行顯示函數:";cout?"x="?x?"y="?y?endl;}voidMyCla::Setfintxx=0,intyy=0){COUtCC"執行設置函數:";x=xx;y=yy;cout?"x="?x?"y="?y?endl;)MyCla::~MyCla()(COUtVV"執行析構函數:";cout?"x="?x?"y="?y?endl;)①ド列主程序時的運行結果為1voidmain()(MyClaa;MyClab(101);MyClac(87,98);)②下列主程序時的運行結果為,voidmain()|MyClaa(57,28);a.Set();a.Set(86);a.DisplayO;a.Set(24,75);a.DisplayO;}③下列主程序時的運行結果為〇voidmain()(MyClaa(33);a.Set(86,543);a.DisplayO;MyClab(a);b.Display();}④下列主程序時的運行結果為〇voidmain(){MyClaa(33);MyClab(223,54);{MyClac(38,84);b.Display();}a.DisplayO;}參考答案:(1)公有成員,保護成員,私有成員,公有成員,數據成員(2)構造函數(3)當對象被撤銷時,釋放該對象所占據的存儲空間。(4)抽象,實例(5)析構函數,C++編譯系統會自動生成一個析構函數constthis指針const(9)包含,子對象(10)友元函數(11)友元函數(12)使同類對象對數據實現共享(13)類外進行33objl:a=100b=1.2obj2:a=100b=3.5p->obj1:a=100b=L2(*p)objl:a=100b=1.2p->obj2:a=100b=3.5(*p)obj2:a=100b=3.5p->new:a=100b=L2執行無參構造函數:x=Oy=O執行ー個參數構造函數:x=101y=0執行兩個參數構造函數:x=87y=98執行析構函數:x=87y=98執行析構函數:x=101y=0執行析構函數:x=Oy=O執行兩個參數構造函數:x=57k28執行設置函數:x=Oy=O執行設置函數:x=86尸〇執行顯示函數:x=86y=O執行設置函數:x=24尸75執行顯示函數:x=24y=75執行析構函數:x=24k75執行ー個參數構造函數:x=33y=O執行設置函數:x=86y=543執行顯示函數:x=86y=543執行復制構造函數:x=86y=543執行顯示函數:x=86y=543執行析構函數:x=86y=543執行析構

溫馨提示

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

評論

0/150

提交評論