國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷1(共45題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷1(共45題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷1(共45題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷1(共45題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷1(共45題)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷1(共9套)(共45題)國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷第1套一、簡(jiǎn)單應(yīng)用題(本題共5題,每題1.0分,共5分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件main.cpp,其中有類AutoMobile(“汽車”)及其派生類Car(“小轎車”)、Truck(“卡車”)的定義,還有主函數(shù)main的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:車牌號(hào):冀ABC1234品牌:ForLand類別:卡車當(dāng)前檔位:0最大載重量:12車牌號(hào):冀ABC1234品牌:ForLand類別:卡車當(dāng)前檔位:2最大載重量:12車牌號(hào):滬XYZ5678品牌:QQ類別:小轎車當(dāng)前檔位:0座位數(shù):5車牌號(hào):滬XYZ5678品牌:QQ類別:小轎車當(dāng)前檔位:一1座位數(shù):5注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include#include#includeusingnamespacestd;classAutoMobile{//“汽車”類char*brand;//汽車品牌char*number;/車牌號(hào)intspeed;//檔位:1、2、3、4、5,空檔:0,倒檔:一1public:AutoMobile(constchar*the_brand,constchar*the_number):speed(0){brand=newchar[strlen(thebrand)+1];//**********found***********______;//**********found***********_____;strcpy(number,the—number);}一AutoMobile(){delete[]brand;delete[]number;)constchar*theBrand()const{re-turnbrand;)//返回品牌名稱constchar*theNumber()const{returnnumber;)//返回車牌號(hào)intcurrentSpeed()const{returnspeed;)//返回當(dāng)前檔位voidchangeGearTo(intthe_speed){//換到指定檔位if(speed>=一1&&speed<=5)speed=the_speed;}virtualconstchar*category()const=0;//類別:卡車、小轎車等virtualvoidshow()const(cout<<”車牌號(hào):”<標(biāo)準(zhǔn)答案:(1)strcpy(brand,the—brand)(2)number=newchar[strlen(the—number)+1](3)theBrand()(4)const{return“卡車”;}知識(shí)點(diǎn)解析:本題考查的是AutoMobile類及其派生類Car類和Truck類,其中涉及動(dòng)態(tài)數(shù)組、構(gòu)造函數(shù)、strcpy()函數(shù)、析構(gòu)函數(shù)、純虛函數(shù)和虛函數(shù)。本題程序較多,基類較復(fù)雜,但細(xì)心看會(huì)發(fā)現(xiàn)程序很容易讀,考的知識(shí)點(diǎn)都很簡(jiǎn)單,和前后語句一對(duì)比就可以得到答案。【解題思路】(1)主要考查考生對(duì)strcpy函數(shù)的掌握情況,在上一條語句程序給brand指針分配了空間,在這里要復(fù)制字符串the—brand,即strcpy(brand,the—brand);。(2)主要考查考生對(duì)動(dòng)態(tài)分配的掌握情況,參考brand指針的復(fù)制過程完成該語句,先給指針number分配空間,通過new來完成:number=newchar[strlen(the—number)+1];。(3)主要考查考生對(duì)成員函數(shù)的掌握,由程序可知這里要輸出的是品牌,因此調(diào)用成員函數(shù)theBrand()來輸出品牌。(4)主要考查考生對(duì)純虛函數(shù)的掌握,根據(jù)純虛函數(shù)的定義:virtualconstchar*category()const=0;,可知在這里要填寫:const{return“卡車”;}。2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含程序文件main.cpp,其中有類Mammal(“哺乳動(dòng)物”)、類Elephant(“大象”)、類Mouse(“老鼠”)的定義和主函數(shù)main的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述定義。此程序的正確輸出結(jié)果應(yīng)為:ELEPHANTMOUSE注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#includeusingnamespacestd;enumcategory{EMPTY,ELEPHANT,MOUSE);char*output[]={“EMPTY”,”ELEPHANT“,”MOUSE”);clasSMammal{public:Mammal(char*str){//**********found**********name=new________strcpy(name,str);}virtualchar*WhoAmI()=0;virtual~Mammal(){delete[]name;}voidPrint(){cout<Print();deletepm,pm=newNouse(“Micky”);pm一>Print();deletepm;return0;}標(biāo)準(zhǔn)答案:(1)char[strlen(str)+1];(2)Mammal(str)(3)retumoutput[MO[ISE];(4)Elephant知識(shí)點(diǎn)解析:本題考查的是Mammal類及其派生類Elephant和Mouse,其中涉及動(dòng)態(tài)數(shù)組、純虛函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)。動(dòng)態(tài)數(shù)組往往伴隨著分配和釋放空間,使用new語句分配空間,使用delete語句釋放空間?!窘忸}思路】(1)主要考查分配空間,程序要給nalne分配空間,由下一條語句中strcpy(name,str)可知程序要把字符串str復(fù)制給name,因此要分配的空間大小為strlen(str)+1。(2)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,因?yàn)镋lephant類是Mammal類的派生類,所以其構(gòu)造函數(shù)要使用成員列表先對(duì)Mammal類初始化。(3)主要考查考生對(duì)枚舉類型的掌握,先看程序:enumcategory{EMPTY,ELEPHANT,MO[JSE}。再參考Elephant類中的WhoAmI函數(shù):char木W(wǎng)hoAmI(){retumoutput[EL廣EPHANT];}。可知這里要填寫的返回語句為:returnoutput[MOUSE];。(4)主要考查考生對(duì)派生類的掌握,題目要求輸出:ELEPHANTMOUSE可知,要先調(diào)用Elephant類的WhoAmI函數(shù),因此給指針pm分配Elephant類空間。3、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。該程序從鍵盤讀入整數(shù),并按從大到小的順序輸出輸入整數(shù)中互不相等的那些整數(shù)。程序一邊讀入整數(shù),一邊構(gòu)造一個(gè)以大到小順序鏈接的鏈表,直至輸入0時(shí)結(jié)束。然后順序輸出鏈表上各表元的整數(shù)值。主函數(shù)每讀入一個(gè)整數(shù),就調(diào)用函數(shù)fun(),函數(shù)fun()將還未出現(xiàn)在鏈表上的整數(shù)按從大到小的順序插入到鏈表中。為了插入方便,鏈表在表首有一個(gè)輔助表元。注意:不能修改程序的其他部分,只能修改如fun()函數(shù)。1#include<iostream>2classNODE3{4public:5intdata;6NODE*next;7};8voidfun(NODE*list,intx)9{1011}12voidmain()13{14intx;15NODE*head,*p;16/*首先建立只有輔助袁元的空鏈表*/17head=newNODE;18head->next=NULL;19std::cout<<’’Enterintegers,endwith0’’<<std::end1;20while(1)21{22std::cin>>x;23if(x==0)24break;25fun(head,x);26}27for(p=head->next;p!=NULL;p=p->next)28std::cout<<p->data<<’’;29std::cout<<std::end1;30do{31p=head->next;32deletehead;33head=p;34}while(p);35}標(biāo)準(zhǔn)答案:1NODE*u,*v,*p;2u=list;3v=u->next;4while(v!=NULL&&x<v->data)//尋找插入的位置5{6u=v;v=v->next;7}8if(v==NULL||x>v->data)//判斷是否為新的元素9{10p=newNODE;11p->data=x;//生成新的元素12p->next=v;13u->next=p;//插入新的元素14}知識(shí)點(diǎn)解析:(1)該程序功能是構(gòu)造一個(gè)以大到小順序鏈接的鏈表。它的解題思路,首先尋找插入的位置,然后判斷是否為新元素,最后插入。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)voidfun(NODE*list,intx)中的list參數(shù)為單鏈表,x為要插入的數(shù)據(jù)。(3)首先利用while循環(huán)尋找插入元素的位置。(4)然后判斷要插入的元素是否為新元素。。(5)如果為新元素,那么執(zhí)行單鏈表的操作,插入元素。4、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(char*s,inta[]),其功能是把s中出現(xiàn)的數(shù)字轉(zhuǎn)換成數(shù)字存儲(chǔ)在a[]中,然后返回轉(zhuǎn)換的個(gè)數(shù)。例如:s="1234abcdef567";則:a[]中存儲(chǔ)著1234567返回:7注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#includeintfun(char*s,inta[]){}intmain(){inta[1024];intlen=fun("1234abcdef567",a);for(inti=0;i標(biāo)準(zhǔn)答案:intj=0;for(inti=0;s[i]!=0;i++)//字符串內(nèi)循環(huán){if(s[i]>=’0’&&s[i]<=’9’)//判斷字符是否為0~9的字符{a[j++]=s[i]-’0’;//如果為0~9的字符,轉(zhuǎn)換為整型}}returnj;//返回?cái)?shù)字個(gè)數(shù)知識(shí)點(diǎn)解析:(1)i變量用來記錄轉(zhuǎn)換的個(gè)數(shù),首先初始化為0。(2)然后利用for循環(huán)對(duì)每一個(gè)當(dāng)前字符進(jìn)行判斷是否為數(shù)字字符。(3)如果為數(shù)字字符,就將其減去字符‘0’,即實(shí)現(xiàn)字符和整型的轉(zhuǎn)換。并且,將i的變量值加1。5、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補(bǔ)充空出的代碼。函數(shù)convert(char*des,char*str,charc,char*str2)的功能是:如果str中包含字符“!”,則替換成’a’;如果str中包含字符“&”,則替換成’b’;如果str中包含字符“*”,則替換成str2。并用函數(shù)返回目標(biāo)轉(zhuǎn)換后的指針。注意:只能補(bǔ)充函數(shù)convert(char*des,char*str,char*str2)。#include#include#defineMAXLEN1024voidconvert(char*des,char*str,char*str2){}voidmain(){chardest[MAXLEN];char*str=”!&cefghi*!&";char*str2="jklm";convert(dest,str,str2);cout<標(biāo)準(zhǔn)答案:des[0]=0;chartemp[2]={0,0};for(inti=0;str[i]!=NULL;i++){if(str[i]==’!’){temp[0]=’a’;//替換成’a’strcat(des,temp);}elseif(str[i]==’&’){temp[0]=’b’;strcat(des,temp);//替換成’b’}elseif(str[i]:=’*’){strcat(des,str2);//替換成str2)else{temp[0]=str[i];strcat(des,temp);//其他情況則添加在后面}}知識(shí)點(diǎn)解析:(1)由審題分析可知,利用循環(huán)中不斷檢索str字符串每一個(gè)字符,循環(huán)變量i從0開始,直到到了str字符結(jié)束,即srt[i]=NULL為循環(huán)判斷結(jié)束條件。(2)在循環(huán)體內(nèi),用ifelse語句判斷是不是“!”、“&”或“*”這些特定的字符,如果是這些特定的字符則進(jìn)行相應(yīng)的替換,如果不是則將該字符直接加在des后面。(3)字符串的連接可以使用字符串連接函數(shù)strcat(),將新字符連接在des后面,即strcat(des,temp)。國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷第2套一、簡(jiǎn)單應(yīng)用題(本題共5題,每題1.0分,共5分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中含有一個(gè)源程序文件proj2.epp,請(qǐng)將堆棧類的定義補(bǔ)充完整。使程序的輸出結(jié)果為:Theelementofstackare:4321注意:請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,只在橫線處編寫適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#include<ioStream>USingnamespacestd;constintSize=5;classStack;ClassItem{public://********found********Item(constint&val):_______{}//構(gòu)造函數(shù)對(duì)item進(jìn)行初始化private:intitem;Item*next;friendclasSStack;};classStack{public:Stack():top(NULL){}~Stack();intPop();voidPush(constint&);private:Item*top;};Stack∷~Stack(){Item*P=top,*q;while(P!=NULL){q=P->next;//********found********_______;//釋放P所指向的節(jié)點(diǎn)p=q;}}intStack∷Pop(){Item*temp;intret;//********found********_______;//使temp指向棧頂節(jié)點(diǎn)ret=top->item;top:top->next;deletetemp;returnret;}voidStack∷Push(constint&val){Item*temp=newItem(val);//********found********_______;//使新節(jié)點(diǎn)的next指針指向棧頂數(shù)據(jù)top=temp;}intmain(){Stacks;for(inti=1;i<Size;i++)s.Push(i);cout<<"Theelementofstackare:";for(i=1;i<Size;i++)cout<<s.Pop()<<’t’;return0;}標(biāo)準(zhǔn)答案:(1)item(val)(2)delete[]p(3)temp=top(4)temp->next=top知識(shí)點(diǎn)解析:(1)主要考查構(gòu)造函數(shù),對(duì)私有成員進(jìn)行初始化,即item(val)。(2)主要考查使用delete語句釋放指針,一般格式為:delete[]+指針。(3)指向棧頂節(jié)點(diǎn)的是top指針,要使temp指向棧頂節(jié)點(diǎn),故使用語句temp=top;。(4)指向棧頂節(jié)點(diǎn)的是top指針,要使新節(jié)點(diǎn)的next指針指向棧頂數(shù)據(jù),故使用語句temp->next=top:o2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請(qǐng)完成函數(shù)fun(intn),求出n×n矩陣的對(duì)角線數(shù)字的平方和。如果n為奇數(shù),則對(duì)角線交叉部位數(shù)字只參與一次計(jì)算。注意:請(qǐng)勿改動(dòng)主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。1#include<iostream.h>2#defineMAXN103intXX[MAXN][MAXN];4intfun(intn)5{67}8voidmain()9{10intn;11do12{13cout<<’’pleaseinputN(1<=N<10):’’<<end1;14cin>>n;15if(n<10&&n>=1)16{17break;18}19}while(1);20for(inti=0;i<n;i++)21{22for(intj=0;j<n;j++)23{24cout<<’’pleaseinputdata:’’<<end1;25cin>>XX[i][j];26}27}28cout<<fun(n)<<end1;29return;30}標(biāo)準(zhǔn)答案:1intdata=0;//初始化求平方和變量3for(inti=0;i<n;i++)3{4data+=XX[i][i]*XX[i][i];//求正對(duì)角線平方和5if(i!=n-i-1)6data+=XX[i][n-i-1]*XX[i][n-i-1];//求逆對(duì)角線平方和7}8returndata;知識(shí)點(diǎn)解析:本題函數(shù)中的功能是輸出N行N列正方陣,然后求兩條對(duì)角線上各元素之平方和。其中,假設(shè)矩陣行、列分別為i、i,那么對(duì)角線上的元素特點(diǎn)是主對(duì)角線上i=j,以及逆對(duì)角線j=n-i-1。(1)首先初始化求平方和變量,設(shè)置求平方和的變量為0。(2)然后利用for循環(huán)求得矩陣正對(duì)角線平方和。(3)最后求得逆對(duì)角線平方和,返回平方和變量。3、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。該程序從鍵盤讀入整數(shù),并按從大到小的順序輸出輸入整數(shù)中互不相等的那些整數(shù)。程序一邊讀入整數(shù),一邊構(gòu)造一個(gè)以大到小順序鏈接的鏈表,直至輸入0時(shí)結(jié)束。然后順序輸出鏈表上各表元的整數(shù)值。主函數(shù)每讀入一個(gè)整數(shù),就調(diào)用函數(shù)fun(),函數(shù)fun()將還未出現(xiàn)在鏈表上的整數(shù)按從大到小的順序插入到鏈表中。為了插入方便,鏈表在表首有一個(gè)輔助表元。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#include<iostream>classNODE{public:intdata;NODE*next;};voidfun(NODE*list,intx){}voidmain(){int.x;NODE*head,*p;/*首先建立只有輔助袁元的空鏈表*/head=newNODE;head->next=NULL;std::cout<<"Enterintegers,endwith0"<<std::endl;while(1){std::cin>>x;if(x==0)break;fun(head,x),}for(p=head->next;p!=NULL;p=p->next;std::cout<<p->data<<’’;std::cout<<Std::endl;do{p=head->next;deletehead;head=p;)while(p);}標(biāo)準(zhǔn)答案:NODE*u,*v,*p;u=list;v=u->next;while(v!=NULL&&x<v->data)//尋找插入的位置{u=v;v=v->next;}if(v==NULL||x>v->data)//判斷是否為新的元素{p=newNODE;P->data=x;//生成新的元素p->next=v;u->next=p;//插入新的元素}知識(shí)點(diǎn)解析:(1)首先利用while循環(huán)尋找插入元素的位置。(2)然后判斷要插入的元素是否為新元素。(3)如果為新元素,那么執(zhí)行單鏈表的操作,插入元素。4、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)sum(intA[NUM][NUM],intn)實(shí)現(xiàn)的功能是計(jì)算矩陣中所有非質(zhì)數(shù)數(shù)字的和。提示:函數(shù)isPrime(intn)的功能是判定當(dāng)前數(shù)字是否為質(zhì)數(shù),如果是則返回true。注意:不能修改程序的其他部分,只能修改sum()函數(shù)。1#include<iostream.h>2#include<cmath>3#defineNUM504intA[NUM][NUM]=5{6{10,13,59,70,6},7{2,40,89,92,9},8{14,55,71,11,19},9{79,68,83,97,101},10{102,10001,23,45}11};12boolisPrime(intn)13{14if(n==1)15returnfalse;16if(n==2)17returntrue;18for(inti=2;i<n/2;i++)19{20if(n%i==0)21returnfalse;22}23returntrue;24}25intsum(intA[NUM][NUM],intn)26{2728}29intmain()30{31cout<<sum(A,5)<<end1;32return0;33}標(biāo)準(zhǔn)答案:1intre=0;2for(inti=0;i<n;i++)3{4for(intj=0;j<n;j++)5{6if(!isPrime(A[i][j]))//判斷是否是素?cái)?shù),不是素?cái)?shù)則累加7{8re=re+A[i][j];9}10}11}12returnre;知識(shí)點(diǎn)解析:函數(shù)sum(intA[NUM][NUM],intn)的功能是實(shí)現(xiàn)計(jì)算矩陣A[NUM][NUM]中所有非質(zhì)數(shù)數(shù)字的和,在計(jì)算累加和之前需先判斷該數(shù)是否是質(zhì)數(shù),不是質(zhì)數(shù)則累加起來,可用循環(huán)來實(shí)現(xiàn)累加求和。(1)矩陣A[NUM][NUM]是2維矩陣,sum函數(shù)的參數(shù)n給出了矩陣A的具體維數(shù),因此矩陣A中共含有n×11個(gè)有效數(shù)。(2)A[NUM][NUM]中元素可表示為A[i][j],其中i表示元素所在行數(shù),j表示元素所在的列數(shù),i、j分別從0到n-1范圍內(nèi)變化,因此設(shè)置內(nèi)外兩層循環(huán)可逐個(gè)遍歷整個(gè)矩陣尋找非質(zhì)數(shù)。(3)函數(shù)isprime提供了判斷質(zhì)數(shù)的方法,對(duì)每個(gè)元素A[i][j],調(diào)用函數(shù)isprime(A[i][j]),判斷函數(shù)的返回值是否為假,如果為假說明不是質(zhì)數(shù),應(yīng)該累加起來。5、使用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的長(zhǎng)度,即為4。a[]={2,4,5,7,11,13},n是數(shù)組a的長(zhǎng)度,即為6。則執(zhí)行的結(jié)果為:s[]={1,2,3,4,5,6,7,11,13}補(bǔ)充函數(shù)fun(ints[],inte[],inta[],intm,intn),使之實(shí)現(xiàn)上述要求。注意:請(qǐng)勿改動(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長(zhǎng)度可能不一定相同,因此在循環(huán)結(jié)束之后,還需要把長(zhǎng)度長(zhǎng)的數(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)。國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷第3套一、簡(jiǎn)單應(yīng)用題(本題共5題,每題1.0分,共5分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,此工程中聲明的Array是一個(gè)表示數(shù)組的類。一個(gè)Array對(duì)象可以包含多個(gè)整型元素。Array的成員說明如下:成員函數(shù)add用于向數(shù)組的末尾添加一個(gè)元素;成員函數(shù)get用于獲取數(shù)組中指定位置的元素;數(shù)據(jù)成員a表示實(shí)際用于存儲(chǔ)數(shù)據(jù)的整型數(shù)組;數(shù)據(jù)成員size表示數(shù)組的容量,數(shù)組中的元素個(gè)數(shù)最多不能超過size;數(shù)據(jù)成員num表示當(dāng)前數(shù)組中的元素個(gè)數(shù)。$ortedArray是Array的派生類,表示有序數(shù)組。SortedArray重新定義了Array中的add函數(shù),以確保有序數(shù)組中的元素始終按照升序排列。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a,然后刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:10,9,8,7,6,5,4,3,2,1,l,2,3,4,5,6,7,8,9,10,注意:只在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#includeusingnamespacestd;classArray{public:Array(unsignedintS){size=S;num=0;a=newint[s];}virtual—Array(){delete[]a;)virtualvoidadd(inte){if(num=size)return;inti=0,j;while(ii;j—){//**********found**********——;:}//**********found**********——:break;}i++;}if(i=num)a[i]=e;num++;}};voidfun(Array&a){inti;for(i=10;i>=1;i—一){a.a(chǎn)dd(i);}for(i=0;i<10;i++){cout<標(biāo)準(zhǔn)答案:(1)a[num]=e;(2)Array(s)(3)a[j]=a[j—1](4)a[i]=e知識(shí)點(diǎn)解析:本題考查數(shù)組類Array及Array的派生類SortedArray,其知識(shí)點(diǎn)涉及構(gòu)造函數(shù)、析構(gòu)函數(shù)、虛函數(shù)和動(dòng)態(tài)數(shù)組。一般考到函數(shù)時(shí),首先要看函數(shù)名,通過函數(shù)名稱能大概知道該函數(shù)的功能,比如Array類中的virtualvoidadd(inte)函數(shù),看到這個(gè)函數(shù)我們能得到如下信息。(1)有關(guān)鍵字virtual,說明該函數(shù)是虛函數(shù),在Array類的派生類里肯定會(huì)有對(duì)add函數(shù)的定義。(2)有關(guān)鍵字void,說明此函數(shù)沒有返回值。(3)add的意思是添加,它的形參是inte,那么我們大概可以猜到該函數(shù)的功能是把整型數(shù)值e添加到數(shù)組a中?!窘忸}思路】(1)考查的是虛函數(shù)virtualvoidadd(inte)的定義,即添加一個(gè)整型數(shù)e到a[num]中。(2)主要考查的是Array類的派生類Sorted.Array類的構(gòu)造函數(shù)的定義,定義之前要對(duì)基礎(chǔ)類初始化。(3)因?yàn)镾ortedArray類是排序類,所以數(shù)組a中的元素要從小到大排序。在if(e2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。該工程中包含一個(gè)程序文件main.cpp,其中有類Quadritic、類Root及主函數(shù)main的定義。一個(gè)Quadritic對(duì)象表示一個(gè)aχ2+bχ+c的一元二次多項(xiàng)式。一個(gè)Root對(duì)象用于表示方程aχ2+bχ+c=0的一組根,它的數(shù)據(jù)成員hum_of_roots有3種可能的值,即0、1和2,分別表示根的3種情況:無實(shí)根、有兩個(gè)相同的實(shí)根和有兩個(gè)不同的實(shí)根。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為(注:輸出中的X^表示χ2):3X^2+4X+5=0.0無實(shí)根4.5X^2+6X+2=0.0有兩個(gè)相同的實(shí)根:-0.666667和-0.6666671.5X^2+2X-3=0.0有兩個(gè)不同的實(shí)根:0.896805和-2.23014注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“****found****”。#1nclude<lostream>#include<iomanip>#include<cmath>usingnamespacestd;classRoot{//一元二次方程的根public:constdoublex1;//第一個(gè)根constdoublex2;//第二個(gè)根constintnum_of_roots;//不同根的數(shù)量:0、1或2//創(chuàng)建一個(gè)“無實(shí)根”的Root對(duì)象Root():x1(0.0),x2(0.0),num_of_roots(0){}//創(chuàng)建一個(gè)“有兩個(gè)相同的實(shí)根”的Root對(duì)象Root(doubleroot)//**********found**********:_______{}//創(chuàng)建一個(gè)“有兩個(gè)不同的實(shí)根”的Root對(duì)象Root(doubleroot1,doubleroot2):x1(root1),x2(root2),numofroots(2){)voidshow()const{//顯示根的信息cout<<"\t\t";switch(num_of_roots){case0://**********found**********case1:cout<<"有兩個(gè)相同的實(shí)根:"<<x1<<"和"<<x2;break;default:cout<<"有兩個(gè)不同的實(shí)根:"<<x1<<"和"<<x2;break;}}};classQuadratic{//二次多項(xiàng)式public:constdoublea,b,c;//分別表示二次項(xiàng)、一次項(xiàng)和常數(shù)項(xiàng)等3個(gè)系數(shù)Quadratic(doublea,doubleb,doublec)//構(gòu)造函數(shù)//**********found**********:_______{}Quadratic(Quadratic&x)//復(fù)制構(gòu)造函數(shù):a(x.a(chǎn)),b(x.b),c(x.c){}Quadraticadd(Quadraticx)const{//求兩個(gè)多項(xiàng)式的和returnQuadratic(a+x.a(chǎn),b+x.b,c+x.c);}Quadraticsub(Quadraticx)const{//求兩個(gè)多項(xiàng)式的差//**********found**********}doublevalue(doubleX)const{//求二次多項(xiàng)式的值returna*x*x+b*x+c;}Rootroot()const{//求一元二次方程的根doubledelta=b*b-4*a*c;//計(jì)算判別式if(delta<0.0)returnRoot();if(delta==0.0)returnRoot(-b/(2*a));doublesq=sqrt(delta);returnRoot((-b+sq)/(2*a),(-b-sq)/(2*a));}voidshow()const{//顯示多項(xiàng)式cout<<end1<<a<<"X^2"<<showpos<<b<<"X"<<C<<noshowpos;}voidshowFunction(){//顯示一元二次方程show();cout<<"=0.0";}};intmain(){Quadraticq1(3.0,4.0,5.0),q2(4.5,6.0,2.0),q3(q2.sub(q1));q1.showFunction();q1.root().show();q2.showFunction();q2.root().show();q3.showFunction();q3.root().show();cout<<end1;return0;}標(biāo)準(zhǔn)答案:(1)x1(root),x2(root),Bum_of_roots(1)(2)cout<<"無實(shí)根";break;(3)a(a),b(b),c(c)(4)returnQuadratic(a-X.a(chǎn),b-x.b,c-x.c);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,題目要求創(chuàng)建一個(gè)“有兩個(gè)相同的實(shí)根”的Root對(duì)象。說明兩個(gè)根x1和)x2相等,根的數(shù)量為1,因此可以得出語句:xl(root),x2(root),num_of_roots(1){}。(2)主要考查考生對(duì)switch語句的掌握,在語句switch(num_of_roots){中,num_of_roots代表根的數(shù)量,當(dāng)為0時(shí),表示沒有根,因此輸出無實(shí)根,注意要在句尾加break。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,本題使用成員初始化列表來構(gòu)造函數(shù)。(4)主要考查考生對(duì)成員函數(shù)的掌握,題目要求求兩個(gè)多項(xiàng)式的差。兩個(gè)多項(xiàng)式的差就是各個(gè)次方的系數(shù)相減,因此得出語句:returnQuadratic(a-x.a(chǎn).b-x.b,c-x.e);。3、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)fun(char*s,char*s1,char*s2)中形參字符串s1和s2有相同的字符個(gè)數(shù),且s1中各字符互不相同。該函數(shù)實(shí)現(xiàn)將己知字符串s中所有在字符串s1中也存在的字符,都用字符串s2中的對(duì)應(yīng)位置的字符代替。例如:設(shè)字符串s、s1和s2分別為:s[]="ABCABC",s1[]="AC",s2[]="ZX"則s2中的字符Z和X分別對(duì)應(yīng)s1中的字符C和A,函數(shù)調(diào)用fun(s,s1,s2)將字符串s的內(nèi)容變?yōu)?ZBXZBX"。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#include<iostream>voidfun(char*s,char*s1,char*s2){}voidmain(){chars[]="ABCABC";fun(s,"AC","ZX");std::cout<<s<<std::endl;return;}標(biāo)準(zhǔn)答案:char*p,*q;for(;*s;s++)//在串s中找符合條件的字符,然后替換{for(p=s1,q=s2;*p;p++,q++)//讓指針p,q分別指向s1和s2{if(*p==*s)//如果S中存在s1中p指向的字符{*s=*q;//那么用q指向的s2中的字符替換}}}知識(shí)點(diǎn)解析:(1)讓指針p,q分別指向s1和s2。(2)然后利用for循環(huán)對(duì)S中的每一個(gè)當(dāng)前字符與P指向的字符進(jìn)行比較。(3)如果(2)中的比較結(jié)果相等,那么用q指向s2中對(duì)應(yīng)的字符替換。4、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)sum(intA[NUM][NUM],intn)實(shí)現(xiàn)的功能是計(jì)算矩陣中所有非質(zhì)數(shù)數(shù)字的和。提示:函數(shù)isPrime(intn)的功能是判定當(dāng)前數(shù)字是否為質(zhì)數(shù),如果是則返回true。注意:不能修改程序的其他部分,只能修改sum()函數(shù)。1#include<iostream.h>2#include<cmath>3#defineNUM504intA[NUM][NUM]=5{6{10,13,59,70,6},7{2,40,89,92,9},8{14,55,71,11,19},9{79,68,83,97,101},10{102,10001,23,45}11};12boolisPrime(intn)13{14if(n==1)15returnfalse;16if(n==2)17returntrue;18for(inti=2;i<n/2;i++)19{20if(n%i==0)21returnfalse;22}23returntrue;24}25intsum(intA[NUM][NUM],intn)26{2728}29intmain()30{31cout<<sum(A,5)<<end1;32return0;33}標(biāo)準(zhǔn)答案:1intre=0;2for(inti=0;i<n;i++)3{4for(intj=0;j<n;j++)5{6if(!isPrime(A[i][j]))//判斷是否是素?cái)?shù),不是素?cái)?shù)則累加7{8re=re+A[i][j];9}10}11}12returnre;知識(shí)點(diǎn)解析:函數(shù)sum(intA[NUM][NUM],intn)的功能是實(shí)現(xiàn)計(jì)算矩陣A[NUM][NUM]中所有非質(zhì)數(shù)數(shù)字的和,在計(jì)算累加和之前需先判斷該數(shù)是否是質(zhì)數(shù),不是質(zhì)數(shù)則累加起來,可用循環(huán)來實(shí)現(xiàn)累加求和。(1)矩陣A[NUM][NUM]是2維矩陣,sum函數(shù)的參數(shù)n給出了矩陣A的具體維數(shù),因此矩陣A中共含有n×11個(gè)有效數(shù)。(2)A[NUM][NUM]中元素可表示為A[i][j],其中i表示元素所在行數(shù),j表示元素所在的列數(shù),i、j分別從0到n-1范圍內(nèi)變化,因此設(shè)置內(nèi)外兩層循環(huán)可逐個(gè)遍歷整個(gè)矩陣尋找非質(zhì)數(shù)。(3)函數(shù)isprime提供了判斷質(zhì)數(shù)的方法,對(duì)每個(gè)元素A[i][j],調(diào)用函數(shù)isprime(A[i][j]),判斷函數(shù)的返回值是否為假,如果為假說明不是質(zhì)數(shù),應(yīng)該累加起來。5、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補(bǔ)充空出的代碼。函數(shù)convert(char*des,char*str,charc,char*str2)的功能是:如果str中包含字符“!”,則替換成’a’;如果str中包含字符“&”,則替換成’b’;如果str中包含字符“*”,則替換成str2。并用函數(shù)返回目標(biāo)轉(zhuǎn)換后的指針。注意:只能補(bǔ)充函數(shù)convert(char*des*char*str,char*str2).#include<iostream.h>#include<cstring>#defineMAXLEN1024voidconvert(char*des,char*Str,char*str2){}voidmain(){chardest[MAXLEN];char*str="!&cefghi*!&";char*str2="jklm";convert(dest,str,str2);cout<<dest<<endl;return;}標(biāo)準(zhǔn)答案:des[0]=0;chartemp[2]={0,0};for(inti=0;str[i]!=NULL;i++){if(str[i]==’!’){temp[0]=’a’;//替換成’a’strcat(des,temp);}elseif(str[i]==’&’){temp[0]=’b’;strcat(des,temp);//替換成’b’}elseif(str[i]==’*’){strcat(des,str2);//替換成str2}else{temp[0]=str[i];strcat(des,temp);//其他情況則添加在后面}}知識(shí)點(diǎn)解析:(1)由審題分析可知,利用循環(huán)中不斷檢索str字符串每一個(gè)字符,循環(huán)變量i從0開始,直到到了str字符結(jié)束,即srt[i]==NULL為循環(huán)判斷結(jié)束條件。(2)在循環(huán)體內(nèi),用ifelse語句判斷是不是“!”、“&”或“*”這些特定的字符,如果是這些特定的字符則進(jìn)行相應(yīng)的替換,如果不是則將該字符直接加在des后面。(3)字符串的連接可以使用字符串連接函數(shù)strcat(),將新字符連接在des后面,即strcat(des.temp)。國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷第4套一、簡(jiǎn)單應(yīng)用題(本題共5題,每題1.0分,共5分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中含有一個(gè)源程序文件proj2.cpp,其中定義了CharShape類、Tfian~e類和Rectangle類。CharShape是一個(gè)抽象基類,它表示由字符組成的圖形(簡(jiǎn)稱字符圖形),純虛函數(shù)Show用于顯示不同字符圖形的相同操作接口。TfanOe和Rectangle是CharShape的派生類,它們分別用于表示字符三角形和字符矩形,并且都定義了成員函數(shù)Show,用于實(shí)現(xiàn)各自的顯示操作。程序的正確輸出結(jié)果應(yīng)為:****************########################請(qǐng)閱讀程序,分析輸出結(jié)果,然后根據(jù)以下要求在橫線處填寫適當(dāng)?shù)拇a并刪除橫線。(1)將Triangle類的成員函數(shù)Show補(bǔ)充完整,使字符三角形的顯示符合輸出結(jié)果。(2)將Rectangle類的成員函數(shù)Show補(bǔ)充完整,使字符矩形的顯示符合輸出結(jié)果。(3)為類外函數(shù)fun添加合適的形參。注意:只在指定位置編寫適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。{/proj2.cpp#includeusingnamespacestd;classCharShape{public:CharShape(charch):一ch(ch){};virtualvoidShow()=0;protected:charch;//組成圖形的字符};classTriangle:publicCharShape{public:Triangle(charch,intr):Char—Shape(ch),一rows(r){}voidShow();private:introws;//行數(shù)};classRectangle:publicCharShape{public:Rectangle(charch,intr,intC):CharShape(ch),_rows(r),一cols(c){}voidShow();private:introws,cols;//行數(shù)和列數(shù)};voidTriangle::Show()//輸出字符組成的三角形{for(inti=1;i<=rows;i++){//**********found**********for(intJ=1;J<=——;J++)cout<<ch;cout<標(biāo)準(zhǔn)答案:(1)i*2—1(2)一rows(3)一cols(4)CharShape&cs知識(shí)點(diǎn)解析:本題主要考查抽象類CharShape類及其派生類Triangle和Rectangle,其中涉及構(gòu)造函數(shù)、純虛函數(shù)、成員函數(shù)和函數(shù)調(diào)用。著重考查函數(shù)Show()在Triangle類與在Rectangle類中的定義,填空前應(yīng)先理解Show()函數(shù)在該類中的功能?!窘忸}思路】(1)考查for循環(huán)語句,該語句所在的函數(shù)的功能是輸出字符組成的三角形。從外層循環(huán)中可以看出下標(biāo)i代表行數(shù),那么下標(biāo)j就代表每一行字符的個(gè)數(shù),因?yàn)橐敵龅氖侨切危悦恳恍械膫€(gè)數(shù)與該行的行數(shù)相關(guān),即j<=i*2一1;。(2)考查for循環(huán)語句,該語句所在的函數(shù)的功能是輸出字符組成的矩形?;氐絉ectangle類中可以知道矩形的長(zhǎng)和寬就是類中私有成員的行數(shù)和列數(shù),因此在這里只要要求下標(biāo)i不大于行數(shù)即可。(3)考查for循環(huán)語句,該語句所在的函數(shù)的功能是輸出字符組成的矩形?;氐絉ectangle類中可以知道矩形的長(zhǎng)和寬就是類中私有成員的行數(shù)和列數(shù),因此在這里只要要求下標(biāo)j不大于列數(shù)即可。(4)主要考查考生對(duì)虛函數(shù)的掌握,該語句所在的函數(shù)是普通函數(shù)fun,題目要求為fun函數(shù)添加形參。從函數(shù)體中可以知道形參名為cs,那么形參的類型是什么呢?就是抽象類CharShape,因此要使用CharShape&cs才可以實(shí)現(xiàn)題目要求輸出的內(nèi)容?!窘忸}寶典】本題主要考查考生對(duì)for循環(huán)語句的掌握及虛函數(shù)的使用,for循環(huán)是最??嫉降闹R(shí)點(diǎn),要結(jié)合好上下文的語義來填寫,首先要清楚該語句所在函數(shù)要實(shí)現(xiàn)的功能,其次要知道該語句的作用。2、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,此工程中含有一個(gè)源程序文件proj2.epp。函數(shù)char水GetNum(char*src,char*buf)從src開始掃描下一個(gè)數(shù)字字符序列,并將其作為一個(gè)字符串取出放入字符串空間bur中。函數(shù)返回掃描的終止位置,如果返回NULL表示沒有掃描到數(shù)字字符序列。運(yùn)行程序時(shí),如果輸入的一行字符序列是ABC012XYZ378MN274WS則輸出為:Digitstring1is012Digitstring2is378Digitstring3is274注意:只在橫線處編寫適當(dāng)代碼,不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#include<iostream>usingnamespacestd;char*GetNum(char,*src,char*buf){while(*src!=’\0’){if(isdigit(*Src))break;src++;}if(*src=’\0’)//********found********_______;while(*src!=’\0’&&isdigit(*src)){//********found********________;buf++;Src++:}*buf=’\0’;returnsrc;}intmain(){charstr[100],digits[20];cin.getline(str,100);char*p=str;inti=1;while((P=GetNum(P,digits))!=NULL){cout<<"Digitstring"<<i<<"is"<<digits<<end1://********found********________;}return0;}標(biāo)準(zhǔn)答案:(1)retumNULL(2)*bur=*src(3)i++知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)if語句的掌握,由判斷條件if(*src==’\0’),說明字符串a(chǎn)re為空,則返回NULL即可。(2)主要考查考生對(duì)while循環(huán)語句的掌握,while語句的循環(huán)條件為*src!=’\0’&&isdigit(*src),該條件是指,若字符串src不為空并且*arc指向的字符為數(shù)字字符,則進(jìn)行循環(huán)。題目要求把數(shù)字字符放人字符串buf中,因此為水buf=*src。(3)主要考查考生對(duì)while循環(huán)語句的掌握,從上一行語句cout<<"Digitstring"<<"i<<"is"<<digits<<end1;中可以得出,題目要求輸出的i是遞增的,因此這里需添加語句i++。3、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,其中有整數(shù)棧類IntList順序棧類SeqList和鏈接棧類LinkList的定義。請(qǐng)?jiān)诔绦蛑械臋M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:4631846318注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)//“****found****”。#includeusingnamespacestd;classIntStack{//整數(shù)棧類public:virtualvoidpush(int)=0;//入棧virtualintpop()=0;//出棧并返回出棧元素virtualinttopElement()const=0,//返回棧頂元素,但不出棧virtualboolisEmpty()const=0;//判斷是否??諁;classSeqStack:publicIntStack{intdata[100];//存放棧元素的數(shù)組inttop;//棧頂元素的下標(biāo)public://**********found***********SeqStack():——{)//把top希始化為一1表示??誺oidpush(intn){data[++top]=n;)//*********found**********intpop(){return——;)inttopElement()const{returndat一[top];)boolisEmpty()const{returntop一一1;};structNode{intdata;Node*next,};classLinkStack:publicIntStack{Node*top;public://*********found**********LinkStack():——{)//把to]初始化為NULL表示棧空voidpush(intn){Node*P=newNode;P一>data=n;//*********found***********_______;top=P;}intpop(){intd=top一>data;;top=top一>next;returnd;}inttopElement()const{returnto]一>data;}boolisEmpty()const{returntop==NULL;}};voidpushData(IntStack&st){st.push(8);st.push(1);st.push(3);st.push(6);st.push(4);}voidpopData(IntStack&st){while(!st.isEmpty())cout<標(biāo)準(zhǔn)答案:(1)t叩(一1)(2)data[top一一](3)top(NULL)(4)p一>next=top知識(shí)點(diǎn)解析:本題考查的是IntStack類及其派生類SeqStack類和IJnk.Stack類,其中涉及純虛函數(shù)、數(shù)組、構(gòu)造函數(shù)和動(dòng)態(tài)數(shù)組。本題對(duì)棧的知識(shí)要求很高,棧的特點(diǎn)是先進(jìn)后出,后進(jìn)先出?!窘忸}思路】(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,先看語句注釋:把top初始化為一1表示???,即要把top賦值為一1即可。(2)主要考查考生對(duì)純虛函數(shù)的掌握情況,先看純虛函數(shù)在基類的注釋:出棧并返回出棧元素。要返回棧頂元素可以通過data[top]得到,出棧同時(shí)要使得top往下移動(dòng),即top一一。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,先看語句注釋:把top初始化為NULL表示???,因此使用成員列表初始化直接把top賦值為NULL即可。(4)主要考查考生對(duì)棧的掌握,push為入棧函數(shù),top指向棧頂元素,因此新添加的指針的next要指向top,即p一>next=top;。4、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類Base和Derived,以及主函數(shù)main。程序文本中位于每行“//****found****”下面的一行內(nèi)有一處或多處下畫線標(biāo)記,請(qǐng)?jiān)诿總€(gè)下畫線標(biāo)記處填寫合適的內(nèi)容,并刪除下畫線標(biāo)記。經(jīng)修改后運(yùn)行程序,得到的輸出應(yīng)為:sum=55。注意:只在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classBase{public:Base(intm1,int;m2){metal=m1;mem2=m2j}intsum(){returnmeta1+mera2;}private:intmeta1,merm2;//基類的數(shù)據(jù)成員};//派生類Derived從基類Base公有繼承//**********found**********ClassDerived:_________{public://構(gòu)造函數(shù)聲明Derived(intm1,int:m2,intm3);//sum函數(shù)定義,要求返回mem1、mem2和mere3之和//**********found**********int:sum(){return_______+mem3;}private:intmere3;//派生類本身的數(shù)據(jù)成員};//構(gòu)造函數(shù)的類外定義,要求由m1和m2分別初始化mem1和mem2,由m3初始化mem3//**********found**********_______Derived(intm1,intm2,intm3)://**********found**********_______,mem3(m3){}intmain(){Basea(4,6);Derivedb(10,15,20);intsum=a.sum()+b.sum();cout<<"sum="<<sum<<end1;return0;}標(biāo)準(zhǔn)答案:(1)publicBase(2)Base∷sum()(3)Derived∷(4)Base(m1,m2)知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)公有繼承的掌握情況,根據(jù)題目要求:派生類Derived從基類Base公有繼承,因此這里使用public來公有繼承。(2)主要考查考生對(duì)成員函數(shù)的掌握情況,根據(jù)題目對(duì)sum函數(shù)的要求:sum函數(shù)定義,要求返回mem1、mem2和mem3之和,因此這里直接調(diào)用基類的sum函數(shù),再加上mem3就滿足題目要求。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,由于Derived的構(gòu)造函數(shù)在類外定義,因此要加上類名和作用域符,即Derived∷。(4)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,因?yàn)镈erived是Base類的派生類,所以其構(gòu)造函數(shù)要使用成員列表初始化先給Base初始化。面加上基類名和作用域符,從而防止派生類中也有相同函數(shù)時(shí)產(chǎn)生的二義性。5、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼。函數(shù)num(char*str)實(shí)現(xiàn)返回字符串中非數(shù)字的個(gè)數(shù)。例如:abc123abc45返回輸出:6將函數(shù)num()補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)主函數(shù)。1#include<iostream.h>2intnum(char*str)3{45}6intmain()7{8charstr[1024];9cout<<’’pleaseinputastrfng:’’<<end1;10cin.getline(str,1024);11cout<<’’charnumberis’’<<num(str)<<end1;12return0;13}標(biāo)準(zhǔn)答案:1intnumber=0;2for(inti=0;str[i]!=0;i++)3if(str[i]>’9’||str[i]<’0’)//非數(shù)字字符4number++;5returnnumber;知識(shí)點(diǎn)解析:函數(shù)num(char*str)實(shí)現(xiàn)返回字符串中非數(shù)字的個(gè)數(shù),數(shù)字從0開始到9結(jié)束,共有10個(gè),因此判斷數(shù)組字符比較簡(jiǎn)單,即“’0’<=str[i]<=’9’”,除數(shù)字字符外其余的都是非數(shù)字字符,利用這個(gè)關(guān)系可迅速判斷該字符是否是非數(shù)字字符。(1)利用循環(huán)搜索數(shù)組str中的元素,循環(huán)變量從0開始,直到str[i]=0(到了字符數(shù)組的尾),不斷地讀取str中讀取元素。(2)每讀到一個(gè)元素判斷是否是非數(shù)字字符,即滿足條件“str[i]>’9’||str[i]<’0’的字符為非數(shù)字字符,非數(shù)字字符個(gè)數(shù)加1,循環(huán)結(jié)束就得到了非數(shù)字字符的個(gè)數(shù)。國(guó)家二級(jí)C++機(jī)試(簡(jiǎn)單應(yīng)用題)模擬試卷第5套一、簡(jiǎn)單應(yīng)用題(本題共5題,每題1.0分,共5分。)1、請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,此工程中含有一個(gè)源程序文件proj2.epp。函數(shù)char*GetNum(char’lc8rc,char*buf)從src開始掃描下一個(gè)數(shù)字字符序列,并將其作為一個(gè)字符串取出放人字符串空間buf中。函數(shù)返回掃描的終止位置,如果返回NULL表示沒有掃描到數(shù)字字符序列。運(yùn)行程序時(shí),如果輸入的一行字符序列是ABC012XYZ378MN274WS則輸出為:Diotstring1is012Digitstung2is378DiotstriIlg3is274注意:只在橫線處編寫適當(dāng)代碼,不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#includeusingnamespacestd;char*GetNum(char*src,char*bur){while(*SrC!=‘\0’){if(isdigit(*SrC))break;SrC++;}if(*SrC=‘\0’)//*********found*********_________;while(*src!=‘\0’&&isdigit(*SEC)){//*********found*********_____;:bur++;SrC++;}*bur=‘\0’;returnSrC;}intmain(){charstr[100],digits[20];cin.getline(str,100);char*p=str;inti=1;while((p=GetNurn(p,digits))!=NULL){cout<<“Digitstring”<標(biāo)準(zhǔn)答案:(1)returnNULL(2)*buf=*src(3)i++知識(shí)點(diǎn)解析:主要考查的是GetNum函數(shù)、while循環(huán)語句、if語句和字符數(shù)組。從該函數(shù)的聲明中,可以得到如下信息:該函數(shù)的返回值為字符指針,形參為兩個(gè)字符指針SYC和bufo該函數(shù)的功能是,函數(shù)從sre開始掃描下一個(gè)數(shù)字字符序列,并將其作為一個(gè)字符串取出放入字符串空間buf中?!窘忸}思路】(1)主要考查考生對(duì)if語句的掌握,由判斷條件if(*src==‘\0’),說明字符串SIC為空,則返回NULL即可。(2)主要考查考生對(duì)while循環(huán)語句的掌握,while語句的循環(huán)條件為/src!=’\0’&&isdigit(*src),該條件是指,若字符串sic不為空并且*src指向的字符為數(shù)字字符,則進(jìn)行循環(huán)。題目要求把數(shù)字字符放人字符串buf中,因此為*buf=*src。(3)主要考查考生對(duì)while循環(huán)語句的掌握,從上一行語句cout<<“Digitstring”<2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)sum(intA[NUM][NUM],intn)實(shí)現(xiàn)的功能是計(jì)算矩陣中所有非質(zhì)數(shù)數(shù)字的和。提示:函數(shù)isPrime(intn)的功能是判定當(dāng)前數(shù)字是否為質(zhì)數(shù),如果是則返回true。注意:不能修改程序的其他部分,只能修改sum()函數(shù)。#include<iostream.h>#include<cmath>#defineNUM50intA[NUM][NUM]={{10,13,59,70,6},{2,40,89,92,9},{14,55,71,11,19},(79,68,83,97,101},{102,10001,23,45}};booliSPrime(intn){if(n==1)returnfalse;if(n==2)returntrue;for(inti=2;i<n/2;i++){if(n%i==0)returnfalse;}returntrue;}intsum(intA[NUM][NUM],intn){}intmain(){cout<<sum(A,5)<<endl;return0;}標(biāo)準(zhǔn)答案:intre=0;for(inti=0;i<n;i++){for(intj=0;j<n;j++){if(!isPrime(A[i][j]))//判斷是否是素?cái)?shù),不是素?cái)?shù)則累加{re=re+A[i][j];}}}returnre;知識(shí)點(diǎn)解析:(1)矩陣A[NUM][NUM]是2維矩陣,sum函數(shù)的參數(shù)n給出了矩陣A的具體維數(shù),因此矩陣A中共含有n×n個(gè)有效數(shù)。(2)A[NUM][NUM]中元素可表示為A[i][j],其中i表示元素所在行數(shù),j表示元素所在的列數(shù),i、j分別從0到n-1范圍內(nèi)變化,因此設(shè)置內(nèi)外兩層循環(huán)可逐個(gè)遍歷整個(gè)矩陣尋找非質(zhì)數(shù)。(3)函數(shù)isprime提供了判斷質(zhì)數(shù)的方法,對(duì)每個(gè)元素A[i][j],調(diào)用函數(shù)isprime(A[i][j]),判斷函數(shù)的返回值是否為假,如果為假說明不是質(zhì)數(shù),應(yīng)該累加起來。3、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)sum(in

溫馨提示

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