C++程序設(shè)計復(fù)習(xí)題及參考答案_第1頁
C++程序設(shè)計復(fù)習(xí)題及參考答案_第2頁
C++程序設(shè)計復(fù)習(xí)題及參考答案_第3頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE1514一、選擇題:

中南大學(xué)網(wǎng)絡(luò)教育課程考試復(fù)習(xí)題及參考答案C++程序設(shè)計下列標(biāo)識符作為變量名稱,合法的是 [B]goto B.Student C.123 D.設(shè)x和y均為int型,則x&&y為真的條件是 [DA.其中一個為0 其中一個為非0C.它們均為0 它們均為非0存儲以下數(shù)據(jù),占用存儲字節(jié)最多的是 [ A]A.0 B.’0’ C.”0” D.inta,b;charm,n;cin>>a>>b>>m>>n;則下列輸入數(shù)據(jù)的方式中正確的是 [C]A.10,20,X,Y B.1020XY C.1020XY D.20、XY下列for循環(huán)的次數(shù)為 [B ]for(intI=0,x=0;!x&&I<=5;I++)5 B.6 C.1 若有定義為int*r=newint[10],則釋放指針?biāo)竷?nèi)存空間的操作是 [A]delete[]r; B.delete*r C.deleter; D.deleter[];有函數(shù)原型聲明語“inttest(inta,intb=1,intc=0)在以下函數(shù)調(diào)用語句中不合法的[ CA.test(0); B.test(0,0); C.test(); D.test(0,0,0);選擇出合法的if語設(shè)有intx,a,b,c;) [A ]A.if(a==b)x++; B.if(a=<b)C.if(a<>b)x++; D.if(a=>b)9.聲明或定義一個內(nèi)聯(lián)函數(shù)時,必須在函數(shù)開始使用保留字 [D ]static B.const C.extern D.inline10.在下面的函數(shù)聲明中,存在著語法錯誤的是 [D ]A.BC(inta,int); B.BC(int,int);C.BC(int,int=5); D.BC(intx;inty);11.將兩個字符串連接起來組成一個字符串時,選用的函數(shù)是 [C ]A.strlen() B.strcpy() C.strcat() D.strcmp()12.在程序中,預(yù)處理命令開頭的字符都是 [B ]A.* B.# C.& D.@charstr[20]cin>>strThisisaprogram的結(jié)果是str=[B ]Thisisaprogram B.ThisC.Thisis D.hisisa在下面的do循環(huán)語句中其循環(huán)體被執(zhí)行的次數(shù)為 [A inti=0;do{i++;}while(i*i<10);A.4 B.3 C.5 D.2在下面的一維數(shù)組定義中,有語法錯誤的語句是 [C A.inta[]={1,2,3}; B.inta[10]={0};C.inta[]; D.inta[5];下面的保留字中,不能作為函數(shù)的返回類型 [C ]void B.int C.new D.long下面的函數(shù)聲明中voidBC(inta,intb)”的重載函數(shù)是 [B ]intBC(intx,inty); B.voidBC(inta,charb);C.floatBC(inta,intb,intc=0); D.intBC(inta,intb=0);假定AB為一個類則該類的復(fù)制構(gòu)造函數(shù)的聲明語句為 [D ]AB&(ABx); B.AB(ABx); C.AB(AB*x); D.AB(AB&);C++程序的基本功能模塊為 [D ]表達(dá)式 B.標(biāo)識符 C.語句 D.函數(shù)template<classT>Tadd(Tx,Ty){returnx+y;add函數(shù)的調(diào)用不正確的是 [C]A.add<>(1,2) B.add<int>(1,2) C.add(1.0,2) D.add(1.0,2.0)在下面的一維數(shù)組定義中,有語法錯誤的是 [C A.inta[]={1,2,3} B.inta[10]={0}C.inta[] D.inta[5]C++語言中的每條簡單語句是以哪個符號作為結(jié)束符的 [A A.分號 逗號 空格 換行符設(shè)“intf(int);”和“intg(int);”是函數(shù)f和g的原形,以下將f作為語句調(diào)用的[B A.g(f(3)) B.f(g(3)) C.g(f(3)+2) D.A.X::X(參數(shù)),X::~X()B.voidC.X::X(參數(shù)),X::~X(參數(shù))A.X::X(參數(shù)),X::~X()B.voidC.X::X(參數(shù)),X::~X(參數(shù))D.voidX::X(參數(shù)),voidX::~X(參數(shù))在下列double型常量表示中,錯誤的是 [A ]A.E15 B.35 C.3E5 D.3E-5下列各運算符中,優(yōu)先級最低的是 [A ]A.?: B.| C.|| D.!=下列定義中,定義指向數(shù)組的指針p的是 [B A.int*p[5] B.int(*p)[5] C.(int*)p[5] D.int*p[設(shè)有以下定義:voidf1(int*m,long&n);inta;longb;則以下調(diào)用合法的是 [B ]A.f1(a,b) C.D.f1(&a,&b)下列各類變量中,不是局部變量的是 [D ]registerintx B.voidf(intw)C.intz; D.staticint已知pAm是類Am5,()正確的語句是 [C ]A.A1.p=5 B.A1->p=5 C.A.*p=5; D.*A1.p=5;已知i=5,j=0,下列各式中運算結(jié)果為j!=6的表達(dá)式是 [B A.j=i+(++j) C.j=++i+j D.j=j+++i假定pfloatp+1p個 字 節(jié)[C ]A.1 B.2 C.4 D.8在下面的字符數(shù)組定義中,有語法錯誤的語句是 [D ]chara[20]="abcdefg"; B.chara[]="x+y=55.";C.chara[15]={'1','2'}; D.chara[10]='5';若用數(shù)組名作為函數(shù)調(diào)用的實參,傳遞給形參的是 [A A.數(shù)組的首地址 數(shù)組中第一個元素的值C.數(shù)組全部元素的值 數(shù)組元素的個數(shù)假定AB為一個,則執(zhí)行語句自動調(diào)用該類構(gòu)造函數(shù)的次數(shù)為[A A.6 B.7 C.9 D.11當(dāng)使用fstream流類定義一個流對象,并打開一個磁盤文件時,文件的隱含打開方式為 [D ]ios::in B.ios::outC.ios::in|ios::out D.二、填空題:若acout向屏幕輸出數(shù)組a中所存字符串的語句為cout<<a;。若要把一個整型指針p轉(zhuǎn)換為字符指針,則采用的強制轉(zhuǎn)換表達(dá)式(char*)p 。C++語言中,一個函數(shù)由函數(shù)頭和函數(shù)體假定p(*p)+*p

組成。,然后使p的值增1。5.假定對二維數(shù)組a[3][4]進(jìn)行初始化的數(shù)據(jù){{2,5,6},{2,8},{7}},則a[1][1]被初始化為8 。設(shè)px指向一個類的動態(tài)分配的對象則執(zhí)“deletepx語句時將自動調(diào)用該類的析構(gòu)函數(shù) 。'A'~'ZASCII65~90charch=14*4+12;cout<<ch;得到的輸出結(jié)果為D 。表達(dá)式x=x+1++x。一個指針指向一個Data類對象,它保存著該對象的地址

,相應(yīng)的指針類型為Data類。若do循環(huán)的“尾”為while(++i<10,并且i的初值為,同時在循環(huán)體中不會修改i的值,則環(huán)體將被重復(fù)執(zhí)行10 次后正常結(jié)束。假定用戶沒有給一個名為AB的類定義構(gòu)造函數(shù),則系統(tǒng)為其隱含定義的構(gòu)造函數(shù)為 AB(){} 。_breakswitchC++語言中每條復(fù)合語句{(或左花括) 作為開始符。strlen("apple")的值為5 。執(zhí)行switch語句時,在進(jìn)行作為條件的表達(dá)式求值后,將從某個匹配的case標(biāo)號位置起向下執(zhí)行,當(dāng)碰到下一個標(biāo)號位置時

不停止

執(zhí)行。假定p所指對象的值為25,p+1所指對象的值為46,則*p++的值_25 。假定要動態(tài)分配一個類型為Worker的具有n個元素的數(shù)組,并由rWorker*r=_new。classBox{?};voidmain(){BoxA,B,C;}該程序運行時,分別調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù) 3 次。執(zhí)行以下語句后:cout<<char('A'+4);得到的輸出結(jié)果E 。一個二維字符數(shù)組a[10][20]能夠存儲10個字符串,每個字符串的字符長度至多為19 。關(guān)系表達(dá)式x+y>5

。 1假設(shè)在程序中a、bc均被定義成整型,所賦值都大于1,abc的表達(dá)式是1.0/a/b/c1.0/(a*b*c)(不使用強制類型轉(zhuǎn)換。假定a是一個一維數(shù)組,則a[i]的指針訪問方式為 *(a+i)。對一個類中的數(shù)據(jù)成員的初始化可以通過構(gòu)造函數(shù)中的初始化表實現(xiàn),也可以通過構(gòu)造函數(shù)中的 函數(shù)體實現(xiàn)。若需要定義一個標(biāo)識符常量并且使C++能夠進(jìn)行類型檢查則應(yīng)在定義語句的開始使用保留 const。每個字符指針變量占用內(nèi)4個字節(jié)。利用“對象.成員變量”形式訪問的對象成員僅限于被聲明為 public的成員。對于在所有函數(shù)定義之外定義的變量,若沒有被初始化則系統(tǒng)隱含對它賦予的初值為 。在C++程序中包含一個頭文件或程序文件的預(yù)編譯命令。假定一維數(shù)組的定義為inta[8],則該數(shù)組所含元素的個數(shù)_8 。當(dāng)使用 void留字作為函數(shù)類型時,該函數(shù)不返回任何值。表達(dá)式x=x+y表示成復(fù)合賦值表達(dá)式。當(dāng)程序中執(zhí)行到 continue語句時,將結(jié)束所在循環(huán)語句中循環(huán)體的一次執(zhí)行。對一個二維字符數(shù)組a”},則a[1]元素對應(yīng)的字符串為 456。若要把一個字符指針p轉(zhuǎn)換為整型指針,則采用的強制轉(zhuǎn)換表達(dá)式(int。類test的析構(gòu)函數(shù)名是 ~test(。三、判斷題:1.C++中,以分號分隔的語句單元稱為語句。[√]2.C++規(guī)定else可與在其之前未配對的任意if配對。[]3.若S表示一條C+while(1)S必定是無限循環(huán)。4.如果(x==y),則(&x==&y)。[]]5.在成員函數(shù)中訪問對象的數(shù)據(jù)成員時,可以直接用數(shù)據(jù)成員名,而在友元函數(shù)中訪問對象的數(shù)據(jù)成員時,必須指明是哪個對象的數(shù)據(jù)成員。]控制格式輸入輸出的操作子oct不是設(shè)置域?qū)挼摹?]在C+中0127是一個合法的整數(shù),最高位的0實際上是不必要,其值就是127。 ]如果x是一個整型變量則語“int*p=new是正確的。 ]若函數(shù)聲明語句double*f(),則該函數(shù)的返回值為實型指針。 √ ]引進(jìn)虛基類的真正目的是為了解決二義性問題。 ]若類A是類B的友元類,且類B是類C的友元類,則類A也是類C的友元類。 ]12.對于ofstream類對象file,feof成員函數(shù)的返回值為真表示打開文件失敗。 ]13.變量在使用之前必須聲(或定義。 14.'\n''\x6A''\101'均是C++的字符常量。 ]15.邏輯運算符都是雙目運算符,且優(yōu)先級相同。 [ ]16.如則(*x==*y)。 ]函數(shù)體內(nèi)聲明的靜態(tài)變量至多只會被初始化一次。 ]多繼承情況下,派生類的構(gòu)造函數(shù)的執(zhí)行順序取決于定義派生類時所指定的各基類的順序,而與派生類構(gòu)造函數(shù)中所定義的成員初始化列表的各項順序無關(guān)。 19.C++提供了3種基本控制結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 20字符串型數(shù)據(jù)是指'括起來的一串字符。 ]21.引用就是某個變量的別名,對引用的操作,實質(zhì)上就是對被引用的變量的操作。 ]22一個數(shù)組中的所有元素具有相同的數(shù)據(jù)類型。 ]constchar*p說明了p是指向字符串的常量指針。 ]模板定義中的類型參數(shù)可以用作局部變量、函數(shù)參數(shù)、函數(shù)返回值、數(shù)據(jù)成員等的數(shù)據(jù)類型[√ ]C++中變量要求嚴(yán)格區(qū)分大小寫。 ]26.表達(dá)式9!=10的值為。 ]語句“charc='c';charp=&c;”是錯誤的。 ]在一個被調(diào)用函數(shù)中一個return語句可返回多個值給調(diào)用函數(shù)。 ]靜態(tài)成員變量是整個類的所有對象共用的。 ]write函數(shù)只能按規(guī)定向文件寫入所指定的字符數(shù)。 ]每一個C++程序可以有多個源文件但是只能有一個main函數(shù)。 ]在說明語句a(15),&b=a,中的值*p的值是相等的。 ]在不同類型操作數(shù)組成的表達(dá)式中,其表達(dá)式的類型一定是最高類型double型。 ]for循環(huán)中循環(huán)變量的作用域是該循環(huán)的循環(huán)體內(nèi)。 ]在傳值調(diào)用中,要求實參與形參的類型完全一致并且個數(shù)相等。 ]類中所提供的成員函數(shù)可以直接訪問私有成員。 ]四、寫出程序的運行結(jié)果:1.#includevoidmain(){inta,b,c,d(5);c=2,c+=10;a=b=10;a*=2;b/=2;c%=2;cout<<a<<","<<b<<","<<c<<endl;}運行結(jié)果:20,5,02.#include<iostream.h>voidmain(){charflag='c';switch(flag){case'a':cout<<"1"<<endl;case'b':cout<<"2"<<endl;case'c':cout<<"3"<<endl;default:cout<<"4"<<endl;break;}}運行結(jié)果:343.#include<iostream.h>voidmain(){staticintb[][3]={{1,2,3},{4},{5,6}};b[0][2]=12,b[1][2]=18;cout<<**b<<"\t"<<**(b+1)<<"\t"<<**(b+1)<<"\t"<<*(*(b+1)+2)<<"\n";cout<<b[0][2]+b[1][2]+b[2][2]<<endl;}運行結(jié):1 4 4 18304.#include<iostream.h>voidmain(){intx=5,y=8,z=9,v;if(x>y)v=x;elsev=y;if(v<z)v=z;cout<<"v="<<v<<endl;}運行結(jié)果:v=95.#include<iostream.h>voidmain(){inti(0);while(++i){if(i==10)break;if(i%3!=1)continue;cout<<i<<endl;}}運行結(jié)果:1476.#include<iostream.h>voidff(intx){ cout<<"ff(int):"<<x<<endl;voidff(doublex){ cout<<"ff(double):voidmain(){floata(88.18);ff(a);charff(b);}運行結(jié)果:ff(double):88.18ff(int):97。7.#include<iostream.h>voidmain(){for(inti=1;i<=5;i++){for(intj=1;j<=5-i;cout<<"";for(j=1;j<=2*i-1;cout<<"#";cout<<endl;}}:########################8.#include<iostream.h>inta[6]={1,2,3,4,5};voidfun(intb[],intn);voidmain(){intm=6;fun(a,m);cout<<a[5]<<endl;}voidfun(intb[],intn){for(intI=0;I<n-1;I++)b[5]+=b[I];}運行結(jié)果:159.#includeclassA{public:A(){cout<<"1";}~A(){cout<<"2";}};classB:publicA{public:B(){cout<<"3";}~B(){cout<<"4";}};voidmain(){Bb;}運行結(jié)果:134210.#includeintf(intx){inty;if(x<=-1)y=x-1;if(x>-1&&y=2*x;if(2<x&&y=x*(x+2);returny;}voidmain(){cout<<f(5)<<""<<f(-5)<<endl;}運行結(jié)果:35-611.#include<iostream.h>constintn=5;voidmain(){inta[n][n]={{3,2,4,1,5},{8,7,2,5,6},{6,9,1,4,3},{5,5,3,6,2},{2,8,1,8,6}};ints=0;for(inti=0;i<n;i++)s+=a[i][i]+a[i][n-i-1];if(n%2==1)s-=a[n/2][n/2];cout<<s;}運行結(jié)果:4012.#includeclasss{intpublic:voidsetij(inta,intb){i=a,j=b;}~s(){cout<<"析構(gòu).."<<i<<endl;}intGetMul(){returni*j;}};voidmain(){s*p;p=news[3];for(intj=0;j<3;j++)p[j].setij(j,j); //jk=0;k<3;k++)cout<<"積["<<k<<"]="<<p[k].GetMul()<<endl;delete[]p;}運行結(jié)果:積[0]=0積[1]=1積[2]=4析構(gòu)..2析構(gòu)..1析構(gòu)..013.#include<iostream.h>voidmain(){inta=10,*q;if(q==NULL)cout<<"####"<<endl;elseq=&a;cout<<*q<<endl;}運行結(jié)果:1014.#include<iostream.h>voidmain(){inti,a[10],p[3],k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k=k+p[i]*2;cout<<k<<endl;}運行結(jié)果:2115.#include<iostream.h>classAB{inta;public:AB(intaa=0){a=aa;}~AB(){cout<<"析構(gòu)AB!"<<a<<endl;}};classB:publicAB{intb;public:B(intaa=0,intbb=0):AB(aa){b=bb;}~B(){cout<<"析構(gòu)B!"<<b<<endl;}};voidmain(){Bx(5),y(6,7);}析構(gòu)B!7析構(gòu)B!0AB!516.#include<iostream.h>voidmain(){floatx=1.5,y=2.5,z;floatpx=&x;py=&y;z=*px+*py;cout<<"x="<<*px<<"y="<<*py<<"z="<<z<<'\n';}運行結(jié)果:x=1.5y=2.5z=417.#includeintf(inta){intb=0;staticintc=3;b++,c++;return(a+b+c);}voidmain(){inta=2,I;for(I=0;I<3;I++)cout<<f(a)<<endl;}運行結(jié)果:78918.#include<iostream.h>classA{intpublic:A(intx){a=newint(x);cout<<"構(gòu)造"<<*a<<endl;}~A(){deletea;cout<<"析構(gòu)!"<<endl;}};voidmain(){Ax(3),*p;p=newA(5);deletep;}運行結(jié)果:構(gòu)造3構(gòu)造5析構(gòu)!析構(gòu)!五、完成程序:36,最大公約數(shù)12#include<iostream.h>voidmain(){inta,b,s;cout<<cin>>a>>b;intm=a,n=b;while( ①n或){s= ②m% m=n;n=s;}cout<<a<<"與"<<b<<"最大公約數(shù)是"<<m<<endl;}回答:①②#include<iostream.h>voidmain(){inta[8]={46,38,72,55,24,63,50,37};intmax=*a,min=*a;for(int*p=a+1;p<a+8;p++){if( )if( )}cout<<max<<''<<min<<endl;}回答:①②完成以下程序,判定某年是否為閏年。判斷閏年的條件是,如果年號能被400整除,則該年為閏年;4100#include<iostream.h>voidmain(){longx; //inty;cout<<"輸入年號:"; ①cin>>x; if(x%400==0|| ②x%4==0&&x%y=1;elsey=0;cout<<x<<"年"<<(y?"是":"不是")<<"閏年"<<endl;}回答:①②44#include<iostream.h>voidmain(){doublea[4][4]={0},r=1;inti,j;for(i=0;i<4;i++)for(j=0;j<4;j++) ①cin>>a[i][j]; //for(i=0;i<4;i++)for(j=0;j<4;j++)if( )r=r*a[i][j];cout<<"積為:"<<r<<endl;}回答:①②10074#include<iostream.h>voidmain(){inti,j;for(i=0; ①i<=9或;i++){j=i*10+4;if( continue;else}}

cout<<j<<endl;回答:①②有一個數(shù)列,它的第一項為5,第二項為810#include<iostream.h>voidmain(){inta[10];a[0]=5; ①a[1]=8; for(inti=2;i<10;i++)a[i]= ②a[i-1]+a[i-2] for(i=0;i<10;i++)cout<<a[i]<<'';cout<<endl;}回答:①②六、程序改錯::130成員:10"1-73行的行號,并改正錯誤。#includeclassS{intpublic:S(){n=10;}S(intnn){n=nn;};voidShow(){};cout<<"成員:"<<n<<"";};voidshows(S&p)//1行{p->Show();}//2行voidmain() //3{ //4Ss1(130),*p=&s1,s2; //5shows(p); //6shows(&s2); //7}錯誤行的行號改正②p.Show( 錯誤行的行號改正 錯誤行的行號改正 301-133行的行號,并改正錯誤。#includeclassP{intpublic:voidSetn(intval){n=val;}voidShow();};voidP:Show() //1{cout<<n<<'\t';} //2voidmain() //3{ //4Pob[3],*p=ob; //5for(inti=0;i<3;i++) //6ob[i].Setn((i+1)*10); //7行p++; //8p.Show(); //9p=ob[2]; //10p->Show(); //11p=&ob[0]; //12p->Show(); //13}錯誤行的行號改正②void 錯誤行的行號改正錯誤行的行號改正⑥p=&ob[2] ,在第1-14行中存在著3的行號,并改正錯誤。#include<iostream.h>classA{intpublic:A(intaa[],intnn):n(nn){for(intI=0;I<n;I++)a[I]=aa[I];}intGet(inti){returna[i];}intSumA(intn); //an};intSumA(intn) //1{ //2ints=0; //3for(intj=0;j<n;j++)s=s+a[j]; //4returns; //5} //6voidmain() //7{//8行inta[]={2,5,8,10,15,20},f,d=1;//9行Ax(a,6);//10for(inti=0;i<3;i++)//11d=d*x.Get(i);//12f=SumA(5);//13cout<<"d="<<d<<","<<"f="<<f<<endl;//14行}錯

溫馨提示

  • 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

提交評論