国家二级C++机试(操作题)模拟试卷19(共25题)_第1页
国家二级C++机试(操作题)模拟试卷19(共25题)_第2页
国家二级C++机试(操作题)模拟试卷19(共25题)_第3页
国家二级C++机试(操作题)模拟试卷19(共25题)_第4页
国家二级C++机试(操作题)模拟试卷19(共25题)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C++机试(操作题)模拟试卷19(共9套)(共25题)国家二级C++机试(操作题)模拟试卷第1套一、基本操作题(本题共1题,每题1.0分,共1分。)1、下列给定程序中,函数fun的功能是计算下式并将计算结果作为函数值返回。例如,若形参e的值为1e一3,函数的返回值为2.985678。请在程序的中括号处填入正确的内容并将中括号删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includedoub2efun(doublee){inti;doubles,x;/*********found*********/s=0;i=【1】;x=1.0;while(x>e){/*********found*********/【2】;/*********found*********/x=(2.0*i一1)/((【3】)*(2.0*i));s=s+x;}returns;}main(){doublee=1e一3;printf("\nTheresultis:%f\n",fun(e));}标准答案:(1)0(2)i++或++i或i+=1或i=i+1(3)2.0*i知识点解析:填空1:循环变量i从1开始参加运算,但是在每次循环的开始i都进行自加1操作,故i应赋初值为0。填空2:循环变量i自增1运算。填空3:根据公式确定表达式通项。注意x为double型,故应将i变为double型再进行运算。二、简单应用题(本题共1题,每题1.0分,共1分。)2、下列给定程序中,函数fun的功能是:先从键盘上输入一个3行、3列的矩阵的各个元素的值,然后输出主对角线元素之和。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includevoidfun(){inta[3][3],sum;inti,j;/*********found*********/sum=1;for(i=0;i<3;i++){for(j=0;j<3;j++)/*********found*********/scanf("%d",a[i][J]);}for(i=0;i<3;i++)sum=sum+a[i][i];printf("Sum=%d\n",sum);}voidmain(){fun();}标准答案:(1)sum=0;(2)scanf("%d.t,&a[i][j]);知识点解析:该题考查对循环语句的掌握和对数组概念的理解。本题的解题思路为:先从键盘输入一个3×3矩阵,然后循环累加,执行循环语句中的sum=sum+a[i][i];。因为变量sum用来存放累加后的结果,所以应对其初始化为0。第二处错误考查标准输入函数scanf的格式,被赋值的变量前要加上取地址符"&"。三、综合应用题(本题共1题,每题1.0分,共1分。)3、编写函数fun,其功能是:将ss所指字符串中所有下标为奇数位上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include#include#includevoidfun(char*ss){}voidmain(void){chartt[51];printf("\nPleaseenterancharacterstringwithin50characters:\n");gets(tt);printf("\n\nAfterchanging,thestring\n%s",tt);fun(tt);printf("\nbecomes\n%s",tt);}标准答案:voidfun(char*ss){inti;for(i=0;ss[i]!=’\0’;i++)/*将ss所指字符串中所有下标为奇数位置的字母转换为大写*/if(i%2==1&&ss[i]>=’a’&&ss[i]<=’z’)ss[i]=ss[i]一32;}知识点解析:将指定字符串中奇数位置的字母转换为大写,首先需要判断奇数位置,再判断该位置字符是不是小写字母,如果是小写字母,则将小写字母转换为大写字母。字母大小写转换操作中,只要将小写字母减去32即可转换为大写字母。国家二级C++机试(操作题)模拟试卷第2套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果是:112233445566778899注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。#include<iostream.h>#include<iomanip.h>voidmain(){inta[3][3]={{1,2,3),{4,5,6},{7,8,9}};int*p,i;//********error********p=a;for(i=0;i<9;i++){cout<<setw(2)<<*(p+i);//********error********cout<<setw(2)<<*(a+i);if(i%3==2)cout<<endl;}}标准答案:(1)p=&a[0][0];(2)tout<<setw(2)<<*(*a+i);知识点解析:(1)打开modi1.cpp,调试程序,显示错误提示为第一标识下“modil.cpp(7):errorC2440:’=’:cannotconvertfrom’int[3][3]’to’int*’”,a为二维数组型变量,将其值赋值给p,应该是p指向数组a的起始位置,即“p=&a[0][0];”。(2)程序中第2个标识下的“cout<<setw(2)<<*(a+i);”语句应该是输出数组a中元素的值,而该语句是*(a+i)指向数组第i个位置,要指向其值应该是*(*a+i),所以第2个标识下的语句改为“cout<<setw(2<<*(*a+i):”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成空出的函数fun(inta[],int*index),使函数输入n(<100)个整数到指定数组,求该数组中最大元素的值和此元素的下标,最大元素值以函数值返回,此元素的下标通过指针形参带回调用函数。要求函数实现以下的功能:(1)获得输入的n个整数;(2)把最大的数字的下标在第二个参数中输出;(3)把最大的数字作为返回值。注意:不能修改程序的其他部分,只能修改fun()函数。#include<iostream.h>#defineMAXLINE100intfun(inta[],int*index){}voidmain(){intA[MAXLINE];intindex;intmaxdata;maxdata=fun(A,&index);cout<<"themaxdatais:"<<maxdata<<""<<"theposionis:"<<index<<endl;return;}标准答案:inti,n;do//输入数组的大小{cout<<"Pleaseinputn\";cin>>n;}while(n>99);tout<<"Pleaseinputa[n]\n";for(i=0;i<n;i++)//输入数组中元素的值{cin>>a[i];}*index=0;//元素下标值初始化for(i=1;i<n;i++)//循环找出最大值{if(a[*index]<a[i])*index=i;//记录比较大元素的下标}returna[*index];//返回最大的元素值,其中index为最大值的下标知识点解析:(1)首先输入数组大小,然后利用循环输入数组元素。(2)利用for循环对每一个当前数组元素与index标记的元素进行大小比较。(3)循环中将求得的最大数据a[i]的下标标志位赋给标志位index。三、综合应用题(本题共1题,每题1.0分,共1分。)3、用VC6打开考生文件夹下的源程序文件modi.3.cpp。其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整。在屏幕和程序modi3.txt文件中输出以下结果:HelloTest出现异常情况其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整:(1)以追加的方式打开文件modi3.txt,请在注释//********1********后添加适当的语句。(2)定义一个类对象S,请在注释//********2********后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#include<iostream.h>#include<fstream>usingnamespacestd;voidWriteFile(char*x){ofstreamout1;//********1********out1.open("modi3.txt",);out1<<x<<’’;out1.close();}voidClearFile(){ofstreamout1;out1.open("modi3.txt");out1.close();}classTestClass{public:TestClasS(){cout<<"Hello"<<endl;WriteFile("Hello");}~TestClasS(){cout<<"Test"<<endl;WriteFile("Test");}};voidmain(){ClearFile();try{//********2********throw1;}catch(int){cout<<"出现异常情况"<<endl;WriteFile("出现异常情况");}}标准答案:(1)将“out1.open("modi3.txt",);”补充完整为:out1.open("modi3.txt",ios_base::app);(2)添加语句:TestClasss;知识点解析:(1)题目1要求“以追加的方式打开文件modi3.txt”。文件输出输入方式的设置值,以ios::app方式是以输出方式打开文件,写入的数据添加在文件末尾,即第1个标识下语句补全为“out1.open("modi3.txt",iosbase::app);”。(2)题目2要求“定义一个类对象s”。C++中,在声明了类类型后,定义对象的一般形式:类名对象名。所以这里添加“TestClasss;”。国家二级C++机试(操作题)模拟试卷第3套一、简单应用题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是在n行n列的矩阵中,每行都有最大的数,本程序求这n个最大数中的最小一个,并作为参数返回。注意:不能修改程序的其他部分,只能修改fun()函数。#include#defineN100inta[N][N];intfun(intn){}voidmain(){intn;cout<<“pleaseinputN:”<>n;for(inti=0;i>a[i][j];}cout<<“Theminofmaxnumbersis”<标准答案:introw;intmax;intmin;intcol;for(row=0;row知识点解析:(1)该程序功能是找出矩阵中所有行最大的数中的最小一个。它的解题思路,首先找出每一行的最大值,然后在这些值中进行比较,找出其中的最小值。(2)从己给部分源程序的main主函数开始入手,核心函数intfun(intn)中的n参数为矩阵中的列和行数。二、综合应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义类的私有变量a、b,请在注释∥********1********后添加适当的语句。(2)完成类的构造函数,对变量a、b赋值,缺省两个变量值为1,在注释∥********2********之后添加语句。(3)完成打印函数display(),打印出“a*b=c”格式的一个乘法算式,在注释∥********3********之后添加语句。(4)补充主函数,使得打印9×9的乘法口诀。在注释∥********4********后添加语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeclassCMyFormula{private:∥********1********public:∥********2********{this->a=a;this一>b=b;}voidset(intX,intY){a=x;b=y;}voiddisplay(){∥********3********}};intmain(){CMyFormulaformular(1,1);for(inti=1;i<=9;i++){∥********4********for(intj=1;j++){formular.set(j,i);formular.display();cout<<“”;}cout<标准答案:(1)添加语句:inta,b;(2)添加语句:CMyFormula(inta=l,int,b=1)(3)添加语句:cout<知识点解析:程序当中定义了类CMyFormula,含有a和b两个成员变量,一个构造函数,改变成员变量a和b的值得set(intx,inty)函数,打印a和b的乘积的display()函数。在主函数中定义了一个CMyFormula对象,然后不断改变该对象的a和b的值,然后调用display()显示,如此完成打印9×9的乘法口诀。国家二级C++机试(操作题)模拟试卷第4套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果是:nember=1nember=10nember=100注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。#includeClassTestClass{public:TestClass(inti){nember=i;}voidSetNember(intm){nember=m;}intGetNember()const{returnnember;}voidPrint()const{cout<<"nember="<标准答案:(1)TestClassobj1(1);(2)obj1.SetNember(10);(3)obj2.SetNember(100);知识点解析:(1)第1个标识下,“TestClassobj1;”语句是声明TestClass类的对象obj1,根据TestClass类构造函数的定义TestClass(inti),存在整型参数,并且题目要求第一个输出结果为1,所以补全参数1,即第1个标识下的“TestClassobj1(1);”。(2)第2个标识下的“obj1.nember=10;”应该是调用成员函数SetNember赋值。在C++中成员函数的使用形式应该是:对象名.成员函数,所以修改为“obj1.SetNember(10);”。(3)类是对象的抽象,而对象是类的具体实例。第3个标识下“TestClass.SetNember(100);”语句中的TestClass为类,并不是对象,这里应该是使用定义的对象,即obj2,修改为“obj2.SetNember(100);”。二、简单应用题(本题共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。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)完成类TestClass1的成员函数seta定义,定义seta对象x为int类型,请在注释//********1********后添加适当的语句。(2)完成类TestClass1(共有)和类TestClass2(私有)派生类TestClass3的定义,请在注释//********2********后添加适当的语句。(3)定义类TestClass3中的私有成员C为int,请在注释//********3********后添加适当的语句。(4)完成setc中对基类的变量a的赋值,请在注释//********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeclassTestClass1{inta;public://********1********{returna=x;}voidshowa(){cout<标准答案:(1)添加语句:intseta(intx)(2)添加语句:classTestClass3:publicTestClass1,privateTestClass2(3)添加语句:intc;(4)添加语句:seta(x);知识点解析:(1)题目1要求“完成类TestClass1的成员函数seta定义,定义seta对象X为int类型”。类的成员函数是函数的一种,它与一般函数的区别只是,它是一个类的成员,出现在类体中。所以类TestClassl中的成员函数,就是在TestClassl中定义题目中要求的参数为intx的seta函数,即“intseta(intx)”。(2)题目2要求“完成类TestClass1(公有)和类TestClass2(私有)派生类TestClass3的定义”。从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为:class派生类名:[继承方式】基类名。根据声明派生类的一般形式,这里补全“classTestClass3:publicTestClass1,privateTestClass2”。(3)题目3要求“定义类TestClass3中的私有成员c为int”。在类TestClass3中的pfivme数据成员区域,定义intc,即在第3个标识下补全“intc:”。(4)题目4要求“完成setc中对基类的变量a的赋值"。基类为TestClass1,setc对于该类a的赋值,是hatseta(intx)函数的赋值,即“seta(x);”国家二级C++机试(操作题)模拟试卷第5套一、基本操作题(本题共1题,每题1.0分,共1分。)1、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1。其中有线段类Line的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是:Endpoint1=(1,8),Endpoint2=(5,2),lenth=7.2111。注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#include#includeusingnamespacestd;classLine;doublelength(Line),classLine{//线段类doublex1,y1;//线段端点1doublex2,y2;//线段端点2public://ERROR********found********Line(doublex1,doubley1,doublex2,doubley2)const{this->x1=x1;this->y1=y1;this->x2=x2;this->y2=y2;}doubleqetX1()const{returnx1;}doublegetY1()const{returny1;}doubleqetX2()const{returnx2;}doublegetY2()const{returny2;}voidshow()const{cout<<"Endpoint1=("<标准答案:(1)Line(doublex1,doubley1,doublex2,doubley2){(2)tout<<"),length="<知识点解析:(1)主要考查考生对构造函数的掌握,构造函数要给私有成员赋初始值,因此不能使用const来限制。(2)主要考查考生对this指针的掌握,由函数length的声明doublelength(Line);可知,length函数的形参是Line类,在voidshow()const函数里,this指针指向的是当前Line类,因此可以用*this表示当前Line类。(3)主要考查考生对成员函数的掌握,length函数是类外函数,不能直接调用类的私有成员,因此要通过成员函数取得对应的值。二、简单应用题(本题共1题,每题1.0分,共1分。)2、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中定义了Component类、Composite类和Leaf类。Component是抽象基类,Composite和Leaf是Component的公有派生类。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:LeafNode注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。#includeusingnamespacestd;classComponent{public://声明纯虚函数print()//********found********};classComposite:publicComponent{public://********found********voidsetChiid(__________){m_chiid=chiid;}virtualvoidprint()const{m_child->print();}private:Component*mchiid;};classLeaf:publicComponent{public:virtualvoidprint()const{//**********found**********}};intmain(){Leafnode;Compositecomp;comp.setChiid(&node);Component*p=&comp;p->print();return0;}标准答案:(1)virtualvoidprint()const=0;(2)Component*child(3)cout<<"LealfNode"<知识点解析:(1)主要考查考生对纯虚函数的掌握,题目要求声明纯虚函数print()。在其派生类中print()函数的定义为virtualvoidprint()const,由此可知纯虚函数为virtualvoidprint()const=0。(2)主要考查考生对成员函数的掌握,题目要求填写函数voidsetChild的形参,由setChild的函数体可知形参为child,再看类的私有成员m_child的定义:Component*m_child;。由此可知形参为:Component*child。(3)主要考查考生对纯虚函数的掌握,先看主函数的程序:Leafnode;Compositecomp;comp.setChild(&node);Component*p=&comp;p->print();第一条和第二条语句都是定义语句,第三条语句调用函数setChild,由setChild函数的定义可知,comp中的m_child等于node,第四条语句定义了个指针p指向comp的地址,也就是node,最后一条语句通过指针p调用函数print,也就是调用类Leaf的函数print,因为题目要求输出:LeafNode,因此在这里添加语句:cout<<"LeafNode"<三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹proj3下的工程proj3,其中定义了一个字符串变量类StringVar。类成员的说明在程序注释中。请在//**********333**********和//*****666*****之间填写StringVar成员函数和友元函数的实现代码。在main函数中给出了一组测试数据,运行时输入:HelloKitty此情况下程序的输出应该是:HelloKittyBorgBorg注意:只需在//**********333**********和//**********666**********之间填入所编写的若干语句,不要改动程序中的其他内容。//StringVar.h#include#include#include#includeusingnamespacestd;voidwriteToFile(constchar*path);classStringVar{public:StringVar(intsize);//构造函数,size为字符串长度(字符个数)初始值;字符串内容初始化为空串StringVar(constchara[]);//构造函数,用参数数组a的内容初始化当前对象StringVar(constStringVar&strobj);//复制构造函数~StringVar(){delete[]value;);//析构函数intlength()const{returnstrlen(value);}//从输入流ins输入一个字符串,其中可以包括空格voidinputline(istream&ins);//返回字符串首地址char*getValue()const{returnvalue;}private:char*value;//字符串首地址intmax_length;//字符串最大长度(字符个数最大值)};//将the_string通过输出流outs输出ostream&operator<<(ostream&outs,constStringVarthe_string);//main.cpp#include#include#include"StringVar.h"//**********333**********//**********666**********intmain(){StringVarname1(30),name2("Borg");namel.input_line(cin);StringVarname3(name2);cout<#include#include#includeusingnamespacestd;#include"StringVar.h"voidwriteToFile(constchar*path){charfilename[30];strcpy(filename,path);strcat(filename,"out.dat");ofstreamfout(filename);istringstreamis(string("JennyZheng"));StringVarnamel(40),name2("John");namel.inputline(is);StringVarname3(name2);fout<标准答案:StringVar::StringVar(intsize):maxlength(size)//使用成员初始化列表初始化max_length{value=newchar[size];value[0]=‘\0’;}StringVar::StringVar(constchara[]){max_length=strlen(a)+1;value=newchar[maxlength];Strcpy(value,a);}StringVar::StringVar(constStringVar&strobj){max_length=strobj.max_length;value=newchar[strlen(strobj.value)+1];strcpy(value,strobj.value);}voidStringVar::inputline(istream&ins){inti=0;charch;while(i知识点解析:由StringVar.h这个头文件可知:头文件中定义了StringVar类,它包含的成员信息如下:两个数据成员:char*类型的value,指向字符串的首地址;int类型的max_length,表示字符串的最大长度。两个构造函数:接收int类型的构造函数和接收constchara[]的构造函数。一个复制构造函数:用参数strobj对象的成员值给当前对象的成员赋值;析构函数:使用delete[]释放value指向的地址空间;length()成员函数:返回成员value指向的字符串长度;input_line()成员函数:使用输入流参数输入一个字符串,保存到value指向的内存空间;getValue()成员函数:常成员函数,返回value的值。另外类定义体外部还声明一个重载“<<”运算符函数,将StringVar对象中value指向的字符串输出,:并返回输出流outs的引用StringVar.h中,已经给出的定义有:析构函数、length()函数和getValue()函数,所以需要我们完成的函数定义有:构造函数、复制构造函数、input_line()函数和重载的“<<”运算符函数①StringVar(intsize);题意指出,size为字符串长度(字符个数)初始值,字符串内容初始化为空串,所以需要使用size设置成员max—length,为value申请size个字符的存储空间,并把value的第一个字符设置为’\0’表示空串,这样保证析构函数的delete[]也是正确的。②StringVar(constchara[]);题意指出,使用参数数组a的内容初始化对象的成员,即将数组a中的内容,存放到value指向的内存空间,由于value是使用new分配的(保证析构函数的delete[]是正确的),所以不能简单的把数组a的首地址赋给value,需要将数组a的内容复制到value指向的内存空间中,另外成员max_length,初值最小必须是value指向的内存空间长度,即value指向的字符串长度+1(题意中max_length表示字符个数的最大值,所以需要包含字符串结束符’\0’)(此构造函数的形参必须传人的是字符串,如果是字符数组,必须传入数组的长度,以防数组a的最后一个字符不是结束符’\0’,此时strlen()函数获取的长度,就不是字符数组a的字符个数)③StringVar(constStringVar&strobj);复制构造函数需要将形参strobj的成员赋给当前调用该复制构造函数的对象成员,在赋值value时,同样需要为value分配足够的内存空间。④inputjine(istream&ins);input_line()函数需要使用形参ins输入流,输入一个字符串存放到value中,题意要求可以输入空格,所以我们不能直接用输入流ins和输入运算符,因为输入运算符会丢弃空白符、空格符和制表符,可以使用输入流ins的成员函数:get()和while循环,逐个输入字符存放到value下标i的字符中,直到输入的字符为换行符或value存满(i=max_length)为止,当这两个条件满足其一,那么就应该停止输入,另外需要注意:value指向的字符串结尾,必须包含空字符’\0’,所以下标max_length-1必须是空字符,循环输入时,i取值最大为max_length-2。⑤ostream&operator<<(ostream&outs,constStringVarthe_string);输出运算符重载函数,题意要求将the_string通过输出流outs输出,由于the_string是StringVar对象,所以输出的应该是对象的成员value指向的字符串,根据返回值可知,函数必须返回输入流ostream的引用;另外由于第一形参是输入流outs,所以无法通过StringVar对象来调用,该函数不是类的成员函数,函数定义时,不能限定StringVar作用域,由于该函数不是类的成员函数,所以使用输出流outs输出value指向的字符串时,不能直接使用私有成员value,而是应该使用getValue()公有成员函数,返回value的值,再输出。国家二级C++机试(操作题)模拟试卷第6套一、基本操作题(本题共1题,每题1.0分,共1分。)1、下列给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加反向对角线元素中的值。例如,若N=3,有下列矩阵:123456789首先累加1、5、9,然后累加3、5、7,函数返回值为30。请在程序的中括号处填入正确的内容并将中括号删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include#defitieN4fun(intt[][N],intn){inti,sum;/*********found*********/【1】;for(i=0;i标准答案:(1)sunl=0(2)t[i][i](3)1知识点解析:填空1:变量SHill用来储存“和”结果,所以将其初始化为0。填空2:从题目中可以了解到,主对角线元素的行和列下标是相同的,所以应填入t[i][i]。填空3:对于反向对角线元素的行和列的下标,它们的关系是相加和为n—1,所以应填入1。二、简单应用题(本题共1题,每题1.0分,共1分。)2、下列给定程序中,函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(如“Z”转化为“A”,“z”转化为“a”),其他字符不变。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#include#includevoidfun(char*s){/*********found*********/while(*s!=’@’){if(*s>=’A’&&*s<=’Z’||*s>=’a’&&*s<=’z’){if(*s==’Z’)*s=’A’;elseif(*s=’z’)*s=’a’;else*s+=1;}/*********found*********/(*s)++;}}voidmain(){chars[80];system("CLS");printf("\nEnterastringwithlength<80:\n\n");gets(s);printf("\nThestring:\n\n");puts(s);fun(s);printf("\n、nTheCords:\n\n");puts(s);}标准答案:(1)while(*s)或while(*s!=’\0’)(2)s++;知识点解析:(1)通过wh儿e语句可对字符串所有字符进行遍历,循环条件是对当前字符进行判断,若当前字符不是字符串结尾,则对其进行其他操作。(2)因为该循环通过指针s的移动遍历字符串,所以每循环一次要使指针向后移动一个位置,而不是将指针所指的元素加1。三、综合应用题(本题共1题,每题1.0分,共1分。)3、编写函数intfun(intlim,intaa[MAX]),其功能是求出小于或等于lim的所有素数并放在aa数组中,并返回所求出的素数的个数。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容.仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include#include#include#defineMAX100intfun(intlim,intaa[MAx]){}voidmain(){FILE*wf;intlimit,i,sum;intaa[NAX];system("CLS");printf("输入一个整数:");Scanf("%d",&limit);sum=fun(limit,aa);for(i=0;i标准答案:intfun(intlim,intaa[MAX]){inti,j,k=0;for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素数*/{for(j=2;j=i)aa[k++]=i;/*将求出的素数放入数组aa中木/}returnk;/*返回所求出的素数的个数*/}知识点解析:本程序如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根。使用for循环语句查找小于lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法:for(j=2;j国家二级C++机试(操作题)模拟试卷第7套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序的执行结果为:1234543211234321123211211注意:错误的语句在∥********error********的下面,修改该语句即可。#include#includevoidmain(){inti,j,k;for(i=5;i>=lji一一){∥********error********for(j=1;j<=i;J++)cout<<“”:∥********error********for(k=1;k>=i;k++)cout(0;k++)cout<标准答案:(1)for(j=1;j<=5一i;J++)(2)for(k=1;k<=i;k++)(3)for(k=i一1;k>0;k一一)知识点解析:暂无解析二、简单应用题(本题共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//注意只能使用int类型,不能类型转换intfun(char*S1,char*s2){)voidmain(){chars1[1024];chars2[256];cout<<“pleaseinputastring:”<标准答案:intsize=0;//初始化字符串统计变量个数intsllen;ints2len;for(sllen=0;s1[sllen]!=0;sllen++);//第一个字符串循环for(s21en=0;s2[s21en]!=0;s21en++);//第二个字符串循环for(inti=0;i知识点解析:(1)该程序功能是计算s1中出现s2的个数。它的解题思路是两个字符串逐个比较其中的字符,从而统计符合的字符串个数。(2)从已给部分源程序的main主函数开始入手,核心函数intfun(char*sl,char*s2)中的s1,s2参数为输入的字符串。解题思路(1)size变量用来存放s1中出现s2的个数,初始值赋为0。(2)然后利用for循环对s2中的每一个字符与s1中的字符进行比较。(3)如果循环中有符合条件的字符串,就将变量size个数加1。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使得程序输出21到屏幕。完成以下功能:(1)增加静态私有变量mNumber,类型为int,请在注释∥********1********后添加适当的语句。(2)增加静态变量mNumber并初始化为10,请在注释∥********2********后添加适当的语句。(3)完成静态函数get的定义,请在注释∥********3********后添加适当的语句。(4)完成对象obj对静态函数get的调用,使得输出2l到屏幕上,请在注释∥********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#lncludeC1assTestClass{∥********1********intmOther;public:TestClass(inti){mOther=i;}∥********3********{returnm—Number+obj一>m_Other;}},∥********2********intmain(){TestClassobj(11);∥********4********cout<<<标准答案:(1)添加语句:staticintmNumber;(2)添加语句:intTestClass::mNumber=10;(3)添加语句:staticintget(TestClass*obj)(4)将“cout<<<知识点解析:暂无解析国家二级C++机试(操作题)模拟试卷第8套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并且使程序输出的结果为:a=7,b=0a=8,b=10注意:错误的语句在∥********error********的下面,修改该语句即可。#includeclasscobj{public:∥********error********friendvoidfunc(CObj&,int,int);voiddisplay(){∥********error********cout<<¨a=¨<标准答案:(1)添加语句:friendvoidfunc(CObj&,int);(2)cout<<“a=lI<知识点解析:(1)标识1处是声明一个友元函数,友元函数是在类声明中由关键字friend修饰的非成员函数,由friendvoidfunc(CObj&,int,int)可知,函数func0是CObj类的友元,由程序后面的具体实现可知该函数重载了,已经声明了友元函数friendvoidfunc(CObj&,int,int),另外一个友元函数func(CObj&obj,intt)没有声明,因此第1个标识下应添加“friendvoidfunc(CObj&,int);”。(2)display()函数打印类成员变量a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<<<<”不正确,第2个标识下应改为“cout<<“a=”<<对象名>(<参数表>);,对象声明语句是一个完整的语句,应该以“:”结尾,因此第3个标识下应改为“CObjobjl;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数DecToBin(char*des,intn)的功能是将十进制数据n转换成二进制数据,并将转换结果存放在des中。如:120的二进制数据为1111000例:DecToBin(char*des,120);cout<#defineMAXLEN1024voidDecToBin(char*des,intn){}voidmain(){chardes[MAXLEN];intn=120;DecToBin(des,n);cout<标准答案:intj,i=0;chartemp;while(n!=0){des[i]=n%2+’0’;n=n/2;i++;}//转化结果为2进制最高位在des的下标最低处,顺序刚好反了des[i]=NULL;for(j=o;j知识点解析:(1)本题为将十进制数转换成二进制数,因此采用除2求余法,通过该方法最终可以将一个十进制数转换成一个只包含1和0的数组。(2)除2求余法得到的是0和1的数值,不是“0”和“1”字符,还需将数字转化成字符,0和1通过加上“0”的ASCII码便可得到0和1的ASCII码字符。(3)因为除2求余法得到的字符数组是从低位到高位保存的,因此需要先倒序后再输出,可利用循环方式将顺序调转过来。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义私有常量PI,请在注释∥********1********后添加适当的语句。(2)完成类的私有常量PI的赋值,以及完成对半径radius的赋值。请在注释∥********2********后添加适当的语句。(3)完成计算圆面积的函数GetArea()。请在注释∥********3********后添加适当的语句。(4)完成计算圆周长的函数GetGirth()。请在注释∥********4********后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include#defineCONSTpI3.141592C1assCCircle{private:doubleradius;∥********1********public:∥********2********CCircle(intradius){this一>radius=radius;)doubleGetArea(){∥********3********}doubleGetGirth(){∥********4********}voidsetRadius(intm){radius=m;}};intmain(){CCircleCircle(5);cout<标准答案:(1)添加语句:constdoublePI;(2)将“CCircle(intradius)”补充完整为:CCircle(intradius).PI(CONST—PI)(3)添加语句:returnradius*radius*PI;(4)添加语句:return2*radius*PI;知识点解析:(1)第1个标识下定义私有常量PI,常数据成员是使用const说明的数据成员,因此第1个标识下应添加“constdoublePI;”0(2)常数据成员的初始化只能通过构造函数的成员初始化列表进行,构造函数CCircle(intradius)应对常数据成员PI进行初始化,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论