




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(操作题)模拟试卷32(共9套)(共27题)国家二级C++机试(操作题)模拟试卷第1套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modi1.cpp,请修改程序中的错误,使程序能得出正确的结果:num:0num:1num:10注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******eror******的下面。#include<iostream.h>inti=10;classTestClasS{public:TestClasS(inti){cout<<"num:"<<i<<endl;//********error********i=i+1;}voidPrint()const(cout<<"num:"<<i<<endl;}private:inti;};voidmain(){//********error*******TestClassprint;inti(0);print.Print();//********error********cout<<"num:"<<i<<endl;return;}标准答案:(1)this->i=i+1;或TestClass::i=i+1:或(*this).i=i+1;(2)TestClassprint(0);(3)cout<<"num:"<<::i<<endl;知识点解析:(1)打开modi1,cpp,调试程序,显示错误提示为第二标识下“modi1.cpp(22):errorC2512:’TestClass’:noappropriatedefaultconstiuctoravailable”,主函数中首先调用的就是第2个标识下的TestClassprint函数,构造函数的名字和类的名字是一样的,而程序中给出的“TestClassprint;”没有给出参数,所以程序调试时无法确定调用的函数。根据TestClass构造函数“TestClass(inti)”的定义,应该存在int型参数,并且题目要求第一次输出的值为“0”,所以第2个标识正确的调用函数为“TestClassprint(0);”。(2)运行,发现第一次的输出正确,但是第二次的输出值为“-858993460”,并不是题目中要求的“1”。在主函数中,可知第二次输出调用的是“print.Print();”,即类TestClass的成员函数“Print()”。成员函数Print的定义“voidPrint()const”中的输出语句为“cout<<"num:"<<i<<endl;”,而第二次的输出值为“-858993460”说明“i”的赋值错误。第1个标识下的“i=i+1;”语句是获得num的值为“1”,因为“i”还存在着“inti=10;”的定义,这里应该是调用成员函数自身的值,而不是上面的“inti=10;”,所以修改为“this->i=i+1;”或“TestClass::i=i+1;”或“(*this).i=i+1;”。(3)主函数中通过“cout<<"num:"<<i<<endl:”语句实现第三次输出,第三次的输出值为“0”,并不是题目中要求的“10”。程序中存在“inti=10;”定义,这里应该是调用“inti=10;”中的“i”值。通过域定义符引用这个“i”,所以修改为“cout<<"num:"<<::i<<endl:”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s1,char*s2),此函数的功能是计算s1中出现s2的个数,当不出现时,则返回0。如:s1为"1112223333aaaaeeffd"s2为"11"则返回1s2为"aa"则返回2注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include<iostream.h>//注意只能使用int类型,不能类型转换intfun(char*s1,char*s2){}voidmain(){chars1[1024];chars2[256];cout<<"pleaseinputastring:"<<endl;cin.getline(s1,1024);cout<<"pleaseinputotherstring:"<<endl;cin.getline(s2,256);cout<<fun(s1,s2);cout<<endl;return;}标准答案:intsize=0;//初始化字符串统计变量个数ints1len;ints2len;for(s1len=0;s1[s1len]!=0;s1len++);//第一个字符串循环for(s2len=0;s2[s2len]!=0;s2len++);//第二个字符串循环for(inti=0;i<s1len;i++){intj=0;for(;j<s2len;j++)if(s1[i+j]!=s2[j])//将第二个串中的字符与第一个串中的字符比较break;if(j==s2len){++size;i+=j;--i;}}returnsize;知识点解析:(1)size变量用来存放s1中出现s2的个数,初始值赋为0。(2)然后利用for循环对s2中的每一个字符与s1中的字符进行比较。(3)如果循环中有符合条件的字符串,就将变量size个数加1。三、综合应用题(本题共1题,每题1.0分,共1分。)3、用VC6打开考生文件夹下的源程序文件modi3.cpp,这个程序完成输出到屏幕一些特定的信息,但工程有错误或者不完整,请完成以下功能:(1)初始化mNum2的值为j,请在注释//********1********后添加适当的语句。(2)补充全局函数fun()使之能够调用类TestClass的成员变量,请在注释//********2********后添加适当的语句。(3)初始化静态变量,请在注释//********3********后添加适当的语句。(4)修改注释//********4********后的语句。使得程序输出以下内容:m_Num1=1m_Num2=2m_Num3=1m_Num1=4m_Num2=2m_Num3=7注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#include<iostream.h>ClasSTestClasS{public://********1********TestClass(inti,intj){m_Num1=i;m_Num3+=i;}voidPrint(){cout<<"m_Num1="<<m_Num1<<endl;cout<<"m_Num2="<<m-Num2<<endl;cout<<"mNum3="<<mNum3<<endl;)voidAdd(inti){mNum3+=i;}private:intmNum1;constintmNum2;staticintmNum3;//********2********};//********3********voidfun(){TestClassNum(1,2);Num.mNum1=4;//********4********Num.Add();Num.Print();}voidmain(){TestClassNum(1,2);Num.Print()jfun();return;}标准答案:(1)添加语句:TestClass(inti,intj):mNum2(j)(2)添加语句:friendvoidfun();(3)添加语句:intTestClass::mNum3=0;(4)将“Num.Add();”补充完整为:Num.Add(5);知识点解析:(1)根据“constintm_Num2;”语句知道m_Num2为类TestClass中的私有数据,另外,C++定义构造函数的初始化数据成员的方法中可以在原有函数末尾加一个冒号,然后列出参数的初始化表实现,即“TestClass(inti,intj):m_Num2(j)”。(2)在C++中,如果在本类以外的其他地方定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中fun()在类TestClass以外的地方定义的,为了实现其对类TestClass中成员变量的调用,在类TestClass中补全“friendvoidfun();”,即声明fun()为类TestClass的友元函数。(3)在C++中,初始化类中数据成员的格式可以是“<类型>类名class::参数=”,其中<类型>为要初始化参数的类型,“::”为作用域符号,说明参数是class中的参数,所以这里补全“intTestClass::m_Num3=0;”。(4)函数fun()中“Num.Add();”语句应该是调用类“TestClass”中的成员函数“voidAdd(inti)”。其定义中存在参数inti,所以注释下修改的语句缺少参数。主函数首先调用“Num.Print();”,即实现题目中输出的前三条语句,而“fun();”语句实现后面三条语句的输出,即“m_Num3=7”才是调用Num.Add的输出结果,即“m_Num3+=i;”的计算结果。“TestClass]Num(1,2):”中将i的值初始化为1,“m_Num3”的值在上一次“Num.Print();”调用中为1,如果计算结果为7,那么Add(inti)中i的初始化值为5,即“Num.Add(5);”。国家二级C++机试(操作题)模拟试卷第2套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:150200注意:错误的语句在//*****error******的下面,修改该语句即可。提示:定义Number1为一个整型数据位长的变量。#include//*****error******struct{//*****error******intNumber1:1;intNumber2;}MyStruct;voidmain(){MyStructmstr;mstr.Number1=150;mstr.Number2=15;//*****error******int*ptr=&mstr.Number1;cout<<*ptr<标准答案:(1)typedefstruct(2)intNumber1:32;或intNumber1;(3)int*ptr=(int*)&mstr;知识点解析:(1)第1标识下是定义结构体,结构体定义的一般形式为:struct<结构体名>{<成员列表>}<变量名列表>;程序当中定义结构体名放在后面,MyStruct为结构体变量类型,相当于typedef为已有的类型定义一个新的类型,第1个标识下应改为“typedefstruct”。(2)第2标识下是定义Number1为一个整型数据变量,整型数据位数为32(4字节),因此第2个标识下应改成“intNumber1:32;”或“intNumber1;”。(3)ptr为整型数据指针,mstr为MyStruct类型结构变量,两者类型不一致应该做强制类型转换,第3个标识下应改成“int*ptr=(int*)&mstr;”,表示将mstr的地址给ptr,ptr指向MyStruct的第一个域Number1,Number1也是整形,类型一致,故可通过ptr指针来改变Number1的值。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数IsPalindromes(cha*string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回1,否则返回0。如:1234554321或者1234321都认为是回文字符串。如果串为空或一个字母时,均认为是回文字符串。注意:不能修改程序的其他部分,只能补充IsPalindromes()函数。#include#defineMAXLEN1024boolIsPalindromes(char*string){}voidmain(){charStr[MAXLEN];cout<<"请输入一行文字"<标准答案:intlen=0;for(;string[len]!=NULL;len++)//获取字符串的长度;len--;//下标从0开始到len-1for(inti=0;i知识点解析:(1)由于字符串的长度是未知的,先利用循环求出字符串的长度,循环变量从0开始,直到数组的结束,string[len]=NUL为循环结束条件,如此便得到了数组的长度len。(2)知道长度后就可以判断对称位置的元素是否相同,比如第一个元素和最后一个元素,第二个元素和倒数第二个元素,如此比较下去直到到了最中间的元素为止。(3)可以利用循环来比较是否对称,设置另一个循环变量i,i从0开始表示从数组的头开始读数,len从数组的尾部开始读数,如果string[i]!=string[len],则跳出循环返回0,如果循环结束还没发现不同则返回1。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示人基本信息的类CHumanlnfo,但类CHumanlnfo的定义并不完整。请按要求完成下列操作,将类CHumanlnfo的定义补充完成:(1)定义私有数据成员bloodType用于表示血型,血型为char型的数据。请在注释“//********1********”之后添加适当的语句。(2)完成构造函数的定义,要求具有缺省值,缺省值为身高175,体重70,血型A。请在注释“//********2********”之后添加适当的语句。(3)完成类外CHumanInfo成员函数Setlnfo的定义。请在注释“//********3********”之后添加适当的语句。(4)在主函数中调用成员函数SetInfo,把对象d2的三个私有数据成员分别设定为身高170,体重64,血型为B。请在注释“//********4********”之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeclassCHumanInfo{private:intheight;intweight;//********1********public://********2********:height(ht),weight(wt),bloodType(bt){};CHumanInfo(CHumanInfo&h1):height(h1.height),weight(h1.weight),bloodType(h1.bloodType){};intGetHeight(){returnheight;}intGetWeight(){returnweight;}intGetBloodType(){returnbloodType;}voidSetInfo(intht,intwt,charbt);voidDisplay();};//********3********{height=ht;weight=wt;bloodType=bt;}voidCHumanInfo::Display(){cout<<"HumanInfo:";cout<标准答案:(1)添加语句:charbloodType;(2)添加语句:CHumanInfo(intht=175,intwt=70,charbt=’A’)(3)添加语句:voidCHumanInfo::SetInfo(intht,intwt,charbt)(4)添加语句:h2.SetInfo(170,64,’B’);知识点解析:(1)第1个标识下定义私有数据成员char型的bloodType,故第1个标识下应添加“charbloodType;”。(2)构造CHumanInfo()完成三个成员的初始化,并且带有缺省值参数,缺省值为身高175,体重70,血型A,由函数体语句可知参数名分别为ht、wt和bt,因此第2个标识下应添加“CHumanInfo(intht=175,intwt=70,charbt=’A’)”。(3)第3个标识下在类外完成成员函数SetInfo的定义,在类外定义成员函数的格式为:<返回值类型><类名>::<成员函数>(<参数表>),故第3个标识下应添加“voidCHumanInfo::SetInfo(intht,intwt,charbt)”。(4)调用函数SetInfo()需要3个参数,程序要求把对象d2的三个私有数据成员分别设定为身高170,体重64,血型为B,即把这三个值传入函数SetInfo(),因此第4个标识下应添加“h2.SetInfo(170,64,’B’);”。国家二级C++机试(操作题)模拟试卷第3套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为:CMyObject,intheconstrutor~CMyObject,inthedestrutor注意:错误的语句在//********error********的下面,修改该语句即可。#includeclassCMyObject{//********error********//********error********CMyObject{cout<<"CMyObject,intheconstrUtor"<标准答案:(1)添加语句:public:(2)CMyObject(){cout<<"CMyObject,intheconstrutor"<知识点解析:(1)构造函数和析构函数均为公有函数,而在C++中默认的访问属性为私有(private),因此构造函数和析构函数必须说明为public,即第1个标识下应添加“public:”。(2)函数定义中在函数名后均有一对括号表示函数声明,因此第2个标识下应改为“CMyObjectO{cout<<"CMyObject,intheconstrutor"<二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(intn),求出n×n矩阵的对角线数字的平方和。如果n为奇数,则对角线交叉部位数字只参与一次计算。注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include#defineMAX_N10intXX[MAX_N][MAX_N];intfun(intn){}voidmain(){intnjdo{cout<<”pleaseinputNf1<:N<10):”<>n;if(n<10&&n>=1){break;}}while(1);for(inti=0;i>XX[i][j];}}cout<标准答案:intdata=0;//初始化求平方和变量for(inti=0;i知识点解析:(1)首先初始化求平方和变量,设置求平方和的变量为0。(2)然后利用for循环求得矩阵正对角线平方和。(3)最后求得逆对角线平方和,返回平方和变量。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开源程序文件modi3.cpp。其中类TestClass用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将int.txt文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件out1.txt和out2.txt中。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环。请在注释//********1********后添加适当的语句。(2)把获得的输入文件的内容存储到buf中,并且用len记录下文件的长度。请在注释//********2********后添加适当的语句。(3)将输入文件的后一半内容存储在第二个文件中,请在注释//********3********后添加适当的语句。(4)使用文件流对象打开输入文件in.txt,请在注释//********4********后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#include#include#includeClassTestClass{public:TestClass(char*fileName){len=0;fstreaminfile;infile.open(fileName,ios::in);charch;//********1********while(){cout<标准答案:(1)将“while()”完整为:while(infile.get(ch))(2)添加语句:buf[len++]=ch;(3)添加语句:outfile2<知识点解析:(1)题目1要求“从输入文件中获得一个字符,并判断是否到文件结尾”。程序中的“while()”循环判断语句中缺少从文件中获得的字符,所以这里补全while循环判断条件,即“while(infile.get(ch))”。(2)题目2要求“把获得的输入文件的内容存储到buf中,并且用len记录下文件的长度。”所以为buf分配空间,即“buf[len++]=ch;”。(3)题目3要求“将输入文件的后一半内容存储在第二个文件中。”在C++中,用流插入运算符为“<<”,所将buf中存放的数据存入文件outfile2,以根据题干中的要求,即这里补全“outfile2<国家二级C++机试(操作题)模拟试卷第4套一、基本操作题(本题共1题,每题1.0分,共1分。)1、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,其中有点类Point和线段类Line和主函数main的定义,程序中位于每个“//ERROR****found****”之的一行语句有错误,请加以改正。改正后程序的输出应为:p1=(8,4)p2=(3,5)注意:只修改两个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#include#includeusingnamespacestd;classPoint{doublex,y;public:Point(doublex=0.0,doubley=0.0)//ERROR**********found**********{x=x;y=y;}doublegetX()const{returnx;}doublegetY()const{returny;}//ERROR**********found**********voidshow()const{cout<<’(’<标准答案:(1):x(x),y(y){}或{this->x=x,this->y=y;}(2)voidshow()const{cout<<’(’<知识点解析:(1)主要考查考生对构造函数的掌握,因为形参名和私有成员名称一样,因此不能直接赋值,在这里使用成员列表初始化,也可以使用this指针赋值。(2)主要考查考生对语句基本语法的掌握,根据语句:voidshow()const{cout<<’(’<二、简单应用题(本题共1题,每题1.0分,共1分。)2、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中包含一个头文件shape.h,其中包含了类Shape、Point和Triangle的声明;包含程序文件shape.cpp,其中包含了类Triangle的成员函数和其他函数的定义;还包含程序文件proj2.cpp,其中包含测试类Shape、Point和Triangle的程序语句。请在程序中的横线处填写适当的代码并删除横线,以实现上述功能。此程序的正确输出结果应为:此图形是一个抽象图形,周长=0,面积=0此图形是一个三角形,周长=6.82843,面积=2注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。//shape.hclassShape{public:virtualdoubleperimeter()const{return0;}//返回形状的周长virtualdoublearea()const{return0;}//返回形状的面积virtualconstchar*name()const{return"抽象图形";}//返回形状的名称};classPoint{//表示平面坐标系中的点的类doublex;doubley;public://************found************Point(doublex0,doubley0):________{}//用x0、y0初始化数据成员x.ydoublegetX()const{returnx;}doublegetY()const{returny;}};classTriangle:publicShape{//********found********_________;//定义3个私有数据成员public:Triangle(Pointp1,Pointp2,Pointp3):point1(p1),point2(p2),point3(p3){)doubleperimeter()const;doublearea()const;constchar*name()const{return"三角形";}};//shape.cpp#include"shape.h"#includedoublelength(Pointp1,Pointp2){returnsqrt((p1.getX()一p2.getX())*(p1.getX()一p2.getX())+(p1.getY()一p2.getY())*(p1.getY()一p2.getY()));}doubleTriangle::perimeter()const{//一个return语句,它利用length函数计算并返回三角形的周长//***********found***********__________;}doubleTriangle::area()const{doubles=perimeter()/2.0;returnsqrt(s*(s—length(point1,point2))*(s—length(point2,point3))球(s—length(point3,point1)));}//proj2.cpp#include"shape.h"#includeusingnamespacestd;//***********found***********//show函数的函数头(函数体以前的部分){cout<<"此图形是一个"<标准答案:(1)x(x0),y(y0)(2)Pointpoint1,point2,point3(3)returnlength(point1,point2)+length(point1,point3)+length(point2,point3)(4)voidshow(Shape&shape)知识点解析:(1)主要考查考生对构造函数的掌握,题目要求用x0、y0初始化数据成员x、y,因此在这里使用成员列表初始化,即Point(doublex0,doubley0):x(x0),y(y0){}。(2)主要考查考生对构造函数的掌握,题目要求定义3个私有数据成员。由构造函数可知3个私有数据成员的类型都是Point,名称分别为point1、point2和point3,因此空格处填写:Pointpoint1,point2,point3。(3)主要考查考生对成员函数的掌握,题目要求使用return语句,利用length函数计算并返回三角形的周长。length函数返回的是两点间的距离,因此return语句只要返回三角形三条边的距离和,即为三角形的周长。(4)主要考查考生对成员函数的掌握,这里要定义show函数的函数头(函数体以前的部分)。由主函数main中show函数的使用情况show(s)和show(tri)可知,s是Shape类,tri是Triangle类,因为Triangle是Shape类的派生类,所以可知show函数的参数是Shape类型,无返回值,得出语句voidshow(Shape&shape)。三、综合应用题(本题共1题,每题1.0分,共1分。)3、请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程prog3,其中声明了ValArray类,该类在内部维护—个动态分配的整型数组。ValArray类的复制构造函数应实现对象的深层复制。请编写ValArray类的复制构造函数。在main函数中给出了一组测试数据,此种隋况下程序的输出应该是:ValArrayv1={1,2,3,4,5}ValArrayv2={1,2,3,4,5}要求:补充编制的内容写在“//*********333*********”与“//*********666*********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为boj文件,并且在本程序中调用。//ValArray.h#includeusingnamespacestd;classValArray{int*V;intsize;public:ValArray(constint*p,intn):size(n){v=newint[size];for(inti=0;i标准答案:Size=other.Size;v=newint[size];for(inti=0;i知识点解析:主要考查考生对复制构造函数的掌握,ValArray类的复制构造函数应实现对象的深层复制。由ValArray类的构造函数:ValArray(constint*p,intn):size(n){v=newint[size];//给v分配大小为size的空间for(inti=0;i国家二级C++机试(操作题)模拟试卷第5套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:Maxis7提示:max()数实现找出两个数中的最大值,并作为函数值返回。注意:错误的语句在//******error******的下面,修改该语句即可。#includeusingnamespacestd;//******error******intmax(inta,intb){if(a标准答案:(1)intmax(int&a,int&b)(2)max(m,n);知识点解析:(1)max函数采用的是传送引用方式传递参数,因此第1个标识下应该为intmax(int&a,intab)。(2)调用max时,传递引用时直接使用变量名即可,第2个标识下应改为“max(m,n)”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(intA[],intn),用冒泡法将数组排序。提示:所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组则会变成有序的,而且是由大到小的顺序。注意:不能修改程序的其他部分,并且不能删除其他的部分,也不能修改程序的结构。#include#defineN10voidsort(intA[N],intn){}intmain(){intA[N]={5,7,4,6,10,13,78,-4,9,20};sort(A,10);for(inti=0;i标准答案:inti,j,k,t;for(i=0;i知识点解析:(1)以数组“A[]={3,8,7,6,5,0,1,2,9,4}”为例来说明具体的排序过程,第一次选择:第一步从A[0]-A[9]中找最大值max及下标k,max=9,k=8;第二步交换a[0]与最大值a[8]的值;第一次结束后a[0]已存放了最大值,下一次比较就不必再经过它了,而从a[1]开始,如此循环。从例中可以看出10个元素要进行九次比较,n个元素要进行n-1次比较。设置两层循环,外层循环变量i从0到n.1,内层循环变量从i开始到n-1,在内层循环中找最大值,如果最大值的下标k和i不同,则交换,实现选择法排序。(2)在内层循环体内,如果最大值的下标k和i不同,则用一个临时变量记录第i个元素,然后将第k个元素赋值给第i个元素,临时变量值赋给第k个元素,如此完成两个元素的交换。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)利用define定义常量TRUE为1,定义常量FALSE为0,请在注释//********1********后添加适当的语句。(2)在类A2前增加A1的声明,请在注释//********2********后添加适当的语句。(3)在类C1中声明友元函数boolfune(A2&a,A1&b),请在注释//********3********后添加适当的语句。(4)实现函数boolfunc(A2&obj1,Al&obj2)功能,检查两个类的值都为TRUE,则返回TRUE,请在注释//********4********后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include//********1********#defineFALSE0//********2********ClassA2{private:boolm_A2;friendboolfunc(A2&obj1,A1&obj2);public:A2(){m_A2=FALSE;}public:voidsetA2(booln){m_A2=n;}};classA1{private:boolmA1;//********3********public:A1(){m_A1=TRUE;}public:voidsetA1(booln){m_A1=n;}};boolfunc(A2&obj1,A1&obj2){//********4********return}intmain(){A2obj0;A1obj1;cout<标准答案:(1)添加语句:#defineTRUE1(2)添加语句:classA1;(3)添加语句:friendboolfunc(A2&obj1,A1&obj2);(4)将“return”补充完整为:returnobj1.m_A2==TRUE&&obj2.m_A1==TRUE;知识点解析:(1)#define命令一般将一个指定的标识符(即宏名)来代表一个字符串,其定义形式一般为:#define宏名(参数表)字符串,因此第1个标识下应添加#defineTRUE1。(2)类声明格式为:“class<类名>:”,故第2个标识下应添加“classA1;”。(3)友元不是本类的成员函数,在它的函数体内部可以通过对象名来访问类的私有成员和保护成员。友元函数是在类声明中由关键字。friend修饰的非成员函数,3出添加语句:“friendboolfunc(A2&obj1,A1&obj2);”。函数func返回变量m_A2和m_A1的逻辑与运算结果,因此第4标识下应改为“returnobj1.m_A2=TRUE&&obj2.m_A1==TRUE;”。国家二级C++机试(操作题)模拟试卷第6套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为:initTestClassdelTestClass注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。#includeclassTestClass{//********error********//********error********intTestClass(){cout<<"initTestClass"<标准答案:(1)添加语句:public:(2)TestClass(){cout<<"initTestClass"<知识点解析:(1)打开modi1.cpp,调试程序,显示错误提示为第一标识下“modi1.cpp(13):errorC2248:’TestClass::TestClass’:cannotaccessprivatememberdeclaredinclass’TestClass’”,构造函数由于是私有的,无法获得,所以应该定义为public型,即第1个标识下添加“public:”。(2)构造函数首部的一般形式为:构造函数名(形参列表),构造函数没有返回值,所以定义构造函数时不需要声明类型,所以“intTestClass(){cout<<"initTestClass"<二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成fun()数,其功能是:求出M行N列二维数组每行元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。注意:不能修改程序的其他部分,只能修改fun()函数。#inClude#defineM2#defineN4voidfun(inta[M][N],int*sum){}voidmain(){intX[M][N]={7,6,5,2,4,2,8,3};ints;fun(x,&s);cout<标准答案:inti,j,k,s=0;for(i=0;ia[i][j])k=j;//求得每一行的最小值s+=a[i][k];//最小值求和}*sum=s;//返回求和值知识点解析:(1)依次访问每一行的元素。(2)在对每一行的访问过程中选出最小数。(3)将选出的最小数求和。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。此程序的运行结果为:InCDerive’sdisplay().b=1InCDerive2’sdisplay().b=2其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)定义函数display()为无值型纯虚函数。请在注释//********1********之后添加适当的语句。(2)建立类CDerive的构造函数,请在注释//********2********之后添加适当的语句。(3)完成类CDerive2成员函数diaplay0的定义。请在注释//********3********之后添加适当的语句。(4)定义类Derivel的对象指针d1,类CDerive2的对象指针d2。其初始化值分别为1和2。请在注释//********4********之后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeusingnamespaceStd;ClassCBase{public:CBaSe(inti){b=i;}//********1********protected:intb;};classCDerive:publicCBase{public://********2********voiddisplay(){cout<<"InCDerive’sdisplay()."<<"b="<display();}Voidmain(){//********4********func(d1);func(d2);}标准答案:(1)添加语句:virtualVoiddisplay()=0;(2)添加语句:CDerive(inti):CBaSe(i){)(3)添加语句:VoiddisPlay(){cout<<"InCDerive2’sdisplay()."<<"b="<知识点解析:(1)CBase类中的display()函数足纯虚函数,纯虚函数的定义格式为:virtual<函数类型><函数名>(<参数表>)=0,因此第1个标识下应添加“virtualvoiddisplay()=0;”。(2)类CDerive的构造函数用来完成类成员变量的初始化,派生类没有自己的成员变量,可直接采用基类的构造函数完成初始化,因此第2个标识下文添加“CDerive(inti):CBase(i){}”。(3)第3个标识下是完成类CDerivc2成员函数diaplay()的定义和实现,根据要求的输出结果“InCDerive2’sdisplay().b=2”可知display()函数除输出字符串“InCDerive2’sdisplay().”还输出变量b的值,故第3个标识下应添加“voiddisplay(){cout<<"InCDerive2’sdisplay()."<<"b="<国家二级C++机试(操作题)模拟试卷第7套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正错误,使得程序输出:Hellotest注意:不要改动mam函数,不能增行或删行,也不能更改程序的结构,错误的语句在∥********error********的下面。#include∥********error********templatevoidfun(Tt){std::cout<<“test”<voidfun(boolt){std::cout<<(t?“Hello”:“Hi”)<标准答案:(1)template(2)删除“template”(3)boolflag=true;知识点解析:程序要求输出字符串Hellotest。从己定源程序的main主函数开始入手,调用函数fun实现字符的输出。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和C代码,完成空出部分的程序,实现函数fun(char*s1,char*s2)将字符串s2连接在字符串s1之后,构成一个首指针为s1的字符串。注意:不能修改函数的其他部分。#include#defitieMAXLINE1000voidfun(char*s1,char*s2){}voidmain(){chars1[MAXLINE];chars2[256];cout<<“pleaseinputastring:”<标准答案:inti=0;for(i=0;s1[i]!=0;i++);//指向第一个串尾for(intj=0;s2[j]!=0;k++)//利用循环将第二个串拷贝到第一个串尾s1[i++]=s2[j];1[i]=0;//加尾符知识点解析:(1)该程序功能是将字符串s2连接在字符串s1之后。它的解题思路,首先指向字符串s1的尾,然后将第二个字符串s2的内容依次拷贝到第一个串的尾。(2)从已给部分源程序的main主函数开始入手,核心函数voidfun(char*s1,char*s2)中的s1和s2为要连接的字符串。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)在类TestClass中定义name为字符串类型,age为整型,请在注释∥********1********之后添加语句。(2)设置类TestClass0的基类为TestClass类的定义,请在注释∥********2********后添加语句。(3)在类TestClass的派生类TestClass0的公有成员中定义析构函数TestClass0,请在∥********4********后添加。(4)设置类TestClassl的基类为TestClass类的定义,请在∥********4********后实现。本程序输出如下结果:TestClassclassconstructorTestClass0classconstructorTestClassonclassconstructorTestClass1classconstructorTestClass1classconstructorTestClassclassconstructorTestClass0classconstructorTestClassclassconstructor注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeClassTestClass{∥********1********public:TestClass(){cout<<“TestClassclassconstructor”<标准答案:(1)添加语句:char*name;intage;(2)添加语句:classTestClasS0:publicTestClass(3)添加语句:一TestClass0()(4)添加语句:classTestClass1:publicTestClass知识点解析:本题的功能是利用构造函数和析构函数中的输出语句,输出字符串。在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的main主函数开始入手,完成类的定义以及其成员函数。国家二级C++机试(操作题)模拟试卷第8套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:number1=4.8number2=93.6number3=0.9PRODUCT=404.352注意:错误的语句在∥********error********的下面。修改该语句即可。其他的语句不能修改。#includeusingnamespaceStd;intmsin(){doublenumber1=4.8,number2=93.6,number3=0.9;∥********error********Droduct=number1*number2*number3;∥********error********cout<<“number1=”<标准答案:(1)doubleprduct=numbe_r1*number2*number3;(2)cout<<“number1=”<知识点解析:程序内容比较简单,要求在屏幕上输出三个变量值和这三个变量的乘积值,可编译程序按照提示来找到错误处修改调试,按照要求来修改程序。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(intx),该函数功能是将x的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。例如:x=13,13的二进制数字为1101,则输出到屏幕的为1101。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。#include#include#includeusingnamespacestd;voidWriteFile(char*str){ofstreamoutl;outl.open(“modi2.txt”,ios—base::binary|ios—base::app);for(inti=0;str[i]!=0;i++)out1.put(str[i]);out1.close();}voidfun(intx){}voidClearFile(){Ofstreamout1;out1.open(“modi2.txt”);out1.close();}intmain(){ClearFile();fun(13);return0;}标准答案:charstr[32];inti;for(i=30;i>=0;i一一)//计算二进制{if(x%2)str[i]=’1’;//求余,如果余不为零字符串str第i位为1elsestr[i]=‘0’;//否则为0x>>=1;if(!x)break;}str[31]=‘\0’;//串加尾符cout<<&Str[i]<知识点解析:(1)该程序功能是实现十进制转换成二进制数。十进制到二进制的转换是对十进制的数字进行2的取余运算,余数不为零则取1,否则为0,然后对余数进行循环取余运算,直到余数为0。(2)从己给部分源程序的main主函数开始入手,核心函数fun(intx)中的x参数为输入的十进制数。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:每卖出一个瓜,则计算瓜的重量,还要计算所有卖出瓜的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整(1)定义类Cmelon的私有静态数据成员float型变量totalweight和int型变量totalNo,请在注释∥********1********后添加适当的语句。(2)完成类Cmelon的带一个float型变量W的构造函数,并把这个W加到totalweight中,并且totalNo自加。请在注释∥********2********后添加适当的语句。(3)在析构函数中,在totahveight中减去weight,然后totalNo自减,请在注释∥********3********后添加适当的语句。(4)完成静态成员变量的初始化为0,请在注释∥********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#inCludeclassCmelon{private:floatweight;∥********1********staticinttotaINo;public:Cmelon(flcatw){∥********2********totalweight+=w;totaiNo++;}~Cmelon(){∥********3********totalweight一=weight;}voiddisplay(){tout<<“Sellamelonwith”<标准答案:(1)添加语句:staticfloattotalweight:(2)添加语句:weight=w;(3)添加语句:totaiNo一一;(4)添加语句:intCmelon::totalNo=0;知识点解析:程序中定义了Cmelon类,包含totalweight和totalNo两个静态变量和float型变量weight,分别表示卖出瓜的总
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桑蚕丝定位男长巾项目投资可行性研究分析报告(2024-2030版)
- 2025年 安康市审计局事业单位招聘考试笔试试题附答案
- 2023-2028年中国河南白酒行业市场深度分析及投资策略咨询报告
- 2025年中国智慧商城建设市场前景预测及投资规划研究报告
- 2025年中国屏山炒青茶行业市场发展监测及投资战略规划报告
- 宝鸡醋项目可行性研究报告
- 中国电池制造行业全景评估及投资规划建议报告
- 销售顾问培训课件
- 中国量子磁力计行业市场前景预测及投资价值评估分析报告
- 2021-2026年中国小黄鱼市场竞争格局及投资战略规划报告
- 2023无损检测技术资格人员考试泄漏检测试卷(练习题库)
- 超敏反应性疾病及其免疫检测课件
- 非结核分支杆菌病影像学(NTM)-修改版课件
- 现在分词作定语和状语公开课一等奖市赛课获奖课件
- 农业银行银行安全保卫考试真题模拟汇编(共418题)
- 睾丸扭转-课件
- 密码知识竞赛参考题库300题(各题型)
- 《颅内和椎管内肿瘤》
- 拆零药品登记表
- SB/T 10784-2012洗染服务合约技术规范
- GB/T 8478-2020铝合金门窗
评论
0/150
提交评论