東南大學(xué) C++ 第二學(xué)期 期末復(fù)習(xí)二-含答案_第1頁
東南大學(xué) C++ 第二學(xué)期 期末復(fù)習(xí)二-含答案_第2頁
東南大學(xué) C++ 第二學(xué)期 期末復(fù)習(xí)二-含答案_第3頁
東南大學(xué) C++ 第二學(xué)期 期末復(fù)習(xí)二-含答案_第4頁
東南大學(xué) C++ 第二學(xué)期 期末復(fù)習(xí)二-含答案_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余46頁可下載查看

下載本文檔

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

文檔簡介

東南大學(xué)C++第二學(xué)期期末復(fù)習(xí)二_含答案東南大學(xué)C++第二學(xué)期期末復(fù)習(xí)二_含答案東南大學(xué)C++第二學(xué)期期末復(fù)習(xí)二_含答案V:1.0精細(xì)整理,僅供參考東南大學(xué)C++第二學(xué)期期末復(fù)習(xí)二_含答案日期:20xx年X月選擇題:(每題1分,共30分)以下程序的輸出結(jié)果是CA)1B)7C)9#include<iostream.h>voidfut(int**s,intp[2][3]){**s=p[1][1];}voidmain(){staticinta[2][3]={1,3,5,7,9,11};int*p;p=newint;fut(&p,a);cout<<*p<<endl;}執(zhí)行以下程序后,y的值是_(B)_A)17B)18C#include<iostream.h>voidmain(){staticinta[]={2,4,6,8,10};inty=0,x,*p;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);cout<<y<<endl;}定義一下類:classX{inta;public:X(intx=0){a=x;}};classY:publicX{intb;public:Y(intx=0,inty=0):X(y){b=x;}};在下列選項(xiàng)的說明語句中,存在語法錯(cuò)誤的是(C)。A.X*pa=newY(1,2)B.Xa1=Y(1,3);C.Xb2(2,3);Y&a2=b2;D.Yb3(10);Xa3(b3);下列關(guān)于虛函數(shù)描述中正確的是(B)。A.虛函數(shù)可以是一個(gè)static類型的靜態(tài)成員B.虛函數(shù)可以是一個(gè)非靜態(tài)成員C.虛函數(shù)實(shí)現(xiàn)靜態(tài)多態(tài)性D.基類中采用virtual說明一個(gè)虛函數(shù)后,派生類中定義相同的原型的虛函數(shù)時(shí),可不必加virtual說明若磁盤上已存在某個(gè)文本文件,其全路徑文件名為:d:\dir\test.txt,下列語句中能以”讀文本文件”的方式打開該文件的是(B)。A.ifstreamfile(“d:\dir\test.txt”);B.fstreamfile(“d:\\dir\\test.txt”);C.fstreamfile(ios::in);file.open(“d:\dir\test.txt”);D.ifstream*file=newifstream(“d:\\dir\\test.txt”);定義如下變量和數(shù)組:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};則以下語句的輸出結(jié)果是(C)。for(i=0;i<3;i++) cout<<x[i][2-i];A.159B.147C.357voidg((void*)(int,int,int),int,int)的參數(shù)個(gè)數(shù)是(A)。A.3個(gè)B.5個(gè)C.1個(gè)D.無法確定現(xiàn)需要對(duì)list類對(duì)象使用的邏輯運(yùn)算符“==”重載,以下函數(shù)聲明(28)是正確的。A.list&list::operator==(constlist&a);B.listlist::operator==(constlist&a);C.bool&list::operator==(constlist&a);D.boollist::operator==(constlist&a);若有說明:intt[3][2],*p=t[0];能正確表示t[2][1]的一組表達(dá)式是_(D)_A)**(t+2)+1,*(p[0]+5),**t+3B)**(t+2+1),*p[2][1],**(t[2]+1)C)*(t+2)+1,*p[5],*(t[0]+2)+1D)*(*(t+2)+1),p[5],*(t[2]+1)若有說明:intt[3][2],*p=t[0];能正確表示t[0]的一組表達(dá)式是_(27)_A)*(t+0),pB)**t,*pC)p[0],**tD)**t+0,*p[0]若有說明:intt[3][2];則表達(dá)式:&t[0]+1表示_(B)_A)第1行的行指針,一級(jí)指針B)第1行的行指針,二級(jí)指針C)元素t[0][1]的地址D)元素t[1][0]的地址設(shè)有說明:int*p,*q,*t,x=5;運(yùn)行以下程序段,輸出結(jié)果是_(C)_A)5隨機(jī)數(shù)B)隨機(jī)數(shù)5C)出錯(cuò)D)p=newint;q=&x;t=p;p=q;q=t;deletep;cout<<*p<<'\t'<<*q<<endl;閱讀程序題以下程序運(yùn)行后,輸出結(jié)果是(1)(2)(3)(4)。(8分)4*24*4*24*4*24*intf(inta,intb){ if(a>b)returnb+a;elsecout<<b*f(++a,--b)<<'*'<<'\n'; returna*f(a,b);}voidmain(){intn; n=f(1,3); cout<<n<<'\n';}程序#include"iostream.h"voidfun(int*s,intn){ intf=10;1515x=25 else{ fun(&f,n-2); *s=f*5; cout<<f<<'\n'; } }voidmain(){ intx=20; fun(&x,5); cout<<"x="<<x<<'\n';}程序輸出的第一行是4,第二行是5,第三行是6。程序#include<iostream.h>#include<iomanip.h>Doublex,u,v,f(double),g(double),t(double,double(*)(double));voidmain(){ x=4.0; u=t(x,f); v=t(x,g); cout<<"u="<<setw(4)<<u<<endl; cout<<"v="<<setw(4)<<v<<endl;}doublet(doublea,double(*f)(double)){return(*f)(a*a);}doublef(doublex){returnx+2.0;}doubleg(doublex){returnx-2.0;}程序輸出的前2行分別是:_7,8 u=18v=14程序#include"iostream.h"classbase{ inti;public: base(intI=0):i(I){} virtualintsum(){returni;}};classD:publicbase{ intj;public: D(intI=0,intJ=0):base(I),j(J){} intsum(){returnbase::sum()+j;}};voidcall(baseb){cout<<"sum="<<b.sum()<<endl;}voidmain()sum=10sum=10sum=10sum=10sum=10 Dd(10,47); pb=&d; call(b); call(d); call(*pb);}程度輸出的第一行9,是第二行是10第三行是11。35357#include<iostream.h>intf(intx){ ints=0; for(intj=2;j<=x;j++) if(x%j==0){ x/=j; s+=j; } returns;}voidmain(void){ for(inti=3;i<10;i++) if(i==f(i)) cout<<i<<endl;}程序運(yùn)行后輸出的第一行是12第二行是13第三行是14。程度#include"iostream.h"voidf(intj){ if(!j){ cout<<j;return;} if(j%2){f(j/10);cout<<j%10;} else{cout<<j%10;f(j/10);}}voidmain(){ f(0);cout<<'\n'; f(1357);cout<<'\n'; f(2468);cout<<'\n';}程序運(yùn)行后輸出的第一行是第二行是第三行是程序#include<iostream.h>classX{public: voidvirtualf(){cout<<"X:11"<<endl;} voidvirtualg(){cout<<"X:22"<<endl;}};B::55B::55B::44X::22public: voidf(){cout<<"A::33"<<endl;}};classB:publicA{public: voidf(){cout<<"B:44"<<endl;} voidg(inti=10){cout<<"B:55"<<endl;}};voidmain(void){ Bb; X*px=&b;b.g() px->f();px->g();}程序輸出的第一行是,第二行是,第三行是_。程序#include<iostream.h>classAx=1Ax=1A_1A_2A_22~AA_23~AA_24~A4~A3~Apublic:A(inta){x=a;cout<<"x="<<x<<'\t'<<"A_1"<<'\n';}A(A&s){x=s.x+1;cout<<"A_2"<<'\n';}~A(){cout<<x<<'\t'<<"~A"<<'\n';}};voidmain(void){Af1(1),f2(f1);f2=A(f1);f1=A(f2);f2=A(f1);}程序共輸出行,第一行是,第四行是,第六行是。程序x=4,y=10x=4,y=16x=4,y=10x=4,y=16x=4,y=6i=34x=8,y=7classA{inty;staticintx;public: operatorint(){returnx+y;} Aoperator++(int){returnA(x++,y++);} A(intx=2,inty=3){A::x=x+x;A::y=y+y;} voidprint(){cout<<"x="<<x<<",\t"<<"y="<<y<<endl;}};intA::x=23;voidmain(void){Aa(30,5),b(10,8),c;a.print();b.print();c.print();inti=a+b;cout<<"i="<<i<<endl;c++;c.print();}程序輸出的第一行是,第二行是,第三行是,第四行是,第五行是。#include<iostream.h>inti=1;intfac(intn){ staticintf=1;66,6 f=f*n;66,6}voidmain(){ inti,p=0; for(i=1;i<=3;i++)p=fac(i); cout<<p<<endl; p=0; for(i=1;i<=3;i++)p=p+::i++;//A cout<<p<<','; p=1; for(i=1;i<=3;i++)p=p*--::i;//B cout<<p<<endl;}問題1:該程序的第一行輸出為(,第二行輸出為下列程序的輸出結(jié)果是。#include"iostream.h"inta=100;voidfun(inti,intj,int*k){ j+=i; *k=j-i;}voidmain(){ inta,b,c; fun(17,18,&a); fun(19,a,&b);18,18,18 fun(a,b,&c);18,18,18 cout<<a<<','<<b<<','<<c<<endl;}以下程序運(yùn)行后,輸出結(jié)果是。#include<iostream.h>classA{public: inti; voidprint(){cout<<i<<"insertA\n";}};classB:publicA{public: virtualvoidprint(){cout<<i<<"insertB\n";}};classC:publicB{3insertC3insertA::i3insertC3insertA::i3insertC3insertA::i10insertA C(){A::i=10;} inti; voidprint() { cout<<i<<"insertC\n"; cout<<i<<"insertA::i\n"; }};voidmain(){ Aa; A*pa; Bb,*pb; Cc,*pc; c.i=1+(b.i=1+(a.i=1)); pc=&c; pc->print(); pb=&c; pb->print(); pa=&c; pa->print();}完善程序下面程序的功能是:先輸入一行字符串,并從輸入的字符串中找到最小的字符(其ASCII值最?。?,用min保存該字符。然后將該字符前的所有字符順序向后移動(dòng)一個(gè)字符的位置。最后,將保存的字符放在該字符串的第0個(gè)位置上。例如:設(shè)輸入的字符串為“bcdfae”,其中字母a為最小字符,經(jīng)移動(dòng)處理后,輸出的字符串為“abcdfe”。#include<iostream.h>voidfun(){//char*strcharmun,*q,*p;;//p=q=strmin=*p++;while(*p!=0){if(){min=*p;q=p;}//*p<minp++;}p=q;While(){*p=*(p-1);;}//q>str//p--,q--*q=min;}voidmain(){charstr[80];cin.getline(str,80);fun(str);cout<<str<<’\n’;}本程序被完善后輸出以下結(jié)果。C++langugeprogrammingTheendatthistimeofday!#include<iostream.h>#include<string.h>classA{public: staticinti; char*ps; A(char){//*s ps=newchar[strlen(s)+1]; strcpy(,s);//ps } ~A(){ if()cout<<"Theend";//i==0elsecout<<"atthistimeofday!\n"; if(ps)delete[]ps; i++; } A&operator=(A&b){ if(b.ps){ ps=newchar[strlen()+1];//b.ps strcpy(ps,b.ps); } elseps=0; return;//*this }};intA::i;voidmain(){ As1("programming"),s2("C++languge"); cout<<s2.ps<<'\t'; s2=s1; cout<<s2.ps<<'\n';}以下程序功能是:從一個(gè)字符串str中刪除或添加一個(gè)指定的字符,若指定的字符c出現(xiàn)在str中,則從str中刪除第一個(gè)值為c的字符;否則把字符c添加到str的尾部。在程序中,函數(shù)dele()從字符串中刪除一個(gè)字符;函數(shù)add()添加一個(gè)字符到字符尾部;函數(shù)search()用于查找指定的字符是否在字符串中,若在,則返回所在位置,否則返回0。#include<iostream.h>#include<iostream.h>char*sercher(char*s,charch){ while(*s) if(*s++==ch)return;//s-1 return0;}voiddele(char*s,charch){ char*p1=search(s,ch),*p2=p1+1; while(*p2)*p1++=//*p2++ *p1='\0';}voidadd(char*s,charch){ while(*s)s++; =ch;*s='\0';//*s++}voidmain(){ charstr[80]="abc12123",c; cout<<str<<'\n';cout<<"輸入一個(gè)字符"; cin>>c; void;if(search(str,c))fp=dele;//(*p)(char*,char) elsefp=add; fp();cout<<str<<'\n';//(str,c)}班主任根據(jù)全班n個(gè)學(xué)生某課程的考試成績建立一個(gè)鏈表,每個(gè)節(jié)點(diǎn)包括學(xué)號(hào)、成績和該成績?cè)谌嗟拿?。最后按排名順序輸出學(xué)號(hào)和成績。[程序10分]#include<iostream.h>structnode{intgrade,n;longnum;node*point;};node*trans(node*h,intn){//建立含報(bào)名者的檔案鏈表node*p;p=newnode;cin>>p->num>>p->grade; p->n=0;;//node*h=pfor(inti=0;i<n-1;i++){ p->point=newnode;;//p=p->point; cin>>p->num>>p->grade; p->n=0;}p->point=NULL;returnh;}node*sort(node*head,intn){//按成績排名次并輸出node*p,*q;intt=0,k=1;p=head;while(k<=n){ p=head; while(p!=NULL) if(&&p->grade>t){//p->n==0 t=p->grade;q=p;p=p->point; } elsep=p->point; q->n=k; ;//k++; ;//t=0; cout<<q->num<<'\t'<<q->grade<<'\t'<<q->n<<'\n';}returnhead;}voidmain(){node*student;intn;student=NULL;cin>>n;student=trans(student,n);cout<<"\nnumber:"<<'\t'<<"grade:"<<'\t'<<"排名:\n";student=sort(student,n);}以下程序定義了一個(gè)二維坐標(biāo)點(diǎn)類Point,派生矩形類Square。矩形左下角坐標(biāo)從基類繼承,矩形類只定義右上角坐標(biāo),還定義表示顏色的字符串。執(zhí)行下面的主程序?qū)⒌玫浇Y(jié)果:矩形s1:x=1y=3width=5,high=6,color=red矩形s2:x=1y=3width=5,high=6,color=redYellow[程序10分]#include<iostream.h>#include<string.h>classPoint{private:doublex,y;public: Point(doublexv=0,doubleyv=0){x=xv;y=yv;} doublegetx(){returnx;} doublegety(){returny;} voidShow(){cout<<"x="<<x<<"y="<<y;}//輸出對(duì)象信息};classSquare:publicPoint{//帶顏色的矩形(square)類 doublehx,hy; char*color;public: Square(){hx=0;hy=0;} Square(doublexv,doubleyv,doublehxv,doublehyv,char*s):(11){ hx=hxv;hy=hyv; color=newchar[9]; strcpy(color,s); } Square():Point(rr){//拷貝構(gòu)造函數(shù)//Square&rr hx=rr.hx;hy=rr.hy; color=newchar[strlen()+6];//rr.color strcat(strcpy(),"");//color,rr.color//Yellow } voidShow();};voidSquare::Show(){//輸出矩形的左下角坐標(biāo)、寬度、高度和顏色 Point::;//Show() cout<<"\twidth="<<hx<<','<<"high="<<hy; cout<<",color="<<color<<'\n';}voidmain(){ Squares1(1,3,6,9,"red"),s2(s1); cout<<"矩形s1:"<<'\t'; s1.Show(); cout<<"矩形s2:"<<'\t'; s2.Show();}以下程序?qū)崿F(xiàn)一個(gè)由動(dòng)態(tài)數(shù)組構(gòu)成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論