计算机二级C++操作题考试题库模拟卷七

考试难度:
1人已考
  • 卷面总分:100
  • 试卷类型:模拟试题
  • 测试费用: 免费
  • 关注人数:182
  • 作答时间:120分钟
  • 解析:
关闭
试卷简介:
本试卷是C++操作题考试题库试题,总分100分。
试题类型:
  • 基本操作题
  • 简单应用题
  • 综合应用题
试卷预览
  • 基本操作题
  • 简单应用题
  • 综合应用题
1
请打开考生文件夹下的解决方案文件proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR **** found **** ”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:This object is no.1注意:只修改注释“//ERROR **** found ****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include < iostream >using namespace std;class MyClass{public:MyClass():count(0) { cout << “This object is”; }//ERROR ******* found *******void Inc() const{ cout << “no.” << ++ count << endl; }private://ERROR ******* found *******int count=0;};int main (){MyClass *obj =new MyClass;//ERROR ******* found ********obj.Inc();return 0;}
2
请打开考生文件夹下的解决方案文件proj1,其中在编辑窗口内显示的主程序文件中定义有类ABC和主函数main。程序文本中位于每行“//ERROR **** found ****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是:21 23注意:只修改每个“// ERROR **** found ****”下面的一行,不要改动程序中的其他任何内容。#include < iostream >using namespace std;class ABC {public:// ERROR ******* found *******ABC() {a=0; b=0; c=0;}ABC(int aa, intbb, intcc);void Setab () { ++a,++b; }int Sum() { return a + b + c; }private:int a,b;const int c;};ABC:: ABC(int aa, int bb, int cc):c(cc) {a=aa; b=bb; }int main (){ABC x(1,2,3), y(4,5,6);ABC z,*w=&z;w -> Setab();//ERROR ******* found *******int s1= x.Sum() + y -> Sum ();cout << s1 << ‘’;//ERROR ******* found********int s2 = s1 + w. Sum();cout << s2 << endl;return 0;}
1
请打开考生文件夹下的解决方案文件proj2,此工程中含有一个源程序文件proj2.cpp。函数char * GetNum(char * src, char * buf)从src 开始扫描下一个数字字符序列,并将其作为一个字符串取出放入字符串空间buf中。函数返回扫描的终止位置,如果返回NULL表示没有扫描到数字字符序列。运行程序时,如果输入的一行字符序列是ABC012XYZ378MN274WS则输出为:Digit string 1 is 012Digit string 2 is 378Digit string 3 is 274注意:只在横线处编写适当代码,不要删除或移动“//**** found ****”。//proj2.cpp#include < iostream >using namespace std;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’;return src;}int main (){char str[100 ],digits[20];cin.getline(str,100);char *p=str;int i =1;while((p =GetNum(p, digits))!= NULL){cout << “Digit string” << i << “is” << digits << endl;// ******** found ********________;}return 0;}
2
请打开考生文件夹下的解决方案文件proj2,其中在编辑窗口内显示的主程序文件中定义有类Base和Derived,以及主函数main。程序文本中位于每行“//**** found ****”下面的一行内有一处或多处下画线标记,请在每个下画线标记处填写合适的内容,并删除下画线标记。经修改后运行程序,得到的输出应为:sum = 55。注意:只在横线处填写适当的代码,不要改动程序中的其他内容。#include < iostream >using namespace std;class Base{public:Base (int m1, int m2 ) {mem1 = m1; mem2 = m2;}int sum ( ) { return mem1 + mem2; }private:int mem1,mem2; //基类的数据成员};//派生类Derived从基类Base公有继承//********** found ***********class Derived: ________{public://构造函数声明Derived(int m1, int m2 , int m3);//sum函数定义,要求返回mem1、mem2和mem3之和// ********** found ***********int sum ( ) {return _______ + mem3;}private:nt mem3; //派生类本身的数据成员};//构造函数的类外定义,要求由m1和 m2分别初始化mem1和mem2,由m3初始化mem3//********** found **********________Derived ( int m1, int m2, int m3):// ********** found **********________,mem3 (m3) { }int main () {Base a (4,6);Derived b(10,15,20 );int sum = a.sum() + b.sum();cout << “sum =” << sum << endl;return 0;}
1
请打开考生文件夹下的解决方案文件proj3,该文件中定义了用于表示日期的类Date、表示人员的类Person和表示职员的类Staff;程序应当显示:张小丽 123456789012345但程序中有缺失部分,请按以下提示把缺失部分补充完整:(1)在“ //**1** **** found ****”的下方是析构函数定义中的语句,它释放两个指针成员所指向的动态空间。(2)在“// **2** **** found ****”的下方是rename函数中的一个语句,它使指针name指向申请到的足够容纳字符串new_name的空间。(3)在“// **3** **** found ****”的下方是构造函数定义的一个组成部分,其作用是利用参数表中前几个参数对基类Person进行初始化。注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“**** found ****”。填写的内容必须在一行中完成,否则评分将产生错误。//proj3.cpp#include < iostream >using namespace std;class Person{char * idcardno;//用动态空间存储的身份证号char * name; //用动态空间存储的姓名bool ismale; //性别:true 为男, false为女public:Person(const char * pid, const char * pname, bool pmale);~Person() {// ** 1 ** ******* found *******________;}const char * getIDCardNO ()const{ return idcardno; }const char * getName () const { return name; }void rename (const char * new_name);bool isMale()const{ return ismale;}};class Staff: public Person{char * department;double salary;public:Staff (const char * id_card_ no, const char * p_name, bool is _male, const char * dept, double sal);~Staff (){ delete [ ]department; }const char * getDepartment () const{ return department; }void setDepartment (const char *d);double getSalary()const{ return salary,* }void set Salary (double s) { salary =s; }};Person::Person(const char * id_card_no, const char * p_ name, bool is_male) :ismale (is_male){idcardno = new char[strlen (id_card_no)+1];strcpy (idcardno, id_card_no);name = new char[strlen (p_name) +1];strcpy(name,p_name);}void Person: : rename(const char * new_name){delete []name;// **2** ******* found *******________;strcpy(name,new_name);}Staff : : Staff(const char * id_card_no, const char * p_name, bool is_male,//**3** ******* found *******const char * dept, double sal):________{department =new char[strlen(dept) +1];strcpy(department,dept);salary=sal;}void Staff::setDepartment(const char * dept){delete [ ]department;department =new char[strlen(dept) +1];strcpy(department,dept);}int main (){Staff Zhangsan (“123456789012345”, “张三”, false, “人事部”, 1234.56);Zhangsan.rename(“张小丽”);cout << Zhangsan.getName() << Zhangsan.getIDCardNO() << endl;return 0;}
2
请打开考生文件夹下的解决方案文件proj3,其中包含主程序文件main.cpp和用户定义的头文件Array.h,整个程序包含有类Array的定义和主函数 main的定义。请把主程序文件中的Array类的成员函数Contrary ()的定义补充完整,经补充后运行程 序,得到的输出结果应该是:5 85,4,3,2,10,0,8.4,5.6,4.5,3.4,2.3,1.2注意:只允许在“// ******** 333 ********”和“// ********666 ********”之间填写内容,不允许修改其他任何地方的内容。//Array.h#include < iostream >using namespace std;template < class Type, int m >class Array { //数组类public:Array (Type b[ ], int mm) { //构造函数for (int i = 0 ; i﹤m; i ++ )if (i﹤mm) a[i]=b[i];else a[i]=0;}void Contrary ();//交换数组a中前后位置对称的元素的值int Length () const { return m; }//返回数组长度Type operator [ ] ( int i ) const {//下标运算符重载为成员函数if(i﹤0 || i﹥=m){ cout << “下标越界!” << endl; exit(1); }return a[i];}private:Type a[m];};void writeToFile (const char * );//不用考虑此语句的作用//main.cpp#include “Array.h”//交换数组a中前后位置对称的元素的值template < class Type,int m >void Array < Type, m > :: Contrary() { //补充函数体// ******** 333 ********// ******** 666 ********}int main() {int s1[5] = {1,2,3,4,5};double s2[6] ={1.2,2.3,3.4,4.5,5.6,8.4};Array < int, 5 > d1(s1, 5);Array d2(s2,6);int i;d1.Contrary ();d2.Contrary ();cout << d1.Length ()<< ‘’ << d2.Length() << endl;for (i =0; i﹤4; i++)cout< cout<< d1[4]<< endl;for (i = 0; i﹤7; i ++ )cout<< d2[i] << “,”;cout<< d2[7]<< endl;writeToFile (“”);//不用考虑此语句的作用return 0;}