C語言程序設(shè)計模擬試題A(含答案)_第1頁
C語言程序設(shè)計模擬試題A(含答案)_第2頁
C語言程序設(shè)計模擬試題A(含答案)_第3頁
C語言程序設(shè)計模擬試題A(含答案)_第4頁
C語言程序設(shè)計模擬試題A(含答案)_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

《C語言程序設(shè)計》試卷A-帶答案一、單項選擇題(每題2分,共20分)1、下列有關(guān)C語言的敘述中錯誤的是(D)C語句必須以分號結(jié)束任何一個C程序中有且只有一個主函數(shù)復(fù)合語句在語法上可被看作一條語句C程序中對數(shù)據(jù)的任何操作都可由運算符實現(xiàn)2、以下不能定義為用戶標(biāo)識符的是(C)。MAINB)_HJC)2ongD)LINE13、以下能正確定義一維數(shù)組的是(C)。inta[5]={0,1,2,3,4,5};B)inta[5]=”012345”;C)chara[]=”012345”;D)chara[5]={0,1,2,3,4,5};4、執(zhí)行下列程序段后輸出的結(jié)果是(C)。x=9;while(x>7){printf(“*”);x;}****B)***C)**D)*5、設(shè)charstr1[10]="ABCDE”,str2[10]="xyz”;則執(zhí)行語句printf“%d”,strlen(strcpy(str1,str2)));后的輸出結(jié)果是(D)。解析:strcpy(str1,str后;str1[]里是"XYZ",Z后面有字符串結(jié)束符strcpy(str1,str2執(zhí)行后,函數(shù)返回的是str1,因為str1[]里是新值"XYZ",而strlen(strcpy(str1,st就是strlen(str的新值),所以得3。strlen統(tǒng)計到字符串結(jié)束符以前,即,不計入字符串結(jié)束符。9B)8C)5D)36、若用數(shù)組名作為函數(shù)調(diào)用的實參,則傳遞給形參的是(A)。數(shù)組的首地址B)數(shù)組第一個元素的值C)數(shù)組中全部元素的值D)數(shù)組元素的個數(shù)7、在C程序中,若未在函數(shù)定義時說明函數(shù)類型,則函數(shù)默認(rèn)的類型為(C)。voidB)doubleC)intD)char8、下面不能正確進(jìn)行字符串賦值操作的語句是(C)。chars[5]={"ABCD"};B)chars[5];s="ABCD";C)char*s;s="ABCDEF";D)char*s="ABCD";解析:這樣理論上的沒錯的把s指針指向字符串可以改變s指針但不能改變其指向的值正確的應(yīng)該是這樣chars[]="ABCDEF";或chars[8];strcpy(s,"ABCDEF");9、設(shè)有說明ints[5]={1,3,5,7,9};int*p=s;則下列表達(dá)式中值為3的是(C)。++pB)++(*p)C)*(++p)D)*(p+=2)解析:A是把p得地址后移一個int單位長度,即使p指向數(shù)組的第二個元素。B是取得p當(dāng)前指向的元素值然后加1,即1+1=2;C是先移動p,使其指向第二個元素,然后取得當(dāng)前指針指向的元素值,即3.D是先使p指向數(shù)組的第三個元素,然后去的當(dāng)前指針指向的元素的值,即5。10、下面程序的輸出結(jié)果是(B)。intm=13;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf(“%d\n”,fun(a,b)/m);}1B)2C)3D)10二、填空題。(每空2分,共30分)設(shè)有變量說明語句:intx=1,y=2;則執(zhí)行下述printf語句的輸出結(jié)果是__1._printf("%f\n",1.0+x/y);執(zhí)行下述程序:#include<stdio.h>main(){intx,y;scanf("%2d%*2s%1d”,&x,&y);printf("%d\n",x+y);}若從鍵盤輸入:12345671則程序的輸出結(jié)果是一17一。解析:x,y為int類型,x的長度為2,y的長度為1,即x為12,y為5,故x+y=17以下程序的功能是:從鍵盤上輸入若干名學(xué)生的成績(百分制,可帶小數(shù),以輸入負(fù)數(shù)或0為結(jié)束標(biāo)志),統(tǒng)計并輸出最高成績和最低成績。請?zhí)羁铡?include<stdio.h>main(){floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(x>0){if(x>amax)amax=x;elseif(x<amin)amin=x;scanf("%f',&x);}printf("\namax=%f\namin=%f\n",amax,amin);}設(shè)n是整型變量,且已具有某正整數(shù)值。根據(jù)下述數(shù)學(xué)式1111111——————22334nn1求s的值并輸出??删帉懭缦轮绦蚨蝸韺崿F(xiàn)。請?zhí)羁?。intk;doubles,d;s=0.0;d=1.0;k=0;do{s=s+d;__k++_;d=1.0/(k*(k+1));}while(k<=n);printf("%f\n",s);執(zhí)行下述程序的輸出結(jié)果是——40443-。#include<stdio.h>main(){inta[6],i;for(i=0;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printf("%3d",a[i]);}printf("\n");}解析:(i>3)為真時值為1,反之為0,執(zhí)行下述程序的輸出結(jié)果是___6___。#include<stdio.h>main(){inta[]={2,4,6,},*ptr=&a[0],x=8,y,z;for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(ptr+y):x;printf("%d\n",z);}執(zhí)行下述程序的輸出結(jié)果是60…#include<stdio.h>main(){inta[][2]={10,20,30,40,50,60},(*p)[2];p=a;printf("%d\n",*(*(p+2)+1));}執(zhí)行以下程序的輸出結(jié)果是__其一。#include<stdio.h>main()ints,i,sum();for(i=1;i<=10;i++)s=sum(i);printf("s=%d\n”,s);}sum(intk){intx=0;return(x+=k);}下述函數(shù)定義用來求出兩個整數(shù)之各,并通過函數(shù)的模擬傳地址調(diào)用,傳回兩整數(shù)相加之和值,請?zhí)羁?。voidadd(intx,inty,—int*z—){*z=x+y;}函數(shù)func的功能是將整型變量x的值轉(zhuǎn)換成二進(jìn)制數(shù),并將該二進(jìn)制數(shù)的每一位存入由整型指針b所指向的一維數(shù)組a,最低位存放于a[0]中,次低位存放于a[1]中,依此類推。請?zhí)羁?。voidfunc(intx,int*b){intr;do{r=x%2;==r;x/=2;}while(x);以下程序中函數(shù)invert實現(xiàn)將數(shù)組內(nèi)所有數(shù)組元素的值逆置。比如,執(zhí)行本程序?qū)⑤敵觯?0987654321請?zhí)羁铡?include<stdio.h>main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i,n=10;invert(a,n-1);for(i=0;i<10;i++)printf("%3d",a[i]);printf("\n");}invert(int*s,intnum){int*t,k;t=s+num;while(—t>s){k=*s;*s=*t;*t=k;s++;t--;}若有以下定義和說明,則結(jié)構(gòu)體變量w在內(nèi)存中所占的字節(jié)數(shù)是unionaa{floatx;floaty;charc[6];};structst{unionaav;floatw[5];doubleave;}w;執(zhí)行下述程序的輸出結(jié)果是——-。#include<stdio.h>structstr{floatx;char*y;}*m;structstrgroup[3]={95.0,"Li”,"Wang”,"Sun”};main(){m=group;printf("%.lf,%s\n",m->x,m->y);}下面的程序用來統(tǒng)計某文件中字符的個數(shù)。請?zhí)羁铡?include<stdio.h>#include<stdlib.h>main(){FILE*fp;longnum=0;if((fp=fopen("fnam.dat","r"))==NULL){printf("Can'topenthisfile!\n");exit(0);while(―){fgetc(fp);num++;}printf("num=%d\n",num);fclose(fp);}執(zhí)行下述程序后,輸出結(jié)果為。#include<stdio.h>#defineFUN1(a,b)a+b#defineFUN2(a,b)a-b#defineCAL(a,b)a*b+a+3main(){printf("%d\n”,CAL(FUN1(3,5),FUN2(4,5)));}三、修改程序(在程序出錯的語句下劃橫線并標(biāo)號,把修改后的語句寫在程序之后的橫線上。每小題5分,共10分)下列給定程序的功能是:讀入一個整數(shù)(2<=k<=1),打印它的所有質(zhì)因子(即所有為素數(shù)的因子)。例如,若輸入整數(shù)2310,則應(yīng)輸出2、3、5、7、II。#include<conio.h>#include<stdio.h>IsPrime(intn);{inti,m;m=1;for(i=2;i<n;i++)if!(n%i){m=0;continue;}return(m);}main(){intj,k;printf(“\nPleaseenteranintegernumberbetween2and1:”);scanf("%d”,k);printf(“\nTheprimefactor(s)of%dis(are):”,k);for(j=2;j<=k;j++)if((!(k%j))&(IsPrime(j))printf("\n%4d”,j);printf("\n”);}下列給定程序中,函數(shù)fun的功能是:逐個比較a、b兩個字符串對應(yīng)位置中的字符,把ASCII值大或等于的字符一次存放到c數(shù)組中,形成一個新的字符串。例如,若a中的字符串為aBCDeFgH,b中的字符串為:ABcd,則c中的字符串為:aBcdeFgh。#include<stdio.h>#include<string.h>voidfun(char*p,char*q,char*c);{intk=1;while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;}main(){chara[10]=“aBCDeFgh”,b[10]=“ABcd”,c[80]={"”};fun(a,b,c);printf(“Thestringa:”);puts(a);printf(“Thestringb:”);puts(b);printf(“Theresult:”);puts(c);}四、閱讀下列程序,在程序后面的橫線上,寫出該程序的功能或給出運行結(jié)果。(每小題5分,共20分)#include<stdio.h>voidmain(){charch;intk=0;for(ch=’A’;ch<’H’;ch++,k++)if(k%2==0)printf(“%c”,ch);printf("\n”);}輸出結(jié)果:#include<stdio.h>voidmain(){intk=0;charc=’A’;do{switch(c++)(case‘A’:k++;break;case‘B’:k--;case‘C’:k+=2;break;case‘D’:k=k%2;break;case‘E’:k=k*10;break;default:k=k/3;}k++;}while(c<’G’);printf("k=%d\n”,k);}輸出結(jié)果:#include<stdio.h>voidmain()(inta[6]=(12,4,17,25,27,16},b[6]=(27,13,4,25,23,16},i,j;for(i=0;i<6;i++)(for(j=0;j<6;j++)if(a[i]==b[j])break;if(j<6)printf("%d”,a[i]);}printf("\n”);}輸出結(jié)果:#include<stdio.h>voidmain()(inta[8]=(1,0,1,0,1,0,1,0},i;for(i=2;i<8;i++)a[i]+=a[i-1]+a[i-2];for(i=0;i<8;i++)printf(“%d”,a[i]);輸出結(jié)果:五、編程題(本大題20分,第一題8分,第二題12分)1、計算分段函數(shù)的值:「1-x(x<0)Y=2*X2-2(x>=0)編程實現(xiàn)。2、輸入10個學(xué)生3門課的成績,用函數(shù)實現(xiàn):找出最高的分?jǐn)?shù)所對應(yīng)的學(xué)號和成績。模擬試卷十一參考答案:一、 單選題一、 單選題1)D 2)C6)A 7)C二、 填空題1、 1.2、 173、 x>0.04、 k=k+15、 404436、 67、 608、 109、 int*z10、 *(b++)11、 t>s12、 4213、 95,Li14、 fgetc(fp)!=EOF15、 29三、 改錯題3)C8)C4)C9)C5)D10)B1、IsPrime(int;n)改為IsPrime(intn)scanf(“%d”,改為scanf("%d&k);{m=0;continue;改為{if(!(n%i))m=0;continue;}if((!(k%j))&(IsPrime改為if((!(k%j)&(IsPrime(j)))2、studio,改為stdio.hvoid;fun(char*p,char*q,chai改為)voidfun(char*p,char*q,char*c)k=l改為k=0while(*p!=*(改為while((*p)|(*q))k++后添加一個}四、閱讀程序1、ACEG2、83、42527164、1022571320五、編程題1、#include<stdio.h>main(){floatx,y;scanf("%f",&x);if(x<0){y=1-x;}else{y=2*x*x-2;}printf("%f\n",y);}2、#include<string.h>structstudent{intnum;floatscore[3];}stu[10];voidchosescore(structstudent*stu,intn){inti=0,j=0,k=0;floattemp;for(i=0;i<3;i++){temp=stu[0].score[i];k=stu[0].num;for(j=1;j<n;j++){if(temp<stu[j].score[i]){temp=stu[j].score[i];k=stu[j].num;}}printf("%d%f\n",k,temp);}}voidmain(){inti;for(i=0;i<10;i++){printf("putin%dstudentinformtion\n",i+1);scanf("%d%f%f%f",&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);}chosescore(stu,10);}C++面向?qū)ο蟪绦蛟O(shè)計模擬試題(帶答案)1.1選擇題在C++中用(D)能夠?qū)崿F(xiàn)將參數(shù)值帶回。a)數(shù)組b)指針c)引用d)上述ABC都可考慮函數(shù)原型voidtest(inta,intb=7,char下!面的"函,數(shù)調(diào)用中,屬于不合法調(diào)用的是:(C)A)test(5)B)test(5,8)C)test(6,"#")D)test(0,0,"*")已知:intm=t0下列表示引用的方法中,正確的是:(C)A)int&ZB)int&t=10C)int&X=m;D)float&f=&m下列不是函數(shù)重載所要求的條件是:(D)A)函數(shù)名相同B)參數(shù)個數(shù)不同C)參數(shù)類型不同D)函數(shù)返回值類型不同在C++中執(zhí)行以下4條語句后輸出rad值為:(C)staticinthot=;2int&rad=ho;thot=hot+1;cout<<rad<<end;lA)0B)1C)3D)2系統(tǒng)在調(diào)用重載函數(shù)時,不能作為確定哪個重載函數(shù)被調(diào)用的依據(jù)是:(D)A)參數(shù)個數(shù)B)參數(shù)類型C)函數(shù)名稱D)函數(shù)的返回值類型對C++語言和C語言的兼容性,描述正確的是:(A)A)C++兼容CB)C++部分兼容CC)C++不兼容CD)C兼容C++在C++中使用流進(jìn)行輸入輸出,其中用于屏幕輸出的對象是:(C)A)cerrB)cinC)coutD)cfile對使用關(guān)鍵字new所開辟的動態(tài)存儲空間,釋放時必須使用(C)A)freeB)createC)deleteD)realse在函數(shù)調(diào)用時,如某一默認(rèn)參數(shù)要指明一個特定值,則有(A)A)其之前所有參數(shù)都必須賦值B)其之后所有參數(shù)都必須賦值C)其前、后所有參數(shù)都必須賦值D)其前、后所有參數(shù)都不必賦值下列哪個類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)(A)A)函數(shù)體語句較多B)函數(shù)體語句較少C)函數(shù)執(zhí)行時間較短D)函數(shù)執(zhí)行時間過長intFunc(i,ntint;)不可與下列哪個函數(shù)構(gòu)成重載(B)A)intFunc(i,ntintint)B)doubleFunc(intint)C)doubleFunc(doubl,edouble);D)doubleFunc(i,ntdouble);下面的哪個保留字不能作為函數(shù)的返回類型(C)A)voidB)intC)newD)long一個函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,選用(A)。內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.遞歸函數(shù)D.嵌套函數(shù)已知函數(shù)f的原型為:voidf(int&a,char*變量s,的定義是:int;schart[]="ABCD"把s和t分別作為第一參數(shù)和第二參數(shù)來調(diào)用函數(shù)f,正確的調(diào)用語句是(C)Af(&s,&t;)Bf(&s,t;)Cf(s,;t)Df(s,&t;)若定義cin>>str;當(dāng)輸入MicrosoftVisualStudiO6.0所得結(jié)果是str=(B)。A、MicrosoftVisualStudio6.0B、MicrosoftC、MicrosoftVisualD、MicrosoftVisualStudio6.0.函數(shù)模板(C)。A、代表某一具體函數(shù)B、與模板函數(shù)是同一個函數(shù)C、與某一個具體的數(shù)據(jù)類型連用D、是模板函數(shù)實例化的結(jié)果在C++中,關(guān)于下列設(shè)置參數(shù)默認(rèn)值的描述中,正確的是(C)A、不允許設(shè)置參數(shù)的默認(rèn)值B、設(shè)置參數(shù)默認(rèn)值只能在定義函數(shù)時設(shè)置C、設(shè)置參數(shù)默認(rèn)值時,應(yīng)該是先設(shè)置右邊的再設(shè)置左邊的D、設(shè)置參數(shù)默認(rèn)值時,應(yīng)該全部參數(shù)都設(shè)置下列表示引用的方法中,(A)是正確的。已知:k=10;A、int&x=k;B、char&y;C、int&z=10;D、float&t=&k;有如下模板定義:template<classT>Tfun(Tx,Ty){returnx*X+y*y在下列對fun的調(diào)用中,錯誤的是:(C)fun(2,8)B)fun(2.0,8.2)C)fun(2.3,8)D)fun(‘2’,’8’)通常情況下,函數(shù)模板中的類型參數(shù)個數(shù)不能是(A)A)0個B)1個C)2個D)3個1.2填空題1、假定有如下定義:intx若要將整型變量y定義為變量x的引用,則應(yīng)使用的定義語句是int&y=x;_具有相同函數(shù)名但具有不同參數(shù)表的函數(shù)稱為重載函數(shù)。'2、在進(jìn)行函數(shù)調(diào)用時,將把參數(shù)的值傳遞給值參數(shù),把參數(shù)的一地址一傳遞給引用參數(shù)。3、執(zhí)行完下列三條語句后,指針變量c指向-i--oInta,b,*c=&a;int*&p=c;p=&b;4、假設(shè)有如下函數(shù)定義:voidFun(intx,inty=1?D旬Fun(5)語句__Fun(51)_等價。5、在一個C++程序中,每個變量都必須遵循―先定義后使用―的原則。6、下面是一個求數(shù)組元素之和的程序。主程序中定義并初始化了一個數(shù)組,然后計算該數(shù)組各元素之和,并輸出結(jié)果。函數(shù)TotalSum計算數(shù)組元素之和。請完成下列程序。#include<iostream.h>—二intTotalsum(intarray[],intlen)__;voidmain(){inta[5]={2,3,6,8,10};__intTotal—;Total=Totalsum(a,5);cout<<"Sumofarray:"<<Total<<endl;}intTotalsum(intarray[],intlen){—intsum=0;for(intI=0;I<len;I++)sum+=array[I];returnsum;}7、下面的函數(shù)Fun未使用中間變量實現(xiàn)了對兩個數(shù)的交換,請完成下列函數(shù)的定義。VoidFun(int&x,int&y){x+=y;y=—x-y;x=x-y;}8、定義一個函數(shù)時,若只允許函數(shù)體訪問形參的值而不允許修改它的值,則應(yīng)把該形參聲明為--常量--,即在該形參聲明的前面加上_const_關(guān)鍵字進(jìn)行修飾。9、在一個函數(shù)的定義或聲明前加上關(guān)鍵字—inline一時,該函數(shù)就聲明為內(nèi)聯(lián)函數(shù)。1.3簡答題A、.內(nèi)聯(lián)函數(shù)的含義在函數(shù)前加上關(guān)鍵字inline明了一個內(nèi)聯(lián)函數(shù),這使一個函數(shù)在程序行里進(jìn)行代碼擴(kuò)展而不被調(diào)用。這樣的好處是減少了函數(shù)調(diào)用的開銷,產(chǎn)生較快的執(zhí)行速度。但是由于重復(fù)編碼會產(chǎn)生較長代碼,所以內(nèi)聯(lián)函數(shù)通常都非常小。如果一個函數(shù)在類說明中定義,則將自動轉(zhuǎn)換成內(nèi)聯(lián)函數(shù)而無需用inlin說明。B、.函數(shù)重載的含義在同一作用域范圍內(nèi),相同的函數(shù)名通過不同的參數(shù)類型或參數(shù)個數(shù)可以定義幾個函數(shù),編譯時編譯器能夠識別實參的個數(shù)和類型來決定該調(diào)用哪個具體函數(shù)。需要注意的是,如果兩個函數(shù)僅僅返回類型不同,則編譯時將會出錯,因為返回類型不足以提供足夠的信息以使編譯程序判斷該使用哪個函數(shù)。所以函數(shù)重載時必須是參數(shù)類型或者數(shù)量不同。C、引用與指針的區(qū)別D、內(nèi)聯(lián)函數(shù)使用上的限制E、定義帶默認(rèn)參數(shù)值函數(shù)的規(guī)則F、指針與常量的關(guān)系1.4程序閱讀題寫出下列程序的運行結(jié)果。#include<iostream.h>voidmain(){intx;int&p=x;x=10;p=x+10;cout<<x<<","<<p<<endl;}結(jié)果:20,20寫出下列程序的運行結(jié)果。#include<iostream.h>intf(inta){return++a;intg(int&a){return++a;}voidmain(){intm=0,n=0;m+=f(g(m));n+=f(f(n));cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;}結(jié)果:m=3n=2寫出下列程序的運行結(jié)果。#include<iostream.h>voidFun(){intnum=20;cout<<"TheFun'snumis"<<num<<endl;}voidmain(){intnum=10;cout<<"Themain'snumis"<<num<<endl;Fun();{intnum=30;cout<<"TheField'snumis"<<num<<endl;}cout<<"Themain'snumis"<<num<<endl;}結(jié)果:Themain'snumis10TheFun'snumis20TheField'snumis30Themain'snumis10類和對象2.1選擇題下列的各類函數(shù)中,不是類的成員函數(shù)。(c)A)構(gòu)造函數(shù)B)析構(gòu)函數(shù)C)友元函數(shù)D)拷貝初始化構(gòu)造函數(shù)作用域運算符“::”的功能是:(B)A)標(biāo)識作用域的級別的B)指出作用域的范圍的C)給定作用域的大小的D)標(biāo)識成員是屬于哪個類的已知:print?數(shù)是一個類的常成員函數(shù),它無返回值,下列表示中,是正確的。(A)A)voidprint()cqnstB)constvoidpript()C)voidconstprint()D)voidprint(const)在類定義的外部,可以被訪問的成員有(C)A)所有類成員B)privat的類成員C)public的類成員D)publi^privat的類成員關(guān)于類和對象不正確的說法是:(C)A)類是一種類型,它封裝了數(shù)據(jù)和操作B)對象是類的實例C)一個類的對象只有一個D)一個對象必屬于某個類在C++中實現(xiàn)封裝是借助于(B)A)枚舉B)類C)數(shù)組D)函數(shù)定義析構(gòu)函數(shù)時,應(yīng)該注意:(C)A)其名與類名完全相同B)返回類型是void類型C)無形參,也不可重載D)函數(shù)體中必須有delete吾句類claseCC1的說明如下,錯誤的語句是:(A)claseCC1(inta-2//(A)CC1();//(B)public:CC1(intvai)//(C)"CCl();//(D));類的指針成員的初始化是通過函數(shù)完成的,這個函數(shù)通常是:(B)A)析構(gòu)函數(shù)B)構(gòu)造函數(shù)C)其它成員函數(shù)D)友元函數(shù)關(guān)于構(gòu)造函數(shù)的說法,不正確的是:(A)A)沒有定義構(gòu)造函數(shù)時,系統(tǒng)將不會調(diào)用它B)其名與類名完全相同C)它在對象被創(chuàng)建時由系統(tǒng)自動調(diào)用D)沒有返回值通常拷貝構(gòu)造函數(shù)的參數(shù)是:(C)A)對象名B)對象的成員名C)對象的引用名D)對象的指針名關(guān)于成員函數(shù)特征的描述中,錯誤的是:(A)A)成員函數(shù)一定是內(nèi)聯(lián)函數(shù)B)成員函數(shù)可以重載C)成員函數(shù)可以設(shè)置參數(shù)的默認(rèn)值D)成員函數(shù)可以是靜態(tài)的下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是:(D)A)構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù);B)構(gòu)造函數(shù)在定義類對象時自動執(zhí)行C)構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù);D)構(gòu)造函數(shù)不可以重載有如下類聲明“classA{intx};”,則A類的成員x是:(B)A)公有數(shù)據(jù)成員B)私有數(shù)據(jù)成員C)公有成員函數(shù)D)私有成員函數(shù)類TM和類TN是兩個獨立的類,那么類TM中哪種形式的數(shù)據(jù)成員一定是不允許的:(C)A)TM*aB)TN&aC)TMaD)TNa;以下關(guān)于thi指針的敘述中正確的是:(D)A)任何與類相關(guān)的函數(shù)都有thi指針;B)類的成員函數(shù)都有thi指針;C)類的友員函數(shù)都有thi指針;D)類的非靜態(tài)成員函數(shù)才有thi指針;.關(guān)于類模板的說法正確的是:(B)A)類模板的主要作用是生成抽象類B)類模板實例化時,編譯器將根據(jù)給出的模板實參生成一個類C)在類模板中的數(shù)據(jù)成員具有同樣類型D)類模板中的成員函數(shù)沒有返回值.以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是:(C)A)publicB)privateC)staticD)protected.類的私有成員可在何處訪問(D)A)通過子類的對象訪問B)本類及子類的成員函數(shù)中C)通過該類對象訪問D)本類的成員函數(shù)中.如果沒有為一個類定義任何構(gòu)造函數(shù)的情況下,下列描述正確的是:(A)A)編譯器總是自動創(chuàng)建一個不帶參數(shù)的構(gòu)造函數(shù)B)這個類沒有構(gòu)造函數(shù)C)這個類不需要構(gòu)造函數(shù)D)該類不能通過編譯.一個類可包含析構(gòu)函數(shù)的個數(shù)是:(B)A)0個B)1個C)0個或1個D)0個或多個.一個類可包含構(gòu)造函數(shù)的個數(shù)是:(D)A)0個B)0個或1個C)0個或多個D)1個或多個.this指針存在的目的是:(B)A)保證基類公有成員在子類中可以被訪問B)保證每個對象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼C)保證基類保護(hù)成員在子類中可以被訪問D)保證基類私有成員在子類中可以被訪問.下列關(guān)于類的權(quán)限的描述錯誤的是:(A)A)類本身的成員函數(shù)只能訪問自身的私有成員B)類的對象只能訪問該類的公有成員C)普通函數(shù)不能直接訪問類的公有成員,必須通過對象訪問D)一個類可以將另一個類的對象作為成員.設(shè)類A將其它類對象作為成員,則建立A類對象時,下列描述正確的是:(B)A)A類構(gòu)造函數(shù)先執(zhí)行B)成員構(gòu)造函數(shù)先執(zhí)行C)兩者并行執(zhí)行D)不能確定.假定有類AB,有相應(yīng)的構(gòu)造函數(shù)定義,能正確執(zhí)行“ABa(4),b(5),c[3],*p[2]={&a,&b};”語句,請問執(zhí)行完此語句后共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為(C)A)3B)4C)5D)6拷貝構(gòu)造函數(shù)的作用是(C)。進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換B.用對象調(diào)用成員函數(shù)C.用對象初始化對象D.用一般類型的數(shù)據(jù)初始化對象下列靜態(tài)數(shù)據(jù)成員的特性中,錯誤的是(D)。靜態(tài)數(shù)據(jù)成員的聲明以關(guān)鍵字static頭靜態(tài)數(shù)據(jù)成員必須在文件作用域內(nèi)初始化引導(dǎo)數(shù)據(jù)成員時,要在靜態(tài)數(shù)據(jù)成員前加(類名)和作用域運算符靜態(tài)數(shù)據(jù)成員不是類所有對象共享的通過指針訪問類對象成員的方法是(D)。A.:: B.;靜態(tài)成員函數(shù)沒有(B)。A.返回值 B.this指針型C..C.指針參數(shù)A.:: B.;靜態(tài)成員函數(shù)沒有(B)。A.返回值 B.this指針型C..C.指針參數(shù)D.->D,返回類在下列關(guān)鍵字中,用于說明類中公有成員的是(A)。A.publicB.privat;eC.protectedD.不是構(gòu)造函數(shù)的特征(D)。A.構(gòu)造函數(shù)的函數(shù)名與類名相同;C.構(gòu)造函數(shù)可以設(shè)置缺省參數(shù);明。是析構(gòu)函數(shù)的特征(A)。A.一個類中只能定義一個析構(gòu)函數(shù);C.析構(gòu)函數(shù)的定義只能在類體內(nèi);參數(shù)。關(guān)于成員函數(shù)特征的下述描述中,(A)是錯誤的。A.成員函數(shù)一定是內(nèi)聯(lián)函數(shù);C.成員函數(shù)可以設(shè)置參數(shù)的缺省值;下述靜態(tài)數(shù)據(jù)成員的特性中,(D)是錯誤的。說明靜態(tài)數(shù)據(jù)成員時前邊要加修飾符static;靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化;引用靜態(tài)數(shù)據(jù)成員時,要在靜態(tài)數(shù)據(jù)成員名前加<類名〉和作用域運算符;靜態(tài)數(shù)據(jù)成員不是所有對象所共用的。friendB.B.構(gòu)造函數(shù)可以重載;D. 構(gòu)造函數(shù)必須指定類型說析構(gòu)函數(shù)名與類名不同;D.析構(gòu)函數(shù)可以有一個或多個B.D.成員函數(shù)可以重載;

成員函數(shù)可以是靜態(tài)的。A.B.C.D.2.2填空題1、在撤銷類的對象時,c++程序?qū)⒆詣诱{(diào)用該對象的―析構(gòu)一―函數(shù)。2、類中的構(gòu)造函數(shù)是一個特殊的成員函數(shù),它由類的對象―自動一調(diào)用,它的作用是一―為對象分配內(nèi)存,數(shù)據(jù)成員初始化一_。3、對類中的成員函數(shù)和屬性的訪問是通過__public__—protected和___private3這3個關(guān)鍵字來控制的。4、—delete一運算符刪除new運算符所動態(tài)分配的內(nèi)存空間。5、假定用戶沒有給一個名為MyClass的類定義析構(gòu)函數(shù),則系統(tǒng)為其定義的默認(rèn)析構(gòu)函數(shù)形式為_MyClass()_6、類中構(gòu)造函數(shù)有―一個或多―個,析構(gòu)函數(shù)有一一…個。7、類是對具有共同屬性和行為的一類事物的抽象描述,共同屬性被描述為類中的…數(shù)據(jù)成員一_,共同行為被描述為類中的―成員函數(shù)―。8、若要把類FriendClas定義為類MyClass的友元類,則應(yīng)在類MyClass的定義中加入語句_friendclassFriendClass__。9、在結(jié)構(gòu)定義中,數(shù)據(jù)和成員函數(shù)默認(rèn)權(quán)限是—Dublic__在類定義中,數(shù)據(jù)和成員函數(shù)默認(rèn)權(quán)限是__private_f_10、在下面程序的橫線處填上適當(dāng)?shù)恼Z句,使類型該程序執(zhí)行結(jié)果為10。#include<iostream.h>classMyClass{public:—MyClass(inta){x=a;為_x一置值__intGetNum(){returnx;}—取頊值private:intx;);voidmain(){Myclassmy(10);Cout<<my.GetNum()<<end;}11、完成下面的類定義。ClassMyClass{public:MyClass(){x=0;}—friendintGetNum(—MyClassmy);private:intx;);intGetNum(—MyClassmy){___returnmy.x;}12、__new_一運算符對指定類型對象動態(tài)分配內(nèi)存并返回該類型的―指針―。13、若要把函數(shù)voidFriendFunctio定(X為類MyClass的友元函數(shù),則應(yīng)在類MyClass的定義中加入語句—friendvoidFriendFunction():__14、類的具體表現(xiàn)是通過定義一對象__來操作的。15、在定義類的對象時,C++程序?qū)⒆詣诱{(diào)用該對象的―構(gòu)造___函數(shù)初始化對象自身。16、一般情況下,按照面向?qū)ο蟮囊?,把類中的?shù)據(jù)成員囑性)定義為—private權(quán)限,而把成員函數(shù)方法)定義為__public_極限。17、在類中定義和實現(xiàn)的函數(shù)稱為一內(nèi)聯(lián)函數(shù)一_。18、非成員函數(shù)應(yīng)聲明為類的--友元函數(shù)-_才能訪問這個類的private員。2.3簡答題A、類的含義B、構(gòu)造函數(shù)的特點C、拷貝構(gòu)造函數(shù)的調(diào)用D、析構(gòu)函數(shù)的定義及其特點E、靜態(tài)成員的分類及各自的特點2.4程序閱讀題1)寫出下列程序的運行結(jié)果。#include<iostream.h>classMyClass{charch;public:MyClass();MyClass(charcharacter);voidPrint();MyClass(););MyClass::MyClass(){cout<<"Thisisaconstructor!"<<endl;ch='a';}MyClass::MyClass(charcharacter){cout<<"Thisisaconstructor!"<<endl;ch=character;}voidMyClass::Print(){cout<<"Thevalueofchis"<<ch<<endl;}MyClass::MyClass(){cout<<"Thisisadestructor!"<<endl;}voidmain(){MyClassfirst,second('b');first.Print();second.Print();}運行結(jié)果:Thisisaconstructor!Thisisaconstructor!ThevalueofchisaThevalueofchisbThisisadestructor!Thisisadestructor!2)寫出下列程序的運行結(jié)果#include<iostream.h>classMyClass{public:MyClass();voidPrint();~MyClass();private:intI;staticintj;);intMyClass::j=0;MyClass::MyClass(){cout<<"Thisisconstructor!"<<endl;j+=10;}voidMyClass::Print(){cout<<"Thevalueofjis"<<J<<endl;}MyClass::MyClass(){cout<<"Thisisadestructor!"<<endl;}voidmain(){MyClassfirst,second;first.Print();second.Print();}Thisisconstructor!Thisisconstructor!Thevalueofjis20Thevalueofjis20Thisisadestructor!Thisisadestructor!繼承與派生3.1選擇題.在C++中,類與類之間的繼承關(guān)系具有(C)A)自反性B)對稱性C)傳遞性D)反對稱性.在公有繼承的情況下,基類的成員(私有的除外)在派生類中的訪問權(quán)限(B)A)受限制B)保持不變C)受保護(hù)D)不受保護(hù).按解釋中的要求在下列程序劃線處填入的正確語句是:(C)#include<iostream.h>classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{publicvoidfun(){〃在此空格處調(diào)用基類的函數(shù)fun()cout<<"Derived::fun"<<endl;}};fun()B)Base.fun;)C)Base::fun;;)D)Base->fun().在保護(hù)繼承的情況下,基類的成員(私有的除外)在派生類中的訪問權(quán)限(C)受限制B)保持不變C)受保護(hù)D)不受保護(hù).下面描述中,表達(dá)錯誤的是:(B)公有繼承時,基類中的public成員在派生類中仍是public的公有繼承時,基類中的private成員在派生類中仍是private的公有繼承時,基類中的protected成員在派生類中仍是protected的私有繼承時,基類中的public成員在派生類中是private的.下列虛基類的聲明中,正確的是:(B)A)classvirtualB:publicAB)classB:virtualpublicAC)classB:publicAvirtua)DvirtualclassB:publicA.C++設(shè)置虛基類的目的是;A)消除二義性B)簡化程序C)提高運行效率D)減少目標(biāo)代碼classX{inta;public:X(intx=0){a=x;}};classY:publicX{intb;public:Y(intx=0,inty=0):X(y)){b=x;}};下列語句組中出現(xiàn)語法錯誤的是(D)X*pa=newY(1,2);Xa1=Y(1,3);Yb1(2,3);X&a3=b1;Xa4(10);Yb2=a4;classBase{public:inti;Base(intt):i(t){}};classDerived:protectedBase{Baseb;intj;public:Derived(intt);};在構(gòu)造函數(shù)Derived的下列定義中,正確的是(B)Derived::Derived(intt):b(t),j(t){}Derived::Derived(intt):b(t),Base(t),j(t){}Derived::Derived(intt):Base(t),j(t){}Derived::Derived(intt):i(t),b(t),j(t){}.在哪種派生方式中,派生類可以訪問基類中的protected成員(B)A)public和privateB)public、protected和privateC)protected和privateD)僅protected在C++中,類與類之間的繼承關(guān)系具有(C)自反性B)對稱性C)傳遞性D)反對稱性下列關(guān)于類的繼承描述中,(A)是錯誤的派生類可以訪問基類的所有數(shù)據(jù)成員,也能調(diào)用基類的所有成員函數(shù)派生類也是基類,但基類不一定具有派生類的全部屬性和方法繼承描述類的層次關(guān)系,派生類可以具有與基類相同的屬性和方法一個基類可以有多個派生類,一個派生類可以有多個基類.當(dāng)一個派生類僅有protected承一個基類時,基類中的所有公有成員成為派生類的(C)publi成員B)private員C)protect成員D)友元當(dāng)一個派生類私有繼承一個基類時,基類中的所有公有成員和保護(hù)成員成為派生類的(B)A)publi成員B)private員C)protect成員D)友元不論派生類以何種方法繼承基類,都不能使用基類的(B)A)publi成員B)private員C)protect城員D)publi成員和protecte成員在創(chuàng)建派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序是(D)對象成員構(gòu)造函數(shù)、基類構(gòu)造函數(shù)、派生類本身的構(gòu)造函數(shù)派生類本身的構(gòu)造函數(shù)、基類構(gòu)造函數(shù)、對象成員構(gòu)造函數(shù)基類構(gòu)造函數(shù)、派生類本身的構(gòu)造函數(shù)、對象成員構(gòu)造函數(shù)基類構(gòu)造函數(shù)、對象成員構(gòu)造函數(shù)、派生類本身的構(gòu)造函數(shù)下列虛基類的聲明中,正確的是(D)。A)classvirtualB:publicAB)virtualclassB:publicAC)classB:publicAvirtualD)classB:virtualpublicA下面敘述錯誤的是(A)。A)基類的protected員在派生類中仍然是protecte的B)基類的protecte成員在public派生類中仍然是protecte的C)基類的protecte成員在private生類中是privat的D)基類的protecte成員不能被派生類的對象訪問下列說法中錯誤的是(A)。A)保護(hù)繼承時基類中的public成員在派生類中仍是public的B)公有繼承時基類中的privat成員在派生類中仍是privat的C)私有繼承時基類中的public成員在派生類中是privat的D)保護(hù)繼承時基類中的public成員在派生類中是protecte的關(guān)于多繼承二義性的描述中,錯誤的是(B)。A)一個派生類的兩個基類中都有某個同名成員,在派生類中對這個成員的訪問可能出現(xiàn)二義性B)解決二義性的最常用的方法是對成員名的限定法C)基類和派生類中同時出現(xiàn)的同名函數(shù),也存在二義性問題D)一個派生類是從兩個基類派生出來的,而這兩個基類又有一個共同的基類,對該基類成員進(jìn)行訪問時,可能出現(xiàn)二義性下面敘述錯誤的是(C)。A)派生類可以使用privat派生B)對基類成員的訪問必須是無二義性的C)基類成員的訪問能力在派生類中維持不變D)賦值兼容規(guī)則也適用于多繼承的組合派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含(C)。A)基類的構(gòu)造函數(shù)B)派生類中子對象的初始化C)基類中子對象的初始化D)派生類中一般數(shù)據(jù)成員的初始化下面(B)的敘述不符合賦值兼容規(guī)則。A)派生類的對象可以賦值給基類的對象B)基類的對象可以賦值給派生類的對象C)派生類的對象可以初始化基類的引用D)派生類的對象的地址可以賦值給指向基類的指針.下列虛基類的聲明中,正確的是:(B)A)classvirtualB:publicAB)classB:virtualpublicAC)classB:publicAvirtuaDl)virtualclassB:publicA.C++設(shè)置虛基類的目的是(A)A)消除二義性B)簡化程序C)提高運行效率D)減少目標(biāo)代碼3.2填空題1、垂直訪問時,保護(hù)成員的訪問控制權(quán)限與一公有―成員相同。2、利用繼承能夠?qū)崿F(xiàn)一代碼復(fù)用―。這種實現(xiàn)縮短了程序的開發(fā)時間,促使開發(fā)人員復(fù)用已經(jīng)測試和調(diào)試好的高質(zhì)量軟件。3、派生類對基類的繼承有三種方式:_public_、protected-和—private。4、多繼承情況下,派生類的構(gòu)造函數(shù)的執(zhí)行順序取決于―定義―派生類時所指定的各基類的順序。5、C++提供的一多繼承―機制允許一個派生類繼承多個基類,即使這些基類是相互無關(guān)的。6、派生類可以調(diào)用其一定義一-中不具備的數(shù)據(jù)和操作。7、對基類數(shù)據(jù)成員的初始化必須在派生類構(gòu)造函數(shù)中的―初始化列表一--處執(zhí)行。8、如果類Alpha繼承了類Beta,則類Alpha稱為--派生--類,類Beta稱為-_基_-類。9、己知下面的程序框架,按注釋中的提示補充細(xì)節(jié)。#include<iostream.h>classplanet{protected:doubledistance;-行星距太陽的距離intrevolve;-行星的公轉(zhuǎn)周期public:planet(doubled,intr){distance=d;revolve=r;});classearth:publicplanet{doublecircumference地球繞太陽公轉(zhuǎn)的軌道周長public:/定義構(gòu)造函數(shù)earth(doubled,int并計算地球繞太陽公轉(zhuǎn)的軌道周長。/假定:circumnference=2*d*3.1416—earth(doubled,intr):planet(d,r){--circumnference=2*d*3.1416;}—/定義show()函數(shù)顯示所有信息—voidshow(){coutydistanceisdistance〈gles,revolvei§'<<revolve?days”?endl;cou頂circumference<<circumference<<endl;}—);voidmain(){earthob(930,365);ob.show();}10、設(shè)置虛基類的目的是―為了消除二義性―,可通過--—virtual---標(biāo)識虛基類。11、若多繼承時,多個基類中擁有一個同名的成員,則―不能―用調(diào)整訪問權(quán)限確定對該成員的訪問。12、根據(jù)基類的定義和測試程序,完成下面派生類的定義。ClassPoint{public:Point(int,=intj=0){X=I;Y=j;}voidMove(intxOff,intyOff){X+=xOff;Y+=yOff;}intGetX(){returnX;}intGetY(){returnY;}private:intX,Y;};classRectangle:privatePoint{public:Rectangle(intx,inty,intw,inth):Point(x,y)—{W=w;H=h;_}voidMove(intxOff,intyOff){-Point:Move(xOff,yOff);__}intGetX(){returnPoint:GetX();__}intGetY(){—returnPoint:GetY();__}intGetW(){returnW;__}intGetH(){returnH;__}private:intW,H;}#include<iostream.h>#include<math.h>voidmain(){Rectanglerect(1,2,3,4);rect.Move(5,6);cout<<"ThedataofrectWXHY:(“<<rect.GetX()<<",”<<rect.GetY()<<",”<<rect.GetW()<<",”<<rect.GetH()<<")”<<endl;13、多繼承可以視為是―單繼承―的擴(kuò)展。14、在劃線處填上適當(dāng)?shù)恼Z句,完成下列程序。#include<math.h>classPoint{public:point(doublea,doubleb,doublec){X=a;Y=b;Z=c;__}doubleGetx(){returnX;}doubleGety(){returnY;}doubleGetz(){returnZ;}private:__doubleX,Y;protected:__doubleZ;);classLine:publicPoint{public:Line(doublea,doubleb,doublec,doubled):Point(a,b,c){K=d;—}voidshow(){cout<<Getx()<<endl;cout<<Gety()<<“"<<.<<<endl;cout<<Getz()<<“"<<Z<<endl;cout<<K<<endl;}private:doublek;);voidmain(){Lineobj(1.2,3.4,5.6,7.8);obj.show();}15、類繼承中,缺省的繼承方式是—private-。16、當(dāng)用protected承從基類派生^個類時,基類的public成員成為派生類的--protected--成員,protected員成為派生類的protected--成員。18、―公有派生―類的對象可作為---一基一--類的對象處理。19、指向基類的對象的指針變量也可以指向-_公有派生類一的對象。20、類之間的”有”關(guān)系代表―組合---,”是”關(guān)系代表―繼承―。3.3簡答題A、派生類的定義及其特點B、單繼承和多繼承的概念及其關(guān)系C、繼承方式的種類及其各自的特點D、在繼承中構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用規(guī)則F、賦值兼容原則G、類模板和模板類的含義及其關(guān)系3.4讀程序題1、寫出下列程序的運行結(jié)果。#include<iostream.h>classBase{public:voidWho(){cout<<"classBase"<<endl;});classDerived1:publicBase{public:voidWho(){cout<<"classDerived1"<<endl;});classDerived2:publicBase{public:voidWho(){cout<<"classDerived2"<<endl;});voidmain(){Baseobj1,*p;Derived1obj2;Derived2obj3;p=&obj1;p->Who();p=&obj2;p->Who();p=&obj3;p->Who();obj2.Who();obj3.Who();}答案:classBaseclassBaseclassBaseclassDerived1classDerived22、寫出下列程序的運行結(jié)果。#include<iostream.h>classinstrument{public:voiddisplay()const{cout<<"instument::display."<<endl;});classpiano:publicinstrument{public:voiddisplay()const{cout<<"piano::display."<<endl;});classguitar:publicinstrument{public:voiddisplay()const{cout<<"guitar::display."<<endl;});voidtone(instrument&I){display(););voidmain(){guitarguitar1;tone(guitar1);pianopiano1;tone(piano1);}答案instument::display.instument::display.3、寫出下列程序的運行結(jié)果。#include<iostream.h>classA{public:A(chari){cout<<"A'scons."<<i<<endl;}A(){cout<<"A'sdes."<<endl;});classB:virtualpublicA{public:B(chari,charj):A⑴{b=j;cout<<"B'scons."<<j<<endl;}B(){cout<<"B'sdes."<<b<<endl;}private:charb;);classC:virtualpublicA{public:C(chari,charj):A⑴{cout<<"C'scons."<<j<<endl;}C(){cout<<"C'sdes."<<endl;});classD:publicB,publicC{public:D(chari,charj,chark,chars,charm,charn):C(k,s),B(i,j),A(i),aa(m){cout<<"D'scons."<<endl;}D(){cout<<"D'sdes."<<endl;}private:Aaa;);voidmain(){Dobj('a','b','c','d','e','f');}答案:A'scons.aB'scons.bC'scons.dA'scons.eD'scons.D'sdes.A'sdes.C'sdes.B'sdes.A'sdes.類的多態(tài)性4.1選擇題.實現(xiàn)運行時的多態(tài)性采用(D)重載函數(shù)B)構(gòu)造函數(shù)C)析構(gòu)函數(shù)D)虛函數(shù).在派生類中重新定義虛函數(shù)時,必須在下列哪方面與基類保持一致。(A)A)參數(shù)類型B)參數(shù)名字C)操作內(nèi)容D)賦值.當(dāng)一個類的某個函數(shù)被說明為virtual時,在該類的所有派生類中的同原型函數(shù)(A)A)都是虛函數(shù)B)只有被重新說明時才是虛函數(shù)C)都不是虛函數(shù)D)只有被重新說明為virtual時才是虛函數(shù).通過下述哪一項調(diào)用虛函數(shù)時,采用動態(tài)聯(lián)編。(A)A)對象指針B)對象名C)成員名限定D)派生類名下面描述中,正確的是(BD)(兩個答案)A)虛函數(shù)是沒有實現(xiàn)的函數(shù)B)純虛函數(shù)的實現(xiàn)在派生類中C)抽象類是沒有純虛函數(shù)的類D)抽象類指針可以指向不同的派生類對象若一個類中含有純虛函數(shù),則該類稱為(D)A)基類B)純基類C)派生類D)抽象類假設(shè)A為抽象類,下列聲明(B)是正確的A)Afun(int);B)A*p;C)intfun(A);D)AObj;在C++中,要實現(xiàn)動態(tài)聯(lián)編,必須使用(D)調(diào)用虛函數(shù)A)類名B)派生類指針C)對象名D)基類指針下列函數(shù)中,可以作為虛函數(shù)的是(CD)(兩個答案)A)普通函數(shù)B)構(gòu)造函數(shù)C)成員函數(shù)D)析構(gòu)函數(shù)在派生類中,重載一個虛函數(shù)時,要求函數(shù)名、參數(shù)的個數(shù)、參數(shù)的類型、參數(shù)的順序和函數(shù)的返回值(B)A)不同B)相同C)相容D)部分相同下面函數(shù)原型聲明中,(C)聲明了fun為普通虛函數(shù)A)voidfun()=0;B)virtualvoidfun()=0;C)virtualvoidfun();D)virtualvoidfun(){};在下面四個選項中,(A)是用來聲明虛函數(shù)的。A)virtualB)publicC)usingD)false在下面程序中,A、B、C、D四句編譯時出現(xiàn)錯誤的是(C)。ClassA//A{public://BA(){func();}___//Cvirtualvoidfunc()=0;—//D};實現(xiàn)運行時的多態(tài)性要使用(D)。A)重載函數(shù)B)構(gòu)造函數(shù)C)析構(gòu)函數(shù)D)虛函數(shù)對虛函數(shù)的調(diào)用(D)。A)一定使用動態(tài)聯(lián)編B)必須使用動態(tài)聯(lián)編C)一定使用靜態(tài)聯(lián)編D)不一定使用動態(tài)聯(lián)編在派生類中重新定義虛函數(shù)時,除了(D)方面,其他方面都必須與基類中相應(yīng)的虛函數(shù)保持一致。A)參數(shù)個數(shù)B)參數(shù)類型C)函數(shù)名稱D)函數(shù)體關(guān)于虛函數(shù)的描述中,正確的是(D)。A)虛函數(shù)是一個靜態(tài)成員函數(shù)B)虛函數(shù)是一個非成員函數(shù)C)虛函數(shù)既可以在函數(shù)說明時定義,也可以在函數(shù)實現(xiàn)時定義D)派生類的虛函數(shù)與基類中對應(yīng)的虛函數(shù)具有相同的參數(shù)個數(shù)和類型下列描述中,(D)是抽象類的特性。啟可以說明虛函數(shù)日)可以進(jìn)行構(gòu)造函數(shù)重載0可以定義友元函數(shù)D)不能說明其對象關(guān)于純虛函數(shù)和抽象類的描述中,錯誤的是(C)。A)純虛函數(shù)是一種特殊的虛函數(shù),它沒有具體的實現(xiàn)B)抽象類是指具有純虛函數(shù)的類C)一個基類中說明有純虛函數(shù),該基類的派生類一定不再是抽象類D)抽象類只能作為基類來使用,其純虛函數(shù)的實現(xiàn)由派生類給出以下(。)成員函數(shù)表示純虛函數(shù)。A)virtualintvf(int);B)voidvf(int)=0;C)virtualvoidvf()=0;D)virtualvoidvf(int){}下列關(guān)于動態(tài)聯(lián)編的描述中,錯誤的是(D)。A)動態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)的B)動態(tài)聯(lián)編是在運行時確定所調(diào)用的函數(shù)代碼的C)動態(tài)聯(lián)編調(diào)用函數(shù)操作是指向?qū)ο蟮闹羔樆驅(qū)ο笠肈)動態(tài)聯(lián)編是在編譯時確定操作函數(shù)的如果一個類至少有一個純虛函數(shù),那么就稱該類為(A)。A)抽象類B)虛基類C)派生類D)以上都不對下面的描述中,正確的是(A)。A)virtua可以用來聲明虛函數(shù)B)含有純虛函數(shù)的類是不可以用來創(chuàng)建對象的,因為它是虛基類即使基類的構(gòu)造函數(shù)沒有參數(shù),派生類也必須顯示調(diào)用其構(gòu)造函數(shù)靜態(tài)數(shù)據(jù)成員可以通過成員初始化列表來初始化4.2填空題1、在析構(gòu)函數(shù)中調(diào)用虛函數(shù)時,采用―靜態(tài)―聯(lián)編。2、動態(tài)聯(lián)編是在―虛函數(shù)一一的支持下實現(xiàn)的,它通過―指針或引用―來調(diào)用該函數(shù)操作。3、動態(tài)聯(lián)編中直到―程序運行―時才能確定調(diào)用哪個函數(shù):而靜態(tài)聯(lián)編則是在―程序編譯―時進(jìn)行的。4、C++中―不支持―虛構(gòu)造函數(shù),但一―支持一一虛析構(gòu)函數(shù)。5、靜態(tài)聯(lián)編所支持的多態(tài)性稱為―編譯時―多態(tài)性,動態(tài)聯(lián)編所支持的多態(tài)性則稱為一一運行時…多態(tài)性,動態(tài)多態(tài)性由_一虛函數(shù)—_來支持。6、在類定義中,將_一四一一置于虛函數(shù)的函數(shù)原型的末尾可以將該函數(shù)聲明為純虛函數(shù)。7、下列程序的運行結(jié)果如下:Base'scons.Derived'scons.Derived'sdes.Base'sdes.根據(jù)結(jié)果將程序補充完整。#incude<iostream.h>classBase{public:Base(){cout<<"Base'scons."<<endl;}—virtual?Base()__{cout<<"Base'sdes."<endl;});classDerived:publicBase{public:Derived(){cout<<"Derived'scons."<<endl;}Derived(){cout<<"Derived'sdes."<<endl;});voidmain(){Base*Ptr=new-Derived()_deleteptr;}8、抽象類不能―定義對象,但可以一聲明指針或引用―作為參數(shù)類型,函數(shù)返回類型或顯式轉(zhuǎn)換類型。9、根據(jù)不同的輸出結(jié)果,在函數(shù)Tone中填入正確的語句。#include<iostream.h>classInstrument{public:virtualvoidPrint()const{cout<<"Instrument:Print"<<endl;});classPiano:publicInstument{public:voidPrint()const(cout<<叩iano::Print<<endl;});classGuitar:publicInstruIment{pub1ic:voidPrint()const{cout<<"Guiur::Print"<<endl;});voidTone(Instrumentobj__)第二個要求改成Instrument&obj{_obj.print();__}voidmain(){Guitarg;Tone(g);Pianop;Tone(p);}(1)輸出結(jié)果為:Instrument::PrintInstrument::Print(2輸出結(jié)果為:Guitar::PrintPiano::Print10、對虛函數(shù)使用對象指針或引用調(diào)用,系統(tǒng)使用―動態(tài)―聯(lián)編:使用對象調(diào)用時,系統(tǒng)使用―靜態(tài)―聯(lián)編。11、將下列程序補充完整。#include<iostream.h>classconvert{public:convert(doubleI){va11=I;}virtualvoidcompute()=0;protected:doublevall;doubleva12:);//literstogallonsclassl_to_g:publicconvert{public:__ltog(doubleI):convert(I){}voidcompute(){va12=va11/3.7854;cout<<va11<<"litersis"<<val2<<"gdIons."<<endl;});//FahrenheittoCelsiusclassf_to_c:publicconvert{public:ftoc(doubleI):convert(I){}void&compute。,va12=(va11-32)*5/9;cout〈〈vall<<"Fahrenheitis'<〈val2〈〈"Celsiu<<endl;}};voidfun(convert&f){pute();}voidmain(){l_to_glgobj(4);f_to_cfcobj(70);fun(lgobj);fun(fcobj);}12、下列程序的運行結(jié)果如下:Derive1'sPrint()called.Derive2'sPrint()caIIed.根據(jù)結(jié)果將程序補充完整。#include<iostream.h>classBase{public:Base(intI)(b=I;}_virtualPrint()=0;protected:intb;}classDerive1:publicBase{public:__Derive1(int&I):Base(I){}—voidPrint(){cout<<"Derive1'sPrint()called."<<endl;}};classDerive2:publicBase{public:Derive2(intI):Base(I){}voidPrint。{cout魅lerive2'PisintCE1led<<endl;}};voidfun(Base*obj){obj->Print();};voidmain(){Derivel*dl=newDerive1(1);Derive2*d2=newDerive2(2);fun(d1);fun(d2);}13、在一個成員函數(shù)內(nèi)調(diào)用一個虛函數(shù)時,對該虛函數(shù)的調(diào)用進(jìn)行一動態(tài)―聯(lián)編。14、帶有―純虛函數(shù)―的類稱為抽象類,它只能作為__基類―來使用。4.3簡答題A、成員函數(shù)重載與虛函數(shù)的區(qū)別B、靜態(tài)聯(lián)編和動態(tài)聯(lián)編的含義C、純虛函數(shù)和抽象類的定義及其關(guān)系D、抽象類的特點4.4讀程序題1、寫出下列程序的運行結(jié)果。#include<iostream.h>classBase{public:Base(inti){x=i;cout<<"Base:"<<x<<endl;}virtualBase(){cout<<"Base:"<<x<<endl;}private:intx;);classDerived:publicBase{public:Derived(inti,intj):Base⑴{y=j;cout<<"Derived:"<<y<<endl;}Derived(){cout<<"Derived:"<<y<<endl;}private:inty;);voidmain(){Base*b1=newBase(15);deleteb1;Base*b2=newDerived(20,25);deleteb2;}答案Base:15~Base:15Base:20Derived:25Derived:25~Base:202、閱讀下列程序,回答后面提出的問題。#include<iostream.h>classBase{public:Base():x(0),y(0){}Base(intI,intj):x(I),y(j){}intGetX()const(returnx;)intGetY()const(returny;)virtualvoidPrint()const{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

提交評論