版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(操作题)模拟试卷18(共9套)(共27题)国家二级C++机试(操作题)模拟试卷第1套一、基本操作题(本题共1题,每题1.0分,共1分。)1、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Thisobjectisno.1注意:只修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。1//proj1.cpp2#include<20Stream>3usingnamespacestd;4classMyClasS5{6public:7MyClass():count(0){cout<<"Thisobjectis";)8//ERROR********found********9voidInc()const10{cout<<"no."<<++count<标准答案:(1)voidInc()(2)intcount;(3)obj->Inc();知识点解析:(1)考查考生对const的掌握,在Inc函数的函数体{cout<<"no."<<++count<”,而不能使用“.”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中定义了Component类、Composite类和Leaf类。Component是抽象基类,Composite和Leaf是Compo-nent的公有派生类。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:LeafNode注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。l#inclUde2usingnamespacestd;34classComponent{5public:6//声明纯虚函数print()7//********found********89},1011classComposite:publicComponent{12public:13//**********found**********14voidsetChild(______)15{16m_chiid=chiid;17}18virtualvoidprint()const19{20m_child->print();21}22private:23Component*m_child;24};2526classLeaf:publicComponent{27public:28virtualvoidprint()const29{30//**********found**********31_______32}33};3435intmain()36{37Leafnode;38Compositecomp;39comp.setChild(&node);40Component*p=&comp;41p->print();42return0;43}标准答案:(1)virtualvoidprint()const=0;(2)Component*child(3)cout<<"Leaf.Node"<知识点解析:(1)主要考查考生对纯虚函数的掌握,题目要求声明纯虚函数print()。在其派生类中print()函数的定义为virtualwildprint()const,由此可知纯虚函数为virtualvoidprint()const=0。(2)主要考查考生对成员函数的掌握,题目要求填写函数voidsetChild的形参,由setChild的函数体可知形参为child,再看类的私有成员m_child的定义:Component*m_child;。由此可知形参为:Component*child。(3)主要考查考生对纯虚函数的掌握,先看主函数的程序:1Leafnode;2Compositecomp;3comp.setChiid(&node);4Component*p=∁5p->print();第一条和第二条语句都是定义语句,第三条语句调用函数setChild,由setChild函数的定义可知,comp中的m_child等于node,第四条语句定义了个指针P指向comp的地址,也就是node,最后一条语句通过指针P调用函数print,也就是调用类Leaf的函数print,因为题目要求输出:LeafNode,因此在这里添加语句:cout<<"LeafNode"<三、综合应用题(本题共1题,每题1.0分,共1分。)3、请使用菜单命令或直接用VC6打开考生文件夹下的工程prj03。请完善下列程序,实现一个Number类。Add函数计算2个Number类对象之和,并将和作为Number对象返回。这2个Number对象中各包含一个用字符串表示的10进制正整数,均不超过int的表示范围。在main函数中给出了一组测试数据,使用这组数据进行测试时程序的输出应该是:100注意:只需在//********333********和//********666********之间填人所编写的若干语句,不要改动程序中的其他内容。1#include2#include3#include4#include"proj3.h"5usingnamespacestd;6Number::Number(char*n){7num=newchar[strlen(n)+1];8strcpy(num,n);9}i0Number::Number(Number&n){11num=newchar[strlen(n.num)+1];12strcpy(num,n.num);13}14Number::Number(intn){15char*tmp=newchar[30];16itoa(n,tmp,10);//函数itoa的功能是将n转换为字符串,存放于tmp指向的数组中17num=newchar[strlen(tmp)+1];18strcpy(num,tmp);19}20Number::~Number(){21if(num)22delete[]num;23}24NumberNumber::Add(Numbern){25//****333****262728//*******666*******29}30intmain(){31Numbernuml("32");32Numbernum2("68");33Number&num3=numl.Add(nurn2);34cout<标准答案:1inti=atoi(hum);2intj=atoi(n.GetNum());3retumNumt)er(i+i);知识点解析:主要考查考生对库函数、对象成员和构造函数使用的掌握情况,函数Add的功能是将函数参数n与自身相加,返回相加后的Number对象,Number类中成员字符串num是用来表示十进制的整数,所以将两个Number相加需要首先将字符串num转化为整数,这里需要使用库函数atoi,将调用对象的num和对象n的num转化为十进制整数i,j,在转化对象n的num成员时,由于num是Number类的私有成员,所以不能直接使用,而应该通过成员函数GetNum()返回num;得到十进制数i、j后,再用i与j的和构造成Number对象,所以需要使用Number的参数为整数的构造函数,即Number(inti),构造Number对象后返回。国家二级C++机试(操作题)模拟试卷第2套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句:TestClassl:0TestClass2注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。1#include2structTestClassl3{4TestClassl(inti=0)5{6mi=i;7}8voidprint()9{10cout<<"TestClassl:"<标准答案:(1)public:(2)TestClasslobj1(0);或TestClasslobj1;(3)TestClass2obj2;知识点解析:程序要求输出TestClass1:0和TestClass2。从已定源程序的main主函数开始入手,可以看出程序首先定义TestClass1和TestClass2类型的变量,然后通过调用其中的print成员函数实现输出结果。[解题思路](1)第1个标识下的“private:~TestClass2()”是析构函数,它不是私有的,所以这里应该为“删除private:或修改为public:”。(2)第2个标识下的“TestClasslobjl0;”语句是定义一个TestClass1类型的对象objl(),根据类TestClassl构造函数的定义“TestClassl(inti=0)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为“TestClasslobjl(0);或TestClasslobjl;”。(3)同理第3个标识下的“TestClass2obj20;”语句修改为“TestClass2obj2;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*sl,char*s2),此函数的功能是计算s1中出现s2的个数,当不出现时,则返回0。如:sl为"1112223333aaaaeeffd"s2为"11"则返回1s2为"aa"则返回2注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。1#include2//注意只能使用int类型,不能类型转换3intfun(char*S1,char*S2)4{56}7voidmain()8{9charS1[1024];10charS2[256];11cout<<"pleaseinputastring:"<标准答案:1intSize:0;//初始化字符串统计变量个数2intS11en;3intS21en;4for(sllen=0;sl[sllen]!=0;sllen++);//第一个字符串循环5for(s21en=0;s2[s21en]!=0;s21en++);//第二个字符串循环6for(inti=0;i知识点解析:(1)该程序功能是计算s1中出现s2的个数。它的解题思路是两个字符串逐个比较其中的字符,从而统计符合的字符串个数。(2)从已给部分源程序的main主函数开始入手,核心函数intfun(char*sl,char*s2)中的s1,s2参数为输入的字符串。[解题思路](1)size变量用来存放s1中出现s2的个数,初始值赋为0。(2)然后利用for循环对s2中的每一个字符与sl中的字符进行比较。(3)如果循环中有符合条件的字符串,就将变量size个数加l。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义类的私有变量a、b,请在注释//********1********后添加适当的语句。(2)完成类的构造函数,对变量a、b赋值,缺省两个变量值为1,在注释//********2********之后添加语句。(3)完成打印函数display(),打印出“a*b=c”格式的一个乘法算式,在注释//********3********之后添加语句。(4)补充主函数,使得打印9×9的乘法口诀。在注释//********4********后添加语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。1#include2classCMyFormula3{4private:5//********1********67public:8//********2********910{11this->a=a;12this->b=b;13}14voidset(intx,inty)15{16a=x;17b=y;18}19voiddisplay()20{21//********3********2223}24};25intmain()26{27CMyFormulaformular(1,1);28for(inti-1;i<:9;i++)29{30//********4********31for(intj=1;j++)32{33formular.set(J,i);34formular.display();35cout<<"";36}37cout<标准答案:(1)添加语句:inta,b;(2)添加语句:CMyFormula(inta=1,intb=1)(3)添加语句:cout<知识点解析:程序当中定义了类CMyFormula,含有a和b两个成员变量,一个构造函数,改变成员变量a和b的值得set(intx,inty)函数,打印a和b的乘积的display()函数。在主函数中定义了一个CMyFormula对象,然后不断改变该对象的a和b的值,然后调用display()显示,如此完成打印9×9的乘法口诀。[解题思路](1)第1个标识下完成CMyFormula类的私有变量a、b的定义,从函数set(intx,inty)的参数类型可以看出a和b均为int型变量,故第1个标识下应添加“inta.b;”。(2)第2个标识下添加构造函数声明,完成对变量a、b赋值,该构造有两个参数a和b,且a和b缺省值为1,因此第2个标识下应添加“CMyFormula(inta=1,intb=1)”。(3)打印函数display()在屏幕上打印出“a*b=c”格式的一个乘法算式,因此第3个标识下应添加“cout<国家二级C++机试(操作题)模拟试卷第3套一、基本操作题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的中括号处填入正确的内容并把中括号删除,使程序得出正确的结果。注意:部分源程序在文件BLANKl.C中。不得增行或删行,也不得更改程序的结构!试题程序:#include#include#defineN5#def2neM8voidfun(char(*ss)[M]){char*ps[N],*tp;inti,j,k;for(i=0;i标准答案:(1)i(2)ps[j](3)tp知识点解析:本题是按字符串的长短进行排序。填空1:外循环每循环一次,k应保存当前的i值,所以应填i。填空2:使用内循环对i+1后面的字符串长度进行比较,所以应填ps[j]。填空3:此处的作用是交换两个变量的值,所以应填tp。二、简单应用题(本题共1题,每题1.0分,共1分。)2、下列给定程序中,函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。请改正程序中的错误或在中括号处填上正确的内容并把中括号删除,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#include#include#defimeN80intfun(char*s,char*t){intn;char*p,*r;n=0;/*********found*********/*r=t;while(*s){p=s;while(*r){if(*r==*p}{r++;p++;}elsebreak;if(*r==’\0’)n++;}/*********found*********/1;S++;}returnn;}voidmain(){chara[N],b[N];intm;printf("\nPleaseenterstringa:");gets(a);printf("\nPleaseentersubstringb:");gets(b);m=fun(a,b);printf("\nTheresultis:m=%d\n",m);}标准答案:(1)r=t;(2)r=t;或r=&t[0];知识点解析:从字符串s中找出子字符串的方法是:从第一个字符开始,对字符串进行遍历,若s串的当前字符等于t串的第一个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串t的末尾,则跳出循环;若s串的字符与t串的字符不对应相同,则继续对s串的下一个字符进行处理。三、综合应用题(本题共1题,每题1.0分,共1分。)3、请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2223445666677899101010删除后,数组中的内容应该是:2345678910注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include#defineN80intfun(inta[],intn){}voidmain(){inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;printf("Tneoriginaldata:\n");for(i=0;i标准答案:intfun(inta[],intn){inti,j=1;for(i=1;i知识点解析:该程序的流程是:定义变量i和j,其中j用于控制删除后剩下的数在数组中的下标,i用于搜索原数组中的元素。j始终是新数组中最后一个元素的下一个元素的下标,所以if语句中的条件是a[j—1]!=a[i],其中a[j一1]就是新数组中的最后一个元素,若条件成立,则表示出现了不同的值,所以a[i]要保留到新数组中。注意本题中i和j的初值都要从1开始,该算法只能用于数组已排序的题目中。国家二级C++机试(操作题)模拟试卷第4套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:TestClass2TestClass3注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在∥********error********的下面。#includeClassTestClass1{public:virtualVoidfun()=0;};classTestClass2:publicTestClassl{∥********error********intfun(){usingnamespacestd;cout<<“TestClass2”<fun();obj2.fun();return;}标准答案:(1)voidfun()(2)添加语句:public:(3)std::cout<<“TestClass3”<知识点解析:本题程序中的功能为输出字符串TestClass2和TestClass3。从已定源程序的main主函数开始入手,可以看出程序通过定义类的对象,利用类中定义的成员函数完成题目中要求的输出。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.epp。阅读下列函数说明和代码。函数sort(int&m,int&n,mt&1)实现将三个整数m、n、1由大到小输出。m最大,1最小。程序分析:程序实现时,可以把最大的数放到m上,先将m与n进行比较,如果mvoidsort(int&m,int&n,int&1){}intmain(){int×=9;inty=13;intz=一3;sort(x,y,z);cout<标准答案:Intt;if(m知识点解析:sort函数实现3个参数的从大到小的排序,可以采用很多方法来排序,比如选择法排序、冒泡法排序等,这里要求采用比较的方法来实现排序,由于需要排序的数据较少,只有3个,逐个比较就可以找到最大最值小进行排序。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。(1)定义私有成员变量year、month、day,分别表示年、月、曰,类型为int。请在注释∥********1********后添加适当的语句。(2)完成构造函数,分别给year、month、day赋值,请在注释∥********2********后添加适当的语句。(3)完成重载符号“+=”的定义,请在注释∥********3********后添加适当的语句。(4)完成print()打印函数,如2008年8月8日到屏幕和文件modi3.txt格式相同,请在注释∥********4********后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#include#include#include#includeusingnamespacestd;voidWriteFile(intc){0fstreamout1;out1.open(“modi3.txt”,iosbase::app);out1<标准答案:(1)添加语句:intyear,month,day;(2)添加语句:year=y;month=m;day=d;(3)添加语句:Date&operator+=(intm)(4)添加语句:cout<知识点解析:在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已给定源程序的main主函数开始入手,可以看出程序通过调用类Date和函数print实现各种输出操作。国家二级C++机试(操作题)模拟试卷第5套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:150200注意:错误的语句在∥********error********的下面,修改该语句即可。提示:定义Numberl为一个整型数据位长的变量。#include∥********error********struct{∥********error********intNumberl:1;intNumber2;)MyStruct;voidmain(){MyStructmstr;mstr.Numberl:150;mstr.Number2=15;∥********error********int*ptr=&mstr.Numberl;cout<<*ptr<标准答案:(1)typedefstruct(2)intNumberl:32;或intNumber1;(3)int*ptr=(int*)&mstr;知识点解析:(1)第1标识下是定义结构体,结构体定义的一般形式为:struct<结构体名>{<成员列表>}<变量名列表>;程序当中定义结构体名放在后面,MyStruct为结构体变量类型,相当于typedef为已有的类型定义一个新的类型,第1个标识下应改为“typedefstruct"。(2)第2标识下是定义Numberl为一个整型数据变量,整型数据位数为32(4字节),因此第2个标识下应改成“intNumberl:32;”或“intNumberl:”。(3)ptr为整型数据指针,mstr为MyStruct类型结构变量,两者类型不一致应该做强制类型转换,第3个标识下应改成“int*ptr=(int*)&mstr;”,表示将mstr的地址给ptr,ptr指向MyStruct的第一个域Numberl,Numberl也是整形,类型一致,故可通过ptr指针来改变Numberl的值。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(hatN[4])的功能是用4个数字,组成互不相同且无重复数字的三位数,并将满足所有条件的数字输出到屏幕,并且每输出一个三位数字就换一行。程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0则也去掉。#include<10Stream.h>voidfun(intN[4]){}intmain(){intN[4]={1,2,3,0};fun(N);return0;}标准答案:inti,j,k;for(i=0;i<4;i++)//百位循环{for(j=0;j<4;j++)//十位循环for(k=0;k<4;k++)//个位循环(if(i!=j&&j!=k&&k!=i&&N[i]l=0)//当三位数不同,并且百位不为0{COUt<知识点解析:(1)该程序功能是输出百、十、个位都不相同的组合。它的解题思路,利用三层循环,对百、十、个位数字是否相同进行判断。(2)从已给部分源程序的main主函数开始入手,核心函数voidfun(intN[4])中的N[4]参数为存放输入的四位数字的数组。解题思路(1)利用三层循环,对要三位数字是否相同进行判断。(2)如果三位数不同,并且百位不为0。那么依次输出这三位数,即为三位数组成的数字。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示学生学号的类CStudentlD,但类CStudentlD的定义并不完整。运行结果为:学生的学号为:200805学生名为:李伟删除学生学号为:200805请按要求完成下列操作,将类CStudentlD的定义补充完成:(1)定义classCStudentlD类的私有数据成员IDvalue表示学生的学号,为long型的数据。请在注释∥********1********之后添加适当的语句。(2)完成默认构造函数CStudentlD的定义,使CStudentlD对象的默认值为:id=0,并把学生的学号赋给IDvalue,并输出“赋给学生的学号:”及学号。请在注释∥********2********之后添加适当的语句。(3)完成默认析构函数CStudentlD的定义,使CStudentlD析构时输出“删除学号:”及学号。请在注释∥********3********之后添加适当的语句。(4)完成默认构造函数CStudentlnfo的定义。对应两个默认参数:要求定义charstName[],其默认值为“noname”,定义longstlD,其默认值设为0,并使它们赋值给相应的类数据成员。请在注释∥********4********之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include#includeC1asSCStudentID{∥********1********定义私有数据成员public:∥********2********定义默认构造函数{IDvalue=id;cout<<“学生的学号为:”<标准答案:(1)添加语句:longIDvalile;(2)添加语句:CStudentID(10ngid=0)(3)添加语句:~CStudentID()(4)添加语句:CStudent工nfo(char8tName[]=“nona.me”,longstID=O):id(stID知识点解析:(1)第1个标识下完成CStudentlD类的私有数据成员IDvalue的定义,为long型的数据,因此第1个标识下应添加“longIDvalue;”o(2)构造函数完成类成员变量的初始化,构造函数名和类名一致,该构造函数带有一个参数id,其默认值为id=0,因此第2个标识下应添加“CStudentlD(longid=O)”。(3)析构函数也和类名一致,并且在前面加“一”以和构造函数区分,析构函数没有参数,故第3个标识下应添加“~CStudentlD()”。(4)CStudentlnfo包含的学生学号信息保存在类CStudentlD的实例中,可通过调用类CStudentlD的自定义构造函数初始化,第4个标识下应添加“CStudentlnfo(charstName[]=”noname",longstlD=0):id(stlD)”。国家二级C++机试(操作题)模拟试卷第6套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为:CMyObject,intheconstrutor~CMyObject,inthedestrutor注意:错误的语句在//********error********的下面,修改该语句即可。1#include(iostream.h>2classCMyObject3{4//********error********56//********error********7CMyObject(cout<<"CMyObject,intheconstrutor"<标准答案:(1)添加语句:public:(2)CMyobject(){cout<<"CMyObject,intheconstrutor"<知识点解析:程序中定义了类CMyObject,含有一个构造函数和一个析构函数,在构造函数和析构函数中分别输出一段字符。[解题思路](1)构造函数和析构函数均为公有函数,而在C++中默认的访问属性为私有(private),因此构造函数和析构函数必须说明为public,即第1个标识下应添加“public:”。(2)函数定义中在函数名后均有一对括号表示函数声明,因此第2个标识下应改为“CMyObject(){cout<<"CMyObject,intheconstmtor"<二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。程序的功能是寻找1~500以内的亲和数并显示出来,函数amicableNum(intm,intn)判定两个数是否是亲和数。亲和数的定义为:两个数m和n,如果n的所有因子之和(因子除掉自身)等于m,且m的所有因子等于n,则m、n是互为亲和数。注意:不能修改程序的其他部分,只能补充amicableNum(intm,intn)函数。1#include2intamicableNum(intn)3{4intsum=0;5for(int.i=1;i标准答案:1if(amicableNum(m)==n&&amicableNum(n)==m)2return1;3return0;知识点解析:函数amicableNum(intm,intn)判定两个数是否是亲和数,亲和数指两个数的因子(除去本身)和分别是对方,因此在判断亲和数时先求这两个数的因子和,然后比较便可知是否是亲和数。[解题思路](1)程序中定义了两个amicableNum0函数,由于参数个数不同重载了amicableNum0函数,函数amicableNum(intn)返回n的因子和,而函数amicableNum(intm,intn)则是判断m和n是不是亲和数,两个函数功能并不相同。(2)在amicableNum(intm,intn)函数中,可调用amicableNum(intn)函数求m和n的因子和,然后比较两个因子和,如果两个因子和相同则返回真,否则返回假。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)定义类的公有数据成员函数No、Name[32],其中No是int型的数据,Name[32]为字符型。请在注释//********1********后添加适当的语句。(2)完成函数set的定义,分别设置No和Name的值,请在注释//********2********后添加适当的语句。(3)完成函数print(),请在注释//********3********后添加适当的语句,打印的输出如下:No=111Name=Garfield(4)加缺省构造函数,设置No为0,Name为空,请在注释//********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。1#include2classTeStClass3{4public:5//********1********67//********2********89{10No=no;11for(inti=0;strName[i]!=0;i++)12{13Name[i]=strName[i];14Name[i+1]=0;15}16}17voidprint()18{19//********3********2021}22TeStClass()23{24//********4********2526}27};28intmain()29{30TestClassstu;31Stu.Set(111,"Garfield");32stu.print();33return0;34}标准答案:(1)添加语句:intNo;charName[32];(2)添加语句:voidSet(intno,char*strName)(3)添加语句:cout<<"No=II<知识点解析:本题程序的功能是利用成员函数set设置类成员数据数值,并利用成员函数print输出成员数值。在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的main主函数开始入手,可以看出程序通过调用类TestClass和其构造函数实现各种输出操作。[解题思路](1)题目l要求“定义类的公有数据成员函数No、Name[32],其中No是int型的数据,Name[32]为字符型”。在已有程序中,类定义的public区域中,定义变量No,Name[32],即在第1个标识下添加语句“intNo;charName[32];”。(2)题目2要求“完成函数set的定义,分别设置No和Name的值”。第2个标识下说明函数set的语句中,应该包括变量no,strName的定义,然后在函数中将其值赋值给No,Name,即添加定义语句“’voidSet(int,no,char*strName)”。(3)题目3要求“完成函数print()”,根据输出结果,知道输出的是No和Name的值,所以这里补全“cout<<"No="<国家二级C++机试(操作题)模拟试卷第7套一、基本操作题(本题共1题,每题1.0分,共1分。)1、下列给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后将新字符串的首地址作为函数值返回。例如,若S所指字符串为“asd123fgh543df”,处理后新字符串为“asdfghdf123543”。请在程序的中括号处填入正确的内容并将中括号删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include#include#includechar*fun(chars){inti,j,k,n;char*p,*t;n=strlen(s)+1;t=(char*)malloc(n*si-zeof(char));p=(char*)malloc(n*si—zeof(char));j=0;k=0;for(i=0;i=’a’)&&(s[i]<=’Z’))||((s[i]>=’A’)&&(s[i]<’Z’))){/*********found*********/t[j]=【1】;j++;}else{p[k]=s[i];k++;}}/*********found*********/for(i=0;i<【2】;i++)t[j+i]=p[i];/*********found*********/t[j+k]=【3】;returnt;}main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("\nTheresultis:%s\n",fun(s));}标准答案:(1)s[i](2)k(3)‘\0’或0知识点解析:填空1:将字符串s中所有字母元素赋给数组t。填空2:字符串中所有非字母元素放到字母元素后面,所以i的取值范围是0~k。填空3:最后给字符串加入结束标识‘\0’。二、简单应用题(本题共1题,每题1.0分,共1分。)2、下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。例如,若输入5,则应输出一0.283333。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#includedoublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/*********found*********/t=1.0一1/i;/*********found*********/;}voidmain(){intm;system("CLS");printf("\nPleaseenter1integernumbers:\n");scanf("%d",&m);printf("\n\nTheresultis%lf\n",fun(m));}标准答案:(1)t-=1.0/i;(2)returnt;知识点解析:(1)变量t存放公式的和,通过循环语句进行复合运算,因此此处应改为t-=1.O/i;,注意此处应进行变量的类型转换。(2)循环结束后应将和值返回给主函数。三、综合应用题(本题共1题,每题1.0分,共1分。)3、请编写函数fun,其功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为333333334444444455555555则一维数组中的内容应是:334455334455334455334455注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#includevoidfun(int(*s)[10],int*b,int*n,intmm,intnn){}main(){intw[10][10]={{33,33,33,33),{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0),n=0;printf("Thematrix:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",w[i][j]);printf("\n");}fun(w,a,&n,3,4);pr2ntf("TheAarray:\n");for(i=0;i标准答案:voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j知识点解析:题目要求实现将二维数组元素存入一维数组,需使用for循环语句来控制二维数组元素的下标,同时使用指针变量配合操作。可以用两个循环来处理问题,由于是按列的顺序取出,所以第1个循环用于控制列下标,第2个循环用于控制行下标。国家二级C++机试(操作题)模拟试卷第8套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为:Hello注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。#includevoidmain(){//********error********typedefBOOLbool;//********error********BOOLa=FALSE;inti=0X80000000;//********error********a=!i;if(a){cout<<"Hello"<标准答案:(1)typedefboolBOOL;(2)BOOLa=false;(3)a=(i!=0);知识点解析:(1)第1个标识下的“typedefBOOLbool;”。typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。一般形式应该是:typedef标准数据类型新的数据类型名,所以第1个标识下应该是“typedefboolBOOL:”。(2)C++中逻辑假的值应该是false而不是FALSE,所以这里修改为“BOOLa=false;”。(3)题目要求输出Hello,它要在“if(a)”为真的时候输出“Hello”。i的值为0X80000000,第3个标识下a=!i;语句中a的值为假。i!=0为真,所以修改为“a=(i!=0);”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)计算在n范围内,能被7和11整除的所有整数的和(包括n在内)。注意:不能修改程序的其他部分,只能补充sum()函数。#includedoublesum(intn){}voidmain(){cout<标准答案:intresult=0;for(inti=11;i<=n;i++){if((i%7==0)&&(i%11==0)){result+=i;}}returnresult;知识点解析:(1)利用循环查找能所有小于等于n的能被7和11整除的数,循环变量i从最小值11开始,到n结束,即11<=i<=n。(2)在函数中定义累加变量result用来保存求和结果,在循环体内,逐个判断每个i是否能被7和11整除,即(i%7=0)和(i%11==0)都满足的话,说明i能同时被7和11整除,将该值加到result上,循环结束返回result。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。其中:定义了类circle和column,column类由circle类protected派生,但是两个类的定义并不完整,请按照以下的要求,将程序补充完整。(1)定义类circle的保护数据成员函数r和area,它们都是double型的数据,请在注释//********1********后完成。(2)添加类circle的无参数的构造函数,使得类circle对象的r默认值为0,请在注释//********2********后完成。(3)添加派生类column的构造函数的定义,使得参数为double型的height和radius并将其分别赋给数据成员h和基类的r请在注释//********3********之后完成。(4)完成派生类column的成员函数print()的定义,请在注释//********4********之后完成,使得输出为:radius=5area=78.54height=10vol=785.4注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeconstdoublepi=3.1416;Classcircle{protected://********1********public://********2********{r=0.0;}circle(doubleradius){r=radius;}Voidprint(){area=r*r*pi;cout<<"radius="<标准答案:(1)添加语句:doubler,area;(2)添加语句:circle()(3)添加语句:column(doubleradius,doubleheight)(4)添加语句:cout<<”height="<知识点解析:(1)题目1要求“定义类circle的保护数据成员函数r和area,它们都是double型的数据”。保护成员与private和public一样是用来声明成员的访问权限的。在已有程序circle类中的protected:区域,添加变量r和area的定义,即“doubler,area;”。(2)题目2要求“添加类circle的无参数的构造函数,使得类circle对象的r默认值为0”。在C++中,构造函数是一种特殊的成员函数,它的名字与类同名,没有参数的构造函数一般形式为:构造函数名(),所以这里添加“circle()”。(3)题目3要求“添加派生类column的构造函数的定义”。同(2),另外带参数的构造函数的一般格式为:构造函数名(类型1形参1,类型2形参2,……),所以这里添加“column(doubleradius。doubleheight)”。(4)题目4要求“完成派生类column的成员函数print()的定义”。根据题干中输出结果,知道第一个输出值为height,第二个输出值为vol,即area*h,所以这里添加“cout<<"height="<国家二级C++机试(操作题)模拟试卷第9套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.epp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:1063022注意:错误的语句在//*****error******的下面,修改该语句即可。#includeclassCMyClass{private:intnumber;intAdd(inti){returnnumber+=i;}intSub(inti){returnnumber-=i;}intMul(inti){returnnumber*=i;)intDiv(inti){if(i!=0){returnnumber/=i;}elsereturnnumber;}//*****error******typedefint(FUNC)(int);//*****error*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年谢家集区数学三年级第一学期期末监测试题含解析
- 中专自我鉴定范文集合五篇
- 教学改革学期工作总结简短范文5篇模板
- 七年级生物下册 8.3人体概述教学实录 (新版)苏教版
- 第1课《消息二则》教学实录 2024-2025学年统编版语文八年级上册
- 电力公司实习报告集合六篇
- 九年级语文下册 第一单元 4《海燕》教学实录1 新人教版
- 2024六年级语文下册 第二单元 6 骑鹅旅行记(节选)教学实录 新人教版
- 大三学年自我鉴定15篇
- 2024-2025学年高中历史 第四单元 雅尔塔体系下的冷战与和平 第1课 两极格局的形成(1)教学教学实录 新人教版选修3
- 售后服务人员培训资料课件
- 禁止随地乱扔垃圾
- 期末 (试题) -2024-2025学年人教PEP版(2024)英语三年级上册
- 医学英语阅读二分册翻译及答案-参考
- 2025年高考政治时政热点 延迟退休政策(知识衔接+练习+解析)
- 2.1 网络改变世界 (教案) -2024-2025学年道德与法治八年级上册 统编版
- 常见病的健康管理学习通超星期末考试答案章节答案2024年
- 认识西红柿课件图片
- 国家开放大学《经济学(本)》形考任务1-6参考答案
- 汽车保险与理赔课件 7.2新能源汽车 查勘
- 装饰装修设备表
评论
0/150
提交评论