版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級C++機(jī)試(操作題)模擬試卷38(共9套)(共28題)國家二級C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1。程序中位于每個(gè)“//ERROR****found****”之后的一行語句有錯(cuò)誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)為:Name:SmithAge:21ID:99999Course-Num:12Record:970注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classStudentInfo{protected://ERROR*******found*******charName;intAge;intID;intCourseNum;floatRecord,public:StudentInfo(char*name,intAgefintID,intcourseNum,floatrecord);//ERROR*******found*******void~StudentInfo(){}floatAverageRecord(){returnRecord/CourseNum;}voidshow()const{cout<<"Name:"<<Name<<"Age:"<<Age<<"ID:"<<ID<<"CourseNum:"<<CourseNum<<"Record:"<<Record<<end1;}};//ERROR*******found*******StudentInfoStudentInfo(char*Name,intAge,intID,intCourseNum,floatRecord){Name=name;Age=age;this->ID=ID;CourseNum=courseNum;Record=record;}intmain(){StudentInfost("Smith",21,99999,12,970);st.show();return0;}標(biāo)準(zhǔn)答案:(1)char*Name;(2)~Studentlnfo(){}(3)StudentInfo∷Studentlnfo(char*name,intage,intID,intcoumeNum,floatrecord)知識(shí)點(diǎn)解析:暫無解析二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,其中定義了vehicle類,并派生出motorcar類和bicycle類。然后以motorcar和bicycle作為基類,再派生出motorcycle類。要求將vehicle作為虛基類,避免二義性問題。請?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:801501001注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream.h>classvehicle{private:intMaxSpeed;intWeight;public://**********found**********vehicle(intmaxspeed,intweight):_______~vehicle(){};intgetMaxSpeed(){returnMaxSpeed;}intgetWeight(){returnWeight;}};//**********found**********classbicycle:_______publicvehicle{private:intHeight;public:bicycle(intmaxspeed,intweight,intheight):vehicle(maxspeed,weight),Height(height){)intgetHeight(){returnHeight;};};//**********found**********classmotorcar:_______publicvehicle{private:intSeatNum;public:motorcar(intmaxspeed,intweight,intseatnum):vehicle(maxspeed,weight),SeatNum(seatnum){}intgetSeatNum(){returnSeatNum;};};//**********found**********classmotorcycle:_______{public:motorcycle(intmaxspeed,intweight,intheight):vehicle(maxspeed,weight),bicycle(maxspeed,weight,height),motorcar(maxspeed,weight,1){}};VOidmain(){motorcyclea(80,150,100);cout<<a.getMaxSpeed()<<end1;cout<<a.getWeight()<<end1;cout<<a.getHeight()<<end1;cout<標(biāo)準(zhǔn)答案:(1)MaxSpeed(maxspeed),Weight(weight){};(2)virtual(3)virtual(4)publicbicycle,publicmotorcar知識(shí)點(diǎn)解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,構(gòu)造函數(shù)使用初始化列表來對私有成員MaxSpeed和Weight初始化。(2)主要考查考生對派生類的掌握,題目要求將vehicle作為虛基類,避免二義性問題。因此在這里添加virtual使vehicle成為虛基類。(3)主要考查考生對派生類的掌握,題目要求以motorcar和bicycle作為基類,再派生出motorcycle類。在主函數(shù)中可以看到motorcycle類的實(shí)例a調(diào)用getHeight函數(shù)和getSeatNum函數(shù),由此可知這兩個(gè)基類都是公有繼承,因此得出語句:publicbicycle,publicmotorcar。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的CDeepCopy是一個(gè)用于表示矩陣的類。請編寫這個(gè)類的賦值運(yùn)算符成員函數(shù)operator=,以實(shí)現(xiàn)深層復(fù)制。要求:補(bǔ)充編制的內(nèi)容寫在“//**********333**********”與“**********666**********”之間。不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//CDeepCopy.h#include<iostream>#include<string>usingnamespacestd;classCDeepCopy{public:intn;//動(dòng)態(tài)數(shù)組的元素個(gè)數(shù)int*p;//動(dòng)態(tài)數(shù)組首地址CDeepCopy(int);~CDeepCopy();CDeepCopy&operator=(constCDeepCopy&r);//賦值運(yùn)算符函數(shù)},voidwriteToFile(char*);//main.cpp#include"CDeepCopy.h"CDeepCopy∷~CDeepCopy(){delete[]p;}CDeepCopy∷CDeepCopy(intk){n=k;P=newint[n];}//構(gòu)造函數(shù)實(shí)現(xiàn)CDeepCopy&CDeepCopy∷operator=(constCDeepCopy&r)//賦值運(yùn)算符函數(shù)實(shí)現(xiàn){//********333********//********666********}intmain(){CDeepCopya(2),d(3);a.P[0]=1;d.P[0]=666;//對象a,d數(shù)組元素的賦值{CDeepCopyb(3);a.P[0]=88;b=a;//調(diào)用賦值運(yùn)算符函數(shù)cout<<b.P[0];//顯示內(nèi)層局部對象的數(shù)組元素}cout<<d.P[0];//顯示d數(shù)組元素a.P[0]的值cout<<"dfadeaway;\n";cout<<a.P[0];//顯示a數(shù)組元素a.P[0]的值writeToFile("");return0;}標(biāo)準(zhǔn)答案:n=r.n;//把對象r字符長度賦值給ndelete[]p;//刪除動(dòng)態(tài)數(shù)組pp=newint[n];//給動(dòng)態(tài)數(shù)組P分配空間為nfor(inti=0;i<n;i++)//遍歷對象r中的數(shù)組Pp[i]=r.p[i];//把r.p[i]賦值給p[i]return*this;//返回被賦值的對象知識(shí)點(diǎn)解析:暫無解析國家二級C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符方式從此文本文件中逐個(gè)讀入并顯示在終端屏幕上。請?jiān)诔绦虻闹欣ㄌ柼幪钊胝_的內(nèi)容并把中括號刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#includevoidfun(char*s,inta,doublef){/*********found*********/【1】fp;charch;fp=fopen("filel.txt","W");fprintf(fp,"%s%d%f\n",s,a,f);fclose(fp);fp=fopen("file1.txt","r");printf("\nTheresult:\n\n");ch=fgetc(fp);/*********found*********/while(!feof(【2】)){/*********found*********/putchar(【3】};ch=fgetc(fp);}putchar(’\n’);fclose(fp);}main(){chara[10]="Hello";2ntb=12345;doublec=98.76;fun(a,b,c);}標(biāo)準(zhǔn)答案:(1)FILE*(2)fp(3)ch知識(shí)點(diǎn)解析:填空1:由語句fopen("filel.txt","r")可知,fp應(yīng)該是文件類型指針,因此本空應(yīng)該填寫FILE*。填空2:feof函數(shù)只能對文件類型數(shù)據(jù)進(jìn)行操作,因此本空應(yīng)填寫fp。填空3:putchar()代表輸入一個(gè)字符,從ch=fgetc(fp)可以看出本題應(yīng)該填寫ch。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:將S所指字符串中最后一次出現(xiàn)的與t1所指字符串相同的子串替換成t2所指字符串,所形成的新串放在w所指的數(shù)組中。要求t1和t2所指字符串的長度相同。例如,當(dāng)s所指字符串中的內(nèi)容為“abcdab.fabc”,t1所指串中的內(nèi)容為“ab”,t2所指子串中的內(nèi)容為“99”時(shí),結(jié)果在W所指的數(shù)組中的內(nèi)容應(yīng)為“abcdabf99c”。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includevoidfun(char*s,chart1,chart2,charW){char*p,*r,*a;strcpy(w,s);/*********found*********/while(w){p=w;r=t1;while(*r)/*********found*********/IF(*r==*p){r++;p++;}else{break;}if(*r==’\0’)a=w;w++;}r=t2;while(*r){*a=*r;a++;r++;}}main(){chars[100],t1[100],t2[100],w[100];printf("\nPleaseenterstrings:");Scanf("%s",s);printf("\nPleaseentersubstringtl:”);Scanf("%s",t1);printf("\nPleaseentersubstringt2:");Scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,t1,t2,w);printf("\nTheresultis:%s\n",w);}else{printf("\nError:strlen(t1)!=strlen(t2)\n");}}標(biāo)準(zhǔn)答案:(1)while(*w)(2)if(*r==*p)知識(shí)點(diǎn)解析:(1)此處要判斷的是值的真假,而不是地址,所以改鄉(xiāng)為while(*w)。(2)C語言中關(guān)鍵字區(qū)分大小寫,只需運(yùn)行程序,就可以根據(jù)錯(cuò)誤提示找到。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序在文件PROG1.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include#include#include#includevoidfun(char*str){}main(){charstr[81];charMsg[]="Inputastring:";intn;FILE*out;printf(Msg);gets(str);puts(str);fun(str);printf("***str:%s\n",str);/********************/out=fopen("out.dat","w");fun(Msg);fprintf(out,"%s",Msg);fclose(out);/********************/}標(biāo)準(zhǔn)答案:voidfun(char*str){inti=0;char*=str;while(*p){if(*p!=’’)/*刪除空格*/{str[i++]=*p;}p++;}str[i]=’\0’;/*加上結(jié)束符*/}知識(shí)點(diǎn)解析:本題要求刪除所有空格,即保留除了空格以外的其他所有字符。由于C語言中沒有直接刪除字符的操作,所以對不需要?jiǎng)h除的字符采用“保留”的操作。用指針p指向字符串中的每一個(gè)字符,每指向到一個(gè)字符都判斷其是否為空格,若不是空格則保存到str[i]。國家二級C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請改正其中的錯(cuò)誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為:HelloVisualC++!HelloVisualC++!!注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即可。#include<iostream.h>classCMyObjett{public:CMyObject(){//******error******cout<<"Hello,"VisualC++!"<<endl;}CMyObject(intn){//******error******cout<<"Hello,\nVisualC++’!"<<endl;}//******error******^CMyObject(){}};voidmain(){CMyObjectobj1;CMyObjectobj2(0);}標(biāo)準(zhǔn)答案:(1)cout<<"Hello,"(2)cout<<"Helio,\(3)~CMyObject()知識(shí)點(diǎn)解析:(1)由程序的運(yùn)行結(jié)果可知,語句CMyObjectobj1;定義obj1對象調(diào)用默認(rèn)的構(gòu)造函數(shù),此時(shí)屏幕上輸出“HelloVisualC++!”cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,第1個(gè)標(biāo)識(shí)下“Hello,”字符串插在輸出流中,因此必須加雙引號引用起來,即第1個(gè)標(biāo)識(shí)下應(yīng)該為“cout<<”"Hello,"”。(2)第2個(gè)標(biāo)識(shí)下“\n”表示換行,與要求的輸出結(jié)果不同,因此第2個(gè)標(biāo)識(shí)下應(yīng)改為“cout<<"Hello,\”。(3)析構(gòu)函數(shù)是一個(gè)特殊的函數(shù),其函數(shù)名與類名相同,并在其名加“~”,用來與構(gòu)造函數(shù)加以區(qū)別,因此第3個(gè)標(biāo)識(shí)下應(yīng)改為“~CMyObject()”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼。函數(shù)MergeAndSort(ints[],inte[],inta[],intm,intn)實(shí)現(xiàn)將兩個(gè)數(shù)組合并。這兩個(gè)數(shù)組已經(jīng)有序,按照由小到大的順序排列。例如:e[]={1,3,5,6},m是數(shù)組e的長度,即為4。a[]={2,4,5,7,11,13},n是數(shù)組a的長度,即為6。則執(zhí)行的結(jié)果為:s[]={1,2,3,4,5,6,7,11,13}補(bǔ)充函數(shù)fun(ints[],inte[],inta[],intm,intn),使之實(shí)現(xiàn)上述要求。注意:請勿改動(dòng)主函數(shù)。#include<iostream.h>voidMergeAndSort(ints[],inte[],inta[],intm,intn){}intmain(){intdata[20],i;inta[]=(1,3,5,6);intb[]={2,4,5,7,11,13};cout<<"a[]=";for(i=0;i<4;i++)cout<<a[i]<<’,’;cout<<endl;cout<<"b[]=";for(i=0;i<6;i++)cout<<b[i]<<’,’;cout<<endl;MergeAndSort(data,a,b,4,6);cout<<"s[]=";for(i=0;i<9;i++)cout<<data[i]<<’,’;cout<<endl;return0;}標(biāo)準(zhǔn)答案:inti,j,k;i=0;j=0;k=0;while(i<m&&j<n){if(e[i]<a[j]){S[k++]=e[i++];//取小的,因?yàn)閺男〉酱笈判騷elseif(e[i]==a[j])//相等,取e[i]或a[j]都可{s[i++]=e[i];i++;j++;}else//e[i]>a[j],取小的a[j]{s[k++]=a[j++];}}while(i<m)s[k++]=e[i++];//如果數(shù)組e后面還有沒有加進(jìn)來的元素,則加進(jìn)去while(j<n)s[k++]=a[j++];//如果數(shù)組a后面還有沒有加進(jìn)來的元素,則加進(jìn)去知識(shí)點(diǎn)解析:(1)由審題分析可知,可設(shè)置循環(huán)來逐個(gè)讀取e數(shù)組和a數(shù)組的元素值,然后選擇小的元素放在數(shù)組s中,如果相等則取a數(shù)組元素或e數(shù)組元素均可,可以利用ifelse語句來進(jìn)行判斷。(2)由于數(shù)組e和數(shù)組a長度可能不一定相同,因此在循環(huán)結(jié)束之后,還需要把長度長的數(shù)組的剩余的元素添加到s數(shù)字中,即循環(huán)結(jié)束后如果e數(shù)組內(nèi)還有字符的話把e數(shù)組內(nèi)剩下的字符添加到s數(shù)組內(nèi),同樣如果a數(shù)組內(nèi)還有字符的話把a(bǔ)數(shù)組內(nèi)剩下的字符添加到S數(shù)組內(nèi)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)定義CMyTime的私有成員函數(shù)myear、mmonth類型為int,請?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)補(bǔ)充完成CMyTime的構(gòu)造函數(shù),完成對myear、mmonth的賦值,請?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)完成print()的輸出,請?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。輸出格式如下:CurrentTimeyear:xxmonth:xx注意:xx表示兩位0~9的數(shù)字,如CurrentTimeyear:08month:04。(4)完成對month的增加函數(shù)AddMonth(intm),請?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動(dòng)程序中的其他內(nèi)容。#include<iostream.h>classCMyTime{private://********1********public:CMyTime(intyear,intmonth){//********2********}voiddisplay(){charyearChar[3];charmonthChar[3];yearChar[0]=(m_year%100)/i0+’0’;yearChar[1]=(m_year%10)+’0’;monthChar[0]=(m_month%100)/10+’0’;monthChar[1]=(m_month%10)+’0’;//********3********cout<<"CurrentTime"<<"year:"<<yearChar<<"month:"<<monthChar<<endl;}voidAddMonth(intm){m_month=m_month-1+m;//********4********m_month=m_month%12+1;}voidAddYear(intn){m_year=m_year+n;}};intmain(){CMyTimemyTime(2006,11);myTime.AddMonth(5);myTime.display();myTime.AddYear(1);myTime.display();return0;}標(biāo)準(zhǔn)答案:(1)添加語句:intm_year,m_month;(2)添加語句:m_year=year;m_month=month;(3)添加語句:yearChar[2]=0;monthChar[2]=0;(4)添加語句:m_year+=m_month/12;或m_year=m_year+m_month/12;知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下添加CMyTime的私有成員變量m_year、m_month的聲明,因此第1個(gè)標(biāo)識(shí)下應(yīng)添加“intm_year,m_month;”。(2)第2個(gè)標(biāo)識(shí)下完成類成員構(gòu)造函數(shù)變量的初始化,即將參數(shù)分別賦值給m_year和m_month,因此第2個(gè)標(biāo)識(shí)下應(yīng)添加“m_year=year;m_month=month;”。(3)第3個(gè)標(biāo)識(shí)下準(zhǔn)備輸出yearChar數(shù)組和monthChar數(shù)組,字符數(shù)組的最后一個(gè)字符應(yīng)該為NULL(0),因此第3個(gè)標(biāo)識(shí)下應(yīng)添加“yearChar[2]=0;monthChar[2]=0;”。(4)m_month和參數(shù)之和賦值給m_month,其和可能超過12,如果超過12表示下一一年了,因此m_year應(yīng)該加1,故先判斷m_month是否比12大,可取m_month/12和m_year相加,如果m_month沒有超過12則m_month/12=0,反之則為1,第4標(biāo)識(shí)下應(yīng)舔加“m_year+=m_month/12;或m_year=m_year+m_month/12;”。國家二級C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾pmjl下的工程pmjl,其中有枚舉DOGCOLOR、狗類Dog和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”下的語句行有錯(cuò)誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)該是:ThereisawhitedognamedHobo.ThereisablackdognamedHaha.ThereisamotleydognamedHihi.注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#includeusingnamespacestd;//狗的顏色:黑、白、黃、褐、花、其他erlLlmDOGCOLOR{BLACK,WHITE,YELLOW,BROWN,PIEBALD,OTHER};classDog{//狗類DOGCOLORcolor;charFlame[20];stariCintcount;;public:Dog(charname[],DOGCOLORcolor){strcpy(this一>name,name);//ERROR*********found*********strcpy(this一>color,color);}DOGCOLORgetColor()const{returncolor;)//ERROR*********found**********constchar*getName()const{return*name;)constchar*getC0lorString()const{switch(color){caseBLACK:return”black”;caseNHITE:return”white’;caseYELLOW:return”yellow”;caseBRONN:Eeturn”brown”;casePTEB/kLD:return”piebald”;}return”motley”;}voidshow()const{cout<<”Thereisa¨<標(biāo)準(zhǔn)答案:(1)this一>color=color;(2)eonstchargetName()const{return:I:name;}(3)Dogdog1(”Hoho”,’WHITE),dog2(”Haha”,BLACK),dog3(”Hihi”,OTHER.);知識(shí)點(diǎn)解析:主要考查的是Dog類,其中涉及enum、靜態(tài)私有成員、const函數(shù)和構(gòu)造函數(shù)。strcpy函數(shù)用來復(fù)制字符串,而對double、int等類型直接用“=”賦值即可。定義同一類型的變量時(shí),幾個(gè)變量之間用“,”分開?!窘忸}思路】(1)主要考查考生對strcpy函數(shù)的掌握,如果看到上一條語句strcpy(this一>name,name);,就以為本條語句也要用strcpy函數(shù)來賦值,這是錯(cuò)誤的。Strcpy函數(shù)只能復(fù)制字符串,根據(jù)類的私有成員聲明可知,colol。是DOGCOLOR型的,這里直接使用賦值語句“:”即可。(2)主要考查考生對函數(shù)返回值的掌握,先解讀語句constchar*getName()const{return*name;},要返回的是一個(gè)eonst的字符指針,同時(shí)函數(shù)內(nèi)的值不能改變,nalne在類的私有成員聲明中是個(gè)字符數(shù)組,*name代表字符數(shù)組而不是字符指針,問題就出來了,需要修改返回類型:eonstchargetName()const{return水nanle;}。(3)語法錯(cuò)誤,定義變量時(shí),變量之間應(yīng)使用“,”分開。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾pmj2下的工程proj2,該工程中包含一個(gè)程序文件main.epp,其中有坐標(biāo)點(diǎn)類point、線段類Line和三角形類Triangle的定義,還有main函數(shù)的定義。程序中兩點(diǎn)間距離的計(jì)算是按公式實(shí)現(xiàn)的,三角形面積的計(jì)算是按公式請?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:Side1:9.43398Side2:5Side3:8area:20注意:只在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//***found***”。#include#includeusingnamespacestd;classPoint{//坐標(biāo)點(diǎn)類public:constdoublex,y;Point(doubleX=0.0,doubley=0.0):x(x),y(y){}//*********found*********doubledistanceTo(——)const{//到指定點(diǎn)的距離returnsqrt((x—P.x)*(x—P.x)+(Y—P.y)*(y—P.y));}};classLine{//線段類public:constPointp1,p2;//線段的兩個(gè)端點(diǎn)//*********found**********Line(Pointpl,Pointp2):_________{}doublelength()const{returnp1.distanceTo(p2);)//線段的長度};classTriangle{//三角形類public:constPointpl,p2,p3;//三角形的三個(gè)頂點(diǎn)//*********found*********Triangle(__________):pl(p1),p2(p2),p3(p3){}doublelengthl()const{//邊p1,p2的長度returnLine(pl,p2).1ength(),}doublelength20const{//邊p2,p3的長度returnLine(p2,p3).1ength();}doublelength3()const{/邊p3,pl的長度returnLine(p3,p1).length();}doublearea()const{//三角形面積//*********found*********doubleS=——;returnsqrt(S*(S—lengthl())。(Slength2())*(S—length3()));}};intmain(){Triangler(Point(0.0,8.0),Point(5.0,0.0),Point(0.0,0.0));cout<<”Side1:“<標(biāo)準(zhǔn)答案:(1)constPoint&p(2)pl(p1),p2(p2)(3)Pointp1,Pointp2,Pointp3(4)(1engthl()+length2()+length3())/2知識(shí)點(diǎn)解析:主要考查的是坐標(biāo)點(diǎn)類Point類、線段類IJne類和三角形類Triangle類,其中涉及構(gòu)造函數(shù)和const函數(shù)。構(gòu)造函數(shù)的成員列表初始化是最常考查的知識(shí)點(diǎn),定義函數(shù)的參數(shù)時(shí)要注意觀察函數(shù)體及函數(shù)的注釋,理解該函數(shù)的功能。【解題思路】(1)主要考查考生對函數(shù)形參的掌握,由函數(shù)的注釋可知有本坐標(biāo)點(diǎn)到達(dá)某個(gè)坐標(biāo)點(diǎn)類的距離,再根據(jù)函數(shù)體returnsqrt((x—p.x)*(x—p.x)+(y—p.y)*(y—p.y));可知,該坐標(biāo)點(diǎn)類名為p,因此可以知道形參為Point&p,為了不改變該坐標(biāo)點(diǎn)的值,前面要加上const。(2)主要考查考生對構(gòu)造函數(shù)的掌握,對于常變量型私有成員constPointp1,p2,只能用成員初始化列表進(jìn)行賦值。(3)主要考查考生對構(gòu)造函數(shù)的掌握,由空格后面的語句:p1(p1),p2(p2),p3(p3){}可知,該構(gòu)造函數(shù)需要進(jìn)行成員列表初始化,再看類的私有成員constPointp1,p2,p3,可知p1,p2,p3是Point類型,因此形參為Pointp1,Pointp2,Pointp3。(4)主要考查考生對成員函數(shù)的掌握,根據(jù)函數(shù)注釋,可知本函數(shù)要求計(jì)算三角形面積,再看題目的提示:s=(a+b+c)/2??芍崭裉幰畹氖侨切蔚娜龡l邊之和除以2,而求邊長的函數(shù)已經(jīng)給出,這里直接調(diào)用即可。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個(gè)用于表示數(shù)據(jù)表的類。sort成員函數(shù)的功能是將當(dāng)前數(shù)據(jù)表中的元素升序排列。請編寫這個(gè)sort函數(shù)。程序的正確輸出應(yīng)為:排序前:7,1,3,11,6,9,12,10,8,4,5,2排序后:1,2,3,4,5,6,7,8,9,10,11,12要求:補(bǔ)充編制的內(nèi)容寫在“//*********333*********”與“//*********666*********”兩行之間。不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序調(diào)用。//DataLiSt.h#includeusingnamespacestd;classDataList{//數(shù)據(jù)表類intfen;double*d;public:DataList(intlen,doubledata[]=NULL);一DataList(){delete[]d;)intlength()const{returnlen;)//數(shù)據(jù)表長度(即數(shù)據(jù)元素的個(gè)數(shù))doublegetElement(inti)const{returnd[i];)voidsort();//數(shù)據(jù)表排序voidshow()const;//顯示數(shù)據(jù)表};voidwriteToFile(char*,constDataList&);f/main.cpp#include”DataList.h”DataList::DataList(intlen,doubledata[]):len(1en){d:newdouble[1en];for(inti=0;i標(biāo)準(zhǔn)答案:for(Int1=U;1<上en;++1)//從頭遍歷數(shù)組dfor(intj=i;jd[j])//d[i]和d[j]比較人,如果大于,就d[i]和d[j]值交換{inttemp=d[i];//把臨時(shí)整型變量temp賦值為d[i]d[i]=d[j];//把d[j]賦值給d[i]d[j]=temp;//把temp值賦給d[j]}知識(shí)點(diǎn)解析:主要考查的是DataList類,其中涉及動(dòng)態(tài)數(shù)組、構(gòu)造函數(shù)、析構(gòu)函數(shù)、const函數(shù)和排序算法。Sort函數(shù)是一個(gè)排序函數(shù),對于排序可以使用的方法很多,考生只需要使用自己最擅長的方法即可,題目并沒有指定考生使用哪種方法?!窘忸}思路】本題使用最簡單的冒孢排序算法,首先明確要排序的動(dòng)態(tài)數(shù)組d,其長度為len,在此可以使用兩個(gè)下標(biāo)i和j相比較,當(dāng)d[i]>d[j]時(shí),數(shù)組內(nèi)的值利用中間變量temp進(jìn)行交換。國家二級C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,使它能得出正確的結(jié)果。本程序要求屏幕輸出:n=99注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在//********error********的下面。#include<ioStream.h>//********error********classTestClass(){public://********error********void~TestClass(){};TestClass(intn){cout<<’n’<<’=’<<n<<endl;);//********error********}voidmain(){TestClasstest(99);return;}標(biāo)準(zhǔn)答案:(1)classTestClass(2)~TestClass(){};(3)};知識(shí)點(diǎn)解析:(1)第1個(gè)標(biāo)識(shí)下的“classTestClass()”類的定義,根據(jù)C++中類的定義格式,類名后面是沒有括號的,所以第1個(gè)標(biāo)識(shí)下應(yīng)為“classTestClass”。(2)第2個(gè)標(biāo)識(shí)下的“void~TestClass(){};”是析構(gòu)函數(shù),根據(jù)C++中析構(gòu)函數(shù)的格式中是沒有函數(shù)類型說明的,所以修改為“~TestClass(){};”。(3)根據(jù)C++中類的定義,第三個(gè)標(biāo)識(shí)下類結(jié)束的“}”缺少分號,即修改為“};”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請完成函數(shù)fun(char*str,charch),本函數(shù)采用二分法,在己按字母次序從小到大排序的字符數(shù)組str中,查找字符ch,若ch在數(shù)組中,函數(shù)返回字符ch在數(shù)組中的下標(biāo),否則返回-1。二分法查找的思想是:初始查找區(qū)間的下界為0,上界為len-1,查找區(qū)間的中后,k=(下界+上界)/2;若list[k]等于ch,查找成功;若list[k]>ch,則新的查找區(qū)間的下界不變,上界改為k-1;否則新的查找區(qū)間的下界改為k+1,上界不變。在新區(qū)間內(nèi)繼續(xù)用二分法查找。注意:請勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。#include<iostream.h>intfun(char*str,charch){}voidmain(){charstr[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’,0};charch;cout<<"請輸入一個(gè)字符:"<<endl;cin>>ch;cout<<"輸入數(shù)字的位置是:"<<fun(str,ch)<<endl;return;}標(biāo)準(zhǔn)答案:intlow=0;//初始查找區(qū)間的下界inthigh;intk;for(high=0;str[high]!=0;high++)//求字符串長度while(low<high)//循環(huán)判斷字符位置{k=(low+hlgh)/2;if(str[k]==ch)returnk;elseif(str[k]>ch)high=k-1;elselow=k+1;}if(str[low]==ch)returnlow;return-1;知識(shí)點(diǎn)解析:(1)首先,初始查找區(qū)間的下界為0。(2)然后,求得字符串長度len,上界為len-1,查找區(qū)間的中后,k=(下界+上界)/2;若list[k]等于ch,查找成功。(3)若list[k]>ch,則新的查找區(qū)間的下界不變,上界改為k-1:否則新的查找區(qū)間的下界改為k+1,上界不變。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,閱讀下列程序說明和代碼,功能如下:從屏幕輸入數(shù)字,然后由大到小插入指定的鏈中。當(dāng)輸入0時(shí),表示輸出的數(shù)據(jù)已經(jīng)輸入完成,然后把數(shù)據(jù)打印到屏幕,然后釋放內(nèi)存。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)在父節(jié)點(diǎn)的Next中保存新插入的節(jié)點(diǎn)的指針,請?jiān)谧⑨專?*******1********后添加適當(dāng)?shù)恼Z句。(2)把pNext的子節(jié)點(diǎn)賦給pNext本身,請?jiān)谧⑨專?*******2********后添加適當(dāng)?shù)恼Z句。(3)判定p的子節(jié)點(diǎn)不為空,如果不為空,則打印p其中的數(shù)據(jù)到屏幕,請?jiān)谧⑨專?*******3********后添加適當(dāng)?shù)恼Z句。(4)用temp1保存動(dòng)態(tài)申請內(nèi)存節(jié)點(diǎn)的鏈表頭,請?jiān)谧⑨專?*******4********后添加適當(dāng)?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include<iostream.h>classTestClass{public:TestClass(intdata=0){this->data=data;this->next=NULL;};intdata;TestClasS*next;};voidInsert(TestClaNs*p,intdata){TestClass*temp=newTestClass(data);TestClass*pParent=p;TestClass*pNext=p->next;while(pNext){if(data>pNext->data){//********1********temp->next=pNext;return;}ElSe{pParent=pNext;//********2********}}if(pNext==NULL){pParent->next=temp;return;}}voidprintf(TestClass*p){//********3********whil’e(){cout<<p->next->data<<"";p=p->next;}cout<<endl;}voidDelete(TestClass*p){//********4********TestClass*temp1=;TestClass*temp2;while(temp1!=NULL){temp2=temp1->next;deletetemp1temp1=temp2;}}voidmain(){inti=0;TeStClasshead;do{intdata;cout<<"請輸入一個(gè)數(shù)字:"<<end1;Cin>>data;if(data==0)break;Insert(&head,data);}while(1);printf(&head);Delete(&head);return;}標(biāo)準(zhǔn)答案:(1)添加語句:pParent->next=temp;(2)添加語句:pNext=pNext->next;(3)將“while()”補(bǔ)充完整為:while(p->next!=NULL)(4)將“TestClass*temp1=;”補(bǔ)充完整為:TestClass*temp1=p->next;知識(shí)點(diǎn)解析:(1)題目1要求“在父節(jié)點(diǎn)的Next中保存新插入的節(jié)點(diǎn)的指針”。對于指針的操作pParent->next為pParent的子結(jié)點(diǎn),在父節(jié)點(diǎn)的Next中保存新插入的節(jié)點(diǎn)的指針,即“pParent->next=temp;”。(2)題目2要求“把pNext的子節(jié)點(diǎn)賦給pNext本身”。pNext->next為pNext的子結(jié)點(diǎn),把pNext的子節(jié)點(diǎn)賦給DNext本身,即“pNext=pNext->next;”。(3)注釋//********3********下是判定P的子節(jié)點(diǎn)不為空。P的子節(jié)點(diǎn)是p->next。程序中的“while()”缺乏P的子節(jié)點(diǎn)不為空的判斷條件,所以修改為“while(p->next!=NULL)”。(4)題目4要求“用temp1保存動(dòng)態(tài)申請內(nèi)存節(jié)點(diǎn)的鏈表頭”。p為鏈表,p->next為鏈表頭。程序中的語句“TestClass*temp1=;”中temp1沒有被賦值,所以修改為“TestClass*temp1=p.>next;”。國家二級C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp該程序運(yùn)行時(shí)有錯(cuò)誤,請改正程序中的錯(cuò)誤。本題的功能是:從鍵盤輸入字符串S,然后輸出字符串s中的字符個(gè)數(shù)。注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語句在∥********error********的下面1#include2intmain()3{4∥********error*********5cout<<“pleaseinputastring:”<標(biāo)準(zhǔn)答案:(1)std::cout<<“pleaseinputastring:”。<知識(shí)點(diǎn)解析:程序要求從鍵盤輸入字符串s,然后輸出字符串s中字符的個(gè)數(shù)。從已給定源程序的main主函數(shù)開始入手,程序通過tin輸入標(biāo)準(zhǔn)類型的成員函數(shù)getline讀入一行字符,然后通過strlen()函數(shù)求得字符串長度。解題思路(1)第1個(gè)標(biāo)識(shí)下實(shí)現(xiàn)在屏幕上輸出“pleaseinputastring:”提示語句。在程序中用到C++標(biāo)準(zhǔn)庫時(shí),要使用std標(biāo)準(zhǔn)命名空間進(jìn)行限定。cout為標(biāo)準(zhǔn)庫函數(shù),所以要聲明tout是在命名空間std中定義的流對象,即第1個(gè)標(biāo)識(shí)下的“std::cout<<”pleaseinputastring:”<二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請完成函數(shù)fun(char*str,charch),本函數(shù)采用二分法,在已按字母次序從小到大排序的字符數(shù)組s仃中,查找字符ch,若ch在數(shù)組中,函數(shù)返回字符ch在數(shù)組中的下標(biāo),否則返回一1。;二分法查找的思想是:初始查找區(qū)間的下界為0,上界為1en-1,查找區(qū)間的中后,k=(下界+上界)/2;若list[k1等于ch,查找成功;若list[k]>ch,則新的查找區(qū)間的下界不變,上界改為k-1;否則新的查找區(qū)間的下界改為k+1,上界不變。在新區(qū)間內(nèi)繼續(xù)用二分法查找。注意:請勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。#include<10Stream.h>intfun(char*str,charch){}voidmain(){charstr[]={’a’,’b’,’c’,’d’,‘e’,‘f’,’g’,’h’,’i’,’j’,’k’,0};charch;cout<<“請輸入一個(gè)字符:”<>ch,cout<<“輸入數(shù)字的位置是:”<標(biāo)準(zhǔn)答案:intlow=0,//初始查找區(qū)間的下界inthigh;intk;for(high=0;str[high]!=0;high++)//求字符串長度while(10wch)high=k一1;elselow=k+1;}if(str[low]==ch)returnlow;return一1;知識(shí)點(diǎn)解析:根據(jù)題干中給出的二分法查找思想,從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)intfun(char*str,charch)中的ch參數(shù)為輸入的字符,其中返回值為ch所在的位置。解題思路(1)首先,初始查找區(qū)間的下界為0。(2)然后,求得字符串長度len,上界為len.1,查找區(qū)問的中后,k=(下界+上界)/2;若list[k]等于ch,查找成功。(3)若list[k]>ch,則新的查找區(qū)間的下界不變,上界改為k-1;否則新的查找區(qū)間的下界改為k+1,上界不變。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。學(xué)校教務(wù)處要為任課老師開發(fā)一個(gè)學(xué)生管理系統(tǒng),需求如下:(1)學(xué)生的信息是要受到嚴(yán)密保護(hù)和限制的,包括姓名、五個(gè)英文字符的學(xué)號,以及精確到小數(shù)點(diǎn)后一位的一科成績,只有任課老師可以修改,如果學(xué)生升學(xué)了,比如由本科升到研究生,原來的信息還有效,而只需添加研究生的必要信息,不過現(xiàn)在不必馬上實(shí)現(xiàn),但應(yīng)當(dāng)有所考慮。(2)學(xué)生的所有信息可以查看,但也只有學(xué)生自己才有這個(gè)權(quán)利。(3)學(xué)生的信息可以從文件中讀取來構(gòu)造信息庫,需要把信息輸出到屏幕以便核實(shí),但這需要任課老師來完成。(4)老師能提供所教學(xué)生的完整信息列表,同時(shí)可按成績高低排序。(5)為了便于學(xué)校評定獎(jiǎng)學(xué)金,需要單獨(dú)查找成績最高的同學(xué)(一般不采用把成績單全部排列后來選取,可能這比較耗費(fèi)時(shí)間,雖然要求不太合理,但要按用戶的需求操作,同時(shí)需要指出的是,如果成績最高者有數(shù)名,需要一一列出)。(6)由于學(xué)校的機(jī)器比較老,內(nèi)存嚴(yán)重不足,每個(gè)老師帶的學(xué)生數(shù)不一樣,但也不會(huì)超過50人。以上功能的程序框架已經(jīng)形成,考生需要按照需求來逐個(gè)實(shí)現(xiàn)。(1)請?jiān)谧⑨尅?*******1********之后添加適當(dāng)?shù)恼Z句,以便實(shí)現(xiàn)功能需求(1)。(2)請?jiān)谧⑨尅?*******2********處添加適當(dāng)?shù)恼Z句,成績單排序功能。(3)請?jiān)谧⑨尅?*******3********處實(shí)現(xiàn)查找成績最高學(xué)生名單。無需修改main()主函數(shù),當(dāng)?shù)玫较旅娴慕Y(jié)果,該系統(tǒng)可能被采用。輸入的學(xué)生信息:姓名學(xué)號成績周華000178.5李強(qiáng)000298劉000389賀蘭000478周000576.5趙邦000685高俊000798排序后的學(xué)生信息:姓名學(xué)號成績李強(qiáng)000298高俊000798劉星000389趙邦000685周華000178.5賀蘭000478周紅000576.5查詢成績最高的學(xué)生信息:高俊000798李強(qiáng)000298注意:除在指定位置添加語句之外,請不要改動(dòng)程序中的其他內(nèi)容。#include#include#include#defineNMAX50classTeacher;C1assStudent{public:Student(char*name=II未知“,char*number=”00000”,doublemark=0.0){intlen=strlen(name);m—name=newchar[1en+1];strcpy(m_name,name);strcpy(m_number,number);m_mark=mark;}一Student(){delete[]m—name;)voidDisplayMsg(){cout<>name;in>>number;in>>mark;m~count++;mpStu[i]=newStudent(name,number,mark);cout<m—mark>m_pStu[index]一>m_mark)index=j;}∥********2********if(){Student*ps=m_pStu[i];m_pStu[i]=m_pStu[index];m_pStu[index]=ps?}}}voidTeacher::Display(){cout<<”姓名\t<<”學(xué)號\t”<<“成績\t”<DisplayMsg();}}intTeacher::BestScore(Student*pS[]){intindex=0:intcount=1;∥********3********for(intj=1;jm—mark>m_pStu[index]一>m—mark){count=1;index=j;pS[count++]=m_pStu[index];}elseif(m_pStu[j]_>m—mark=m_pStu[index]一>m—mark){index=j;pS[count++]=m_pStu[index];}}returncount;}voidmain(){TeacherTeacher;Student*pStudent[NMAX];cout<<”輸入的學(xué)生信息:”<DisplayMsg();}}標(biāo)準(zhǔn)答案:(1)添加語句:friendclassTeacher;(2)將“if()”補(bǔ)充完整為:if(index!=j)(3)添加語句:pS[0]=m.-pstu[0];知識(shí)點(diǎn)解析:(1)學(xué)生的信息受到嚴(yán)密保護(hù)和限制,任課老師可以修改學(xué)生數(shù)據(jù),比如本科升到研究需要修改學(xué)號等信息,因此老師類(1’eacher")可以訪問學(xué)生類(Student),故老師類是學(xué)生類友元類,故第1個(gè)標(biāo)識(shí)下應(yīng)添加“friendclassTeacher;"。(2)SortScore()成員函數(shù)是實(shí)現(xiàn)按成績高低的排序,函數(shù)結(jié)構(gòu)是二重循環(huán),采用的是選擇法排序,每次在內(nèi)層循環(huán)中尋找成績最高的元素的下標(biāo),如果找到的最高成績的元素的下標(biāo)和現(xiàn)在的位置(外層循環(huán)變量i+l的值)不同則兩者交換,故第2個(gè)標(biāo)識(shí)下的判斷條件為“if(index!=x)”。(3)BestScore(Student*pS[])實(shí)現(xiàn)查找成績最高學(xué)生名單,即利用循環(huán)查找數(shù)組中的每個(gè)元素的成績值,先假設(shè)第一個(gè)元素的成績最高,然后再循環(huán)中逐個(gè)比較,如果有成績更高的,那么將更高的成績保存下來,搜索整個(gè)數(shù)組就能找到成績最高的學(xué)生,即第3標(biāo)識(shí)下應(yīng)添加“pS[0]=mpStu[0];”。國家二級C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程中包含一個(gè)源程序文件main.epp,其中有類Book(“書”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”下的語句行有錯(cuò)誤,請加以改正。改正后程序的輸出結(jié)果應(yīng)該是:書名:C++語句程序設(shè)計(jì)總頁數(shù):299已把“C++語言程序設(shè)計(jì)”翻到第50頁已把“cH語言程序設(shè)計(jì)”翻到第51頁已把“C++語言程序設(shè)計(jì)”翻到第52頁已把“C++語言程序設(shè)計(jì)”翻到第51頁已把書合上。當(dāng)前頁:0注意:只修改每個(gè)“//ERROR*****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。1#include2usingnamespacestd;3clasSBook{4char*title;5intnumpages;//頁數(shù)6intcurpage;//當(dāng)前打開頁面的頁碼,0表示書未打開7public:8//ERROR**********found**********9Book(constchar*theTitle,intpa-ges)num_pages(pageS)10{11title=newchar[strlen(theTi-tle)+1];12strcpy(title,theTitle);13cout<num_pa-ges){25cout<<"無法翻到第"<標(biāo)準(zhǔn)答案:(1)Book(constchar*theTitle,intpages):Hum_pages(pages)(2)voidopenAtPage(intpage_no){//把書翻到指定頁(3)cur_page=0;知識(shí)點(diǎn)解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,構(gòu)造函數(shù)的成員列表初始化法要注意它的格式,即成員列表前要有標(biāo)識(shí)符“:”,因此語句改為:Book(eonstchar*theTitle,intpages):nun_pages(pages)。(2)主要考查考生對const函數(shù)的掌握,在函數(shù)體中可以看到有語句cur_page=page_no,即cur_page的值發(fā)生改變,因此該函數(shù)不是const函數(shù)。(3)主要考查考生對成員函數(shù)的掌握,題目要求輸出的最后一條是“當(dāng)前頁:0”,可知主函數(shù)中調(diào)用close函數(shù)后當(dāng)前頁為0,因此應(yīng)該是cur_page=0;。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,其中定義了Employee類和Manager類。Em-ployee用于表示某公司的雇員,其屬性包括姓名(name)和工作部分(dept)。Manager是Employee的公有派生類,用于表示雇員中的經(jīng)理。除了姓名和丁作部分之外,Manager的屬性還包括級別(1evel)。Employee類的成員函數(shù)print用于輸出雇員的信息;Manager類的成員函數(shù)print負(fù)責(zé)輸出經(jīng)理的信息。請?jiān)跈M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:Name:SallySmithDept:SalesLevel:2注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。1#include2#include3usingnamespacestd;4classEmployee{5public:6Employee(stringname,stringdept):7//**********found**********8________9{}10virtualvoidprint()const;11stringdept()const//返回部門名稱12{13//**********found**********14_______15}16virtual~Employee(){)17private:18stringname;19stringdept;20};21classManager:publicEmployee{22public:23Manager(stringname,stringdept,intlevel):24//**********found**********25______26{}27virtualvoidprint()const;28private:29intlevel;30};31voidEmployee::print()const32{33cout<<"Name:"<print();46deleteemp;47return0;48}標(biāo)準(zhǔn)答案:(1)name_(name),dept_(dept)(2)returndept_;(3)Employee(name,dept),leVel_(1eVel)(4)Employee::print();知識(shí)點(diǎn)解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,這里使用成員列表初始化法對私有成員初始化。(2)主要考查考生對成員函數(shù)的掌握,題目要求返回部門名稱,因此這里是一條返回語句。函數(shù)要求返回的類型為string,因此直接返回dept_即可。(3)主要考查考生對構(gòu)造函數(shù)的掌握,因?yàn)镸anager類是Employee類的派生類,因此它的構(gòu)造函數(shù)要先對基類初始化,應(yīng)使用成員列表初始化。(4)主要考查考生對虛函數(shù)的掌握,因?yàn)镸anager類是Employee類的派生類,因此它的print函數(shù)可以先調(diào)用基類的print函數(shù),再輸出自身要輸出的數(shù)據(jù),故為Employee::print();。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中包含了類IntegerSet和主函數(shù)main的定義。一個(gè)IntegerSet對象就是一個(gè)整數(shù)的集合,其中包含0個(gè)或多個(gè)無重復(fù)的整數(shù);為了便于進(jìn)行集合操作,這些整數(shù)按升序存放在成員數(shù)組elem的前若干單元中。成員函數(shù)add的作用是將一個(gè)元素添加到集合中(如果集合中不存在該元素),成員函數(shù)remove從集合中刪除指定的元素(如果集合中存在該元素)。請編寫成員函數(shù)remove。在main函數(shù)中給出了一組測試數(shù)據(jù),此時(shí)程序的正確輸出結(jié)果應(yīng)為:234527283166752345627283166752345619272831667534561927283166753456192728316675要求:補(bǔ)充編制的內(nèi)容寫在“//********333********”與“//********666********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)WriteToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。1//IntegorSet.h2#ifndef工NTEGERSET3#define工NTEGERSET4#include5usingnamespacestd;6constintMAXELEMENTS=100;7//集合最多可擁有的元素個(gè)數(shù)8classIntegerSet{9intelem[MAXELEMENTS];10//用于存放集合元素的數(shù)組1lintcounter://用于記錄集合中元素個(gè)數(shù)的計(jì)數(shù)器12public:13IntegerSet():counter(0){}14//創(chuàng)建一個(gè)空集合15IntegerSet(intdata[],intsize);16//利用數(shù)組提供的數(shù)據(jù)創(chuàng)建一個(gè)整數(shù)集合17voidadd(intelement);18//添加一個(gè)元素到集合中19voidremove(intelement);20//刪除集合中指定的元素21intgetCount()const{returncounter;}22//返回集合中元素的個(gè)數(shù)23intgetElement(inti)const{returnelem[i];}//返回集合中指定的元素24voidshow()const;25};26voidWriteToFile(char*);27#endif1//main.cpp2#include"IntegerSet.h"3#include4IntegerSet::IntegerSet(intdata[],intsize):counter(0){5for(inti=0;i0;j--)12if(element>=elem[j-1])break;13//如果找到的是等于element的元素,說明要添加的元素已經(jīng)存在,直接返回14if(j>0)15if(element==elem[j-1])return;16//如果找到的是小于element的元素,j就是要添加的位置17//該元素及其后面的元素依次后移,騰出插入位置18for(intk=counter;k>j;k--)19elem[k]=elem[k-1];20elem[j]=element;//將element插入到該位置21counter++;//計(jì)數(shù)器加122}23voidIntegerSet::remove(intele-ment){24//********333********252627//********666********28}29voidIntegerSet::show()const{30for(inti=0;i標(biāo)準(zhǔn)答案:1for(inti=0;i知識(shí)點(diǎn)解析:主要考查考生對有序數(shù)組的掌握,題目要求成員函數(shù)remove從集合中刪除指定的元素(如果集合中存在該元素)。遍歷數(shù)組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 足療教學(xué)培訓(xùn)課程設(shè)計(jì)
- 鍋爐課程設(shè)計(jì)目的
- 項(xiàng)目與施工課程設(shè)計(jì)
- 真空搬運(yùn)機(jī)課程設(shè)計(jì)
- 教育領(lǐng)域中家用紡織品環(huán)保理念的傳播方式
- 學(xué)生課外活動(dòng)時(shí)間規(guī)劃的實(shí)踐與反思
- 教學(xué)樓及教室的規(guī)范化管理與使用
- 2025年《正能量》心得體會(huì)(2篇)
- 2025年“三好一滿意”活動(dòng)第二階段總結(jié)模版(3篇)
- 煙花爆竹企業(yè)安全經(jīng)營規(guī)章制度修訂制度范文(2篇)
- 專題6.8 一次函數(shù)章末測試卷(拔尖卷)(學(xué)生版)八年級數(shù)學(xué)上冊舉一反三系列(蘇科版)
- GB/T 4167-2024砝碼
- 老年人視覺障礙護(hù)理
- 《腦梗塞的健康教育》課件
- 《請柬及邀請函》課件
- 遼寧省普通高中2024-2025學(xué)年高一上學(xué)期12月聯(lián)合考試語文試題(含答案)
- 《個(gè)體防護(hù)裝備安全管理規(guī)范AQ 6111-2023》知識(shí)培訓(xùn)
- 青海原子城的課程設(shè)計(jì)
- 2023年年北京市各區(qū)初三語文一模分類試題匯編 - 作文
- 常州大學(xué)《新媒體文案創(chuàng)作與傳播》2023-2024學(xué)年第一學(xué)期期末試卷
- 麻醉蘇醒期躁動(dòng)患者護(hù)理
評論
0/150
提交評論