




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C++)笔试模拟试卷26(共9套)(共426题)国家二级(C++)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、在一个长度为n的线性表中删除一个元素,最坏情况下需要移动的数据元素数目为()。A、1B、n-1C、n+1D、n/2标准答案:2知识点解析:在一般情况下,要删除第i个元素时,首先是从第i+1个元素开始,直到第n个元素之间共n-i个元素依次向前移动一个位置,删除结束后,线性表的长度减1。最坏情况指的是删除线性表的第一个元素,则需要移动表中第1个元素以外所有的元素,答案为B。2、下列叙述中,正确的是()。A、入栈运算只需将新元素插到栈顶指针指向的位置B、出栈运算只需将栈顶元素赋给一个指定变量C、出栈运算与读栈顶元素是相同的操作D、读栈顶元素不删除栈顶元素标准答案:8知识点解析:入栈运算需先将栈顶指针加1,然后将新元素插到栈顶指针指向的位置,选项A是错误的。出栈运算需将栈顶元素赋给一个指定变量,然后将栈顶指针减1,选项B是错误的。出栈运算与读栈顶元素不同之处在于读栈顶元素不删除栈顶元素。答案是选项D。3、在一个单链表HL中,若要向表头插入一个由指针p指向的节点,则需要执行语句序列()。A、HL=p;p->next=HL;B、p->next=HL;HL=p;C、p->next=HL;p=HL;D、p->next=HL->next;HL->next=p标准答案:2知识点解析:HL为链表的头指针。HL指示链表中第一个节点的存储位置,在表头插入一个由指针p指向的节点后,头指针指向p,p的指针域指向原链表中第一个节点4、已知二叉树的前序序列为ABDCEFG,中序序列为DBCAFEG,则其后序序列为()。A、DCBAFGEB、DCBFGEAC、DCBFEGAD、DCBGFEA标准答案:2知识点解析:本题先可用排除法,由二叉树的前序序列为ABDCEFG可知:二叉树的根节点为A,因此选项A错误。通过分析可知,B、E是A的左右子节点,D、C是B的左右子节点,F、G是E的左右子节点。5、一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。A、38,40,46,56,79,84B、40,38,46,79,56,84C、40,38,46,56,79,84D、40,38,46,84,56,79标准答案:2知识点解析:快速排序的思想是:从线性表中选取一元素,如本题中的46,将线性表后面小于46的元素移到前边,而前面大于46的元素移到后边。本题中46是第一个元素,因此只需将线性表后面小于46的元素移到前边。6、下列关于严格控制goto语句使用的理解中,错误的是()。A、用一个非结构化的程序设计语言实现一个结构化的构造B、若不使用goto语句会使功能模糊C、在某种可以改善而不是损害程序可读性的情况下D、goto语句可以完全不用标准答案:8知识点解析:goto语句会造成程序的混乱,但在某些地方goto语句还是需要的,若不使用goto语句会使功能模糊。7、下面不属于软件设计原则的是()。A、抽象B、模块化C、自底向上D、信息隐蔽标准答案:4知识点解析:在软件开发过程中,必须遵循软件工程的基本原则。这些原则使用于所有软件项目。这些基本原则包括:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性。选项C是错误的,它是一种软件开发的方法,而不属于软件工程的基本原则。8、规范化理论中消除其中多余的数据相关性是靠分解()。A、关系运算B、内模式C、外模式D、视图标准答案:1知识点解析:本题考核数据库规范化理论。数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。9、常用的关系运算是关系代数和()。A、集合代数B、逻辑演算C、关系演算D、字段标准答案:4知识点解析:本题考核关系代数运算。关系运算包括关系代数和关系演算。10、源程序中应包含一些内部文档,以帮助阅读和理解源程序,源程序的内部文档通常包括选择合适的标识符、注解和()。A、程序的视觉组织B、尽量不用或少用GOTO语句C、检查输入数据的有效性D、设计良好的输出报表标准答案:1知识点解析:源程序文档化主要包括3个方面的内容:标识符的命名、程序中添加注释以及程序的视觉组织。二、选择题(本题共20题,每题1.0分,共20分。)11、下列关于类概念的描述中,错误的是()。A、类是抽象数据类型的实现B、类是具有共同行为的若干对象的统一描述体C、类是创建对象的模板D、类就是C语言中的结构类型标准答案:8知识点解析:类是创建对象的模板,它包含着所创建对象的状态描述和方法的定义。类的完整描述包含了外部接口和内部算法以及数据结构的形式。12、字符串常量"hello"的字符个数是()。A、3B、4C、5D、6标准答案:8知识点解析:本题考核的是字符串常量这个知识点。字符串常量实际上是一个数组,组成数据的字符除显式给出的外,还包括字符结尾处标识字符串结束的符号’\0’。所以字符串的字符个数等于字符个数加1,C++语言编译器会自动在字符串的末尾加上’\0’,作为字符串结束标识。故本题答案选项是:D。13、“or(intx=0,y=0;!x&&y<=5;y++)”语句执行循环的次数是()。A、0B、5C、6D、无数次标准答案:4知识点解析:此题是典型的考题。题中x=0,则!x永远为真,对于条件表达式“!x&&y<=5”只考虑“y<=5”,由于每次循环y都增加1,而且y从0开始到5。所以可知,总共循环了6次。14、有如下程序段,请指出”p所代表的是()。int**p,*s,k=20;S=&k;p=&s;A、sB、&kC、*pD、k标准答案:8知识点解析:在程序中,指针变量p是int类型的指针类型。从程序中可看出:①赋值语句“s=&k;”,使s指向k,即s的值为k在内存中地址,*s代表k的值;②赋值语句“p=&s;”,使p指向s,*p代表s中的值,即k在内存中的地址:③因为*p代表s中的值,即k在内存中的地址,所以“p代表的是k的值20。15、在函数声明中,下面哪项是不必要的()。A、函数参数的类型和参数名B、函数名C、函数的类型D、函数体标准答案:8知识点解析:本题考核函数的原型声明格式。解析此题时,要注意函数定义和函数声明的区别。①C++中每一个函数的定义都是由4个部分组成的,即函数类型、函数名、函数参数表和函数体。②函数的声明是为了消除函数定义的位置影响。不管函数是在何处定义的,只要在调用前进行函数的声明,就可保证函数调用的合法性。③函数原型的说明格式为:<类型><函数名>(<形参表>);16、若有以下函数调用语句:f(m+n,x+y,f(m+n,z,(x,y)));在此函数调用语句中实参的个数是()。A、6B、5C、4D、3标准答案:8知识点解析:本题考察对函数参数表的掌握程度。调用函数时,在函数名后面跟参数,参数用逗号隔开。调用时,实参与形参的个数相等,类型一致,且按顺序一一对应传递数据,同时实参是实际调用函数时所给定的有确定值的常量、变量或表达式。根据以上知识点,可以得到此函数调用语句中实参的个数是3。故本题答案是:D。17、下列关于类和对象描述中,错误的是()。A、对象(Object)是现实世界中的客观事物,对象具有确定的属性B、类是具有相同属性和行为的一组对象的集合C、对象是类的抽象,类是对象的实例D、类是对象的抽象,对象是类的实例标准答案:4知识点解析:C++中,类是用户自定义的一种数据类型,对象是类的实例,类定义了属于该类的所有对象的共同特性。一个类作为一种数据类型,它可以定义多个对象。18、下面关于继承机制的描述中,不正确的是()。A、派生类不仅可以继承基类的成员,也可以添加自己的成员B、设置protected成员是为派生类访问基类成员之用C、采用不同的继承方式,将限制派生类对基类成员的访问D、采用私有继承,派生类只能得到基类的公有成员标准答案:8知识点解析:本题主要考察C++中继承机制的特点。C++中允许利用已有的数据类型来定义新的数据类型,这种机制称为继承机制,并称已存在的用来派生新类的类称为基类,由已存在的类派生出的新类称为派生类。派生类有3种继承方式可以采用,即public、private和protected方式。派生类除了继承基类中的数据成员和成员函数外,还可以添加具有自身特点的成员,这是继承机制的真正用意所在。因此选项A的叙述正确。采用不同的继承方式,将限制派生类对基类成员的访问权限,因此选项C的叙述正确。对于类本身,protected成员和private成员对外的访问权限是相同的,即外界函数都无法直接访问这两类成员。对于类作为基类被继承产生派生类时,protected成员又和public成员性质相同,即在所有继承方式下都可以被派生类所继承,在public继承时可以被派生类对象访问,在protected和private继承方式下无法被派生类的子类访问。这也正是C++设置protected访问权限成员的真正用途,即为派生类继承基类隐蔽成员之用途。因此选项B的叙述正确。19、实现运行时的多态性要使用()。A、重载函数B、析构函数C、构造函数D、虚函数标准答案:8知识点解析:本题考核虚函数的应用。动态联编一直要到程序运行时才能确定调用哪个函数。虚函数是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但有虚函数存在时,必须同时满足下列条件,才能实现动态联编:类之间满足子类型关系;调用虚函数操作的是指向对象的指针或对象引用,或者是由成员函数调用虚函数。20、下列对模板的声明中,正确的是()。A、temvlate<T>B、template<classT1,T2>C、temvlate<classT1,classT2>D、template<classT1;classT2>标准答案:4知识点解析:本题考核模板的定义。模板定义的<类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键词class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。21、若有以下程序段:#include<iostream>usingnamespacestd;intmain(){inta[]={1,4,5};int*p=&a[0],x=6,y,z;for(y=0;y<3;y++)z=((*(p+y)<x)?*(p+y):x);cout<<z<<end1;return0;}程序运行后的输出结果是()。A、1B、4C、5D、2标准答案:4知识点解析:本题考核指针的运算。程序首先定义了一整型数组a,并赋初值1,4,5。即a[0],a[1]和a[2]的值分别为1,4和5。程序还定义了一个整型指针p,并将其初始化且指向数组元素a[0]。在for循环语句中,赋值语句“z=((*(p+y)<x)?*(p+y):x);”可等价为“z=(a[y]<x)?a[y]:x”。因为表达式中的“*(p+y)=p[y]=a[y]”。for语句每循环一次,就给变量z重新赋值一次,z的值其实就是数组和x相比较,将数组a中的最大值赋给z。当y=2后,退出循环,输出结果是5。22、以下4个程序中,不能实现两个实参值进行交换的是()。A、voidswap(float*p,float*q){float*t,a;t=&a;t=p;*p=*q;*q=*t;}voidmain(){floatx=8.0;y=9.0;swap(&x,&y);cout<<x<<","<<y<<B、voidswap(float*p,float*q){floata;a=*p;*p=*q;*q=a;}voidmain(){floatx=8.0;y=9.0;swap(&x,&y);cout<<x<<","<<y<<end1;C、voidswap(float*p,float*q){floatx;x=*p;*p=*q;*q=x;}voidmain(){floata,b.;*a=8.0;*b=9.0;swap(a,b);D、voidswap(float&p,float&q){floata;a=p;p=q;q=a;}voidmain(){floata=8.0,b=9.0;swap(a,b);cout<<x<<","<<y<<标准答案:4知识点解析:本题考核指针和引用作为函数形参。做此类题时,应学会整体比较,要不然花费的时间不亚于一个大的编程题。①首先,这4个程序都是调用swap函数,而且目的都一致,交换传入的两个实参值。②分析被调函数swap()。在选项A、B和C中都是指针作为形参,只有在选项D中,函数swap()是以引用作为形参。由指针和引用作为函数形参的特点可知,只要调用了函数,就能达到交换两个实参变量的值,所以这几个被调函数没有问题。③再看主函数。在选项C中,没有定义指针类型变量,而是直接给指针变量赋值:“floata,b;*a=8.0;*b=9.0;”,这显然是非法的。想直接开辟存储空间,交换两个常量值,是不可能的。所以只有选项C是错误的。23、有以下程序:#include<iostream>#include<string>usingnamespacestd;intmain(){chars[]="\n123\\";cout<<strlen(s)<<","<<sizeof(s)<<end1;return0;}A、赋初值的字符串有错B、6,7C、5,6D、6,6标准答案:4知识点解析:本题考核字符串的长度和字符型数组所占的字节数。本题在定义字符数组时没有定义数组长度,但赋给数组初值,初值的个数即为数组的长度。故数组长度为6(包括’\0’)。字符串的长度为有效字符的个数,为5。所以程序最后输出5,6。24、若有如下程序:#include<iostream>usingnamespacestd;ints=0;classsample{staticintn;public:sample(inti){n=i;}staticvoidadd(){s+=n;}};intsample::s=0;intmain(){samplea(2),b(5);sample::add();cout<<s<<end1;return0;}程序运行后的输出结果是()。A、2B、5C、7D、3标准答案:2知识点解析:本题考核静态数据成员和静态成员函数的应用。程序中定义一个类sample,它包括一个静态数据成员n和一个静态成员函数add(),并在类的构造函数中给类私有静态数据成员n赋值。在主函数中,定义对象a(2)时,通过构造函数使静态数据成员n的值变为2,在定义对象b(5)时,通过构造函数使静态数据成员n=5(覆盖了前面的n=2),再执行“sample::add()”使全局变量s=5。25、有以下程序:#include<iostream>usingnamespacestd;classB{private:inta,b;public:B(){}B(inti,intj);voidprintb();};classA{BC;public:A(){}A(inti,intj);voidprinta();};A::A(inti,intj):c(i,j){}voidA::printa(){c.printb();}B::B(inti,intj){a=i;b=j;}voidB::printb(){cout<<a<<","<<b<<end1;}intmain(){Am(7,8);m.printa();return0;}该程序运行后的输出结果是()。A、5,6B、7,8C、8,9D、9,10标准答案:2知识点解析:本题考核类的定义和应用。程序首先定义了两个类A和B。在类A中,其私有数据成员c为类B的对象。类A的成员函数printa()中,调用私有成员对象c的成员函数printb()输出类B私有数据成员a和b的值。26、为了使程序的输出的正确结果为:Nowis2004.7.1010:10:10.那么应在下列程序划线处填入的正确语句是()。那么应在下列程序划线处填入的正确语句是()。#include<iostream>usingnamespacestd;classTIME;classDATE{public:DATE(inty=2004,intm=1,intd=1){year=y;month=m;day=d;}friendvoidDateTime(DATE&d,TIME&t);private:intyear,month,day;};classTIME{public:TIME(ihth=0,intm=0,ints=0){hour=h;minute=m;second=s;}friendvoidDateTime(DATE&d,TIME&t);private:inthour,minute,second;};______________________//函数DateTime的首部{cout<<"Nowis"<<d.year<<’.’<<d.month<<’.’<<d.day<<’’<<t.hour<<":"<<t.minute<<’:’<<t.second<<’.’<<end1;}intmain(){DATEd(2004,7,10);TIMEt(10,10,10);DateTime(d,t);return0;}A、voidDateTime(DATE&d,TIME&t)B、voidTIME::DateTime(DATE&d,TIME&t)constC、friendvoidDateTime(DATE&d,TIME&t)D、voidDATE::DateTime(DATE&d,TIME&t)标准答案:1知识点解析:本题程序中,分别在类DATE和TIME中将普通函数DateTime声明为友元函数,但该友元函数的定义是在类体外进行的。友元函数是一个普通函数,它虽然可以访问类对象的私有成员,但它毕竟不是类中的成员函数,因此在类体外定义友元函数时,不需要像成员函数一样在函数名前加上“类名::”。函数首部的其他定义照抄类中友元函数的声明。所以函数DateTime的首部为voidDateTime(DATE&d;TIME&t),即选项A。27、若有以下程序:#include<iostream>usingnamespacestd;classA{private:intx;protected:inty;public:intz;voidsetx(inti){x=i;}intgetx(){returnx;};classB:protectedA{public:voidsetvalue(inta,intb,intc){setx(a);y=b;z=c;}voiddisplay(){cout<<getx()<<","<<y<<","<<z<<","<<end1;}};intmain(){Bobj;obj.setvalue(5,6,7);obj.display();return0;}程序运行后的输出结果是()。A、产生语法错误B、7,6,5C、5,6,7D、7,5,6标准答案:4知识点解析:本题考核保护继承中对类成员的访问权限。①在保护继承中,基类公有成员和保护成员都以保护成员身份出现在派生类中,而基类私有成员不可访问。②基类的公有成员和保护成员被继承以后作为派生类的保护成员,这样,派生类的其他成员可以直接访问它们。③由保护派.生的类声明的对象,不能访问任何基类的成员。在本题中,基类A中的数据成员y和函数setx,经过保护继承以后,在派生类B中成为保护成员,派生类B的对象不能访问它们。而派生类B中的函数setvalue和display都是公有成员,可以通过对象对它们进行访问。所以程序中对各成员的访问是正确的。本程序的功能是对类中各数据成员进行赋值,然后查看赋值是否正确。28、若有以下程序:#include<iostream>usingnamespacestd;classA{protected:inta;public:A(){a=10;}};classA1:publicA{public:A1(){a=a+1;}};classA2:publicA{public:A2(){a=a+2;}};classB:publicA1,publicA2{public:B(){}voidprint(){cout<<a<<end1;}};intmain(){Bobj;obj.print();return0;}程序运行后的输出结果是()。A、产生语法错误B、11C、12D、10标准答案:1知识点解析:本题考核派生类的定义和使用。本程序有语法错误,这是由于类B中的print函数中的语句“cout<<a<<end1;”要输出成员a的值,从而产生了二义性。分析如下:程序中定义了类A,类A1和类A2都是在类A的基础上以公有继承方式产生的派生类,而类B是在类A1和类A2的基础上经过多重继承方式产生的派生类,所以在类B中成员a有两个拷贝,系统无法区分是从A1继承过来的a,还从A2类继承过来的a。修改方法有以下两种:①在被访问的成员加上作用域分辨符“::”。将类B中的print()函数体中语句改为:cout<<A1::a<<end1;或cout<<A2::a<<end1;但两者的输出结果不同,前者输出11,而后者输出12。②采用虚基类的方法。就是在定义A1和A2时,在派生方式前加上关键词“virtual”。29、有以下程序:#include<iostream>usingnamespacestd;classBase{public:Base(){}virtualvoidwho(){cout<<"BaseClass"<<end1;}~Base(){}};classDerivel:publicBase{public:voidwho(){cout<<"DerivelClass"<<end1;}};classDerive2:publicBase{public:voidwho(){cout<<"Derive2Class"<<end1;}};intmain(){Base*p;Derivelobj1;Derive2obj2;p=&obj1;p=&obj2;p->who();return0;}执行程序后的输出结果是()。A、BaseClassB、DerivelClassC、Derive2ClassD、程序编译时出错标准答案:4知识点解析:本题考核虚函数的应用。本题中,先定义了一个基类Base,它含有一个虚成员函数who(),随后定义的类Derivel和Derive2都是基类Base的公有派生类。在主函数中定义了一个指向Base类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指向的对象,p->who就能调用不同的函数实现。这是因为使用了虚函数,因而进行动态联编。程序最后把指针p指向派生类Derive2的对象,由于函数who()在基类Base中是虚函数,所以系统调用Derive2中的who()函数,最后输出Derive2Class。30、在进行了任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态,其中用于是否进行了非法操作的函数名是()。A、failB、eofC、badD、good标准答案:4知识点解析:C++中可以用文件流对象的下列成员函数来判别文件流的当前状态。①函数isopen判定流对象是否与一个打开的文件相联系,若是,返回true,否则返回false。②函数good刚进行的操作成功时返回true,否则返回false。③函数fail与good()相反,刚进行的操作失败时返回true,否则返回false。④函数bad如果进行了非法操作返回true,否则返回false。⑤函数eof进行输入操作时,若到达文件尾返回true,否则返回false。其中,eof函数只能用于输入流操作。三、公共基础填空题(本题共4题,每题1.0分,共4分。)31、已知序列{17,18,60,40,7,32,73,65,85},采用冒泡排序法对该序列作降序排序时,第4趟的结果是【】。标准答案:60,40,73,65,85,32,18,17,7知识点解析:冒泡排序法的算法基本思想是:通过无序区中相邻记录关键词间的比较和位置交换,使关键词最小的记录如气泡一般逐渐往上“漂浮”直至“水面”。整个算法是从最下面的记录开始,对每两个相邻的关键词进行比较,且使关键词较小的记录换至关键词较大的记录之前,使得经过一趟冒泡排序后,关键词最小的记录达到最上端。接着,再在剩下的记录中找关键词最小的记录,并把它换在第2个位置上。依此类推,一直到所有记录都有序为止。根据这种思想,每趟的排序结果如下:初始:17,18,60,40,7,32,73,65,85第一趟18,60,40,17,32,73,65,85,7第二趟60,40,18,32,73,65,85,17,7第三趟60,40,32,.73,65,85,18,17,7第四趟60,40,73,65,85,32,18,17,7第五趟60,73,65,85,40,32,18,17,7第六趟73,65,85,60,40,32,18,17,7第七趟73,85,65,60,40,32,18,17,7第八趟85,73,65,60,40,32,18,17,732、【】是按照程序语句行的自然顺序,依次执行语句。标准答案:顺序执行知识点解析:结构化程序设计语言仅仅使用顺序、选择和循环3种基本结构。其中,顺序结构是最基本、最常用的结构,它采用顺序执行的结构,即按照程序语句行的自然顺序,依次执行语句。33、调试方法中的【】最适合小规模程序的排错。标准答案:回溯法知识点解析:这种调试方法是从出现错误征兆处开始,人工沿控制流程往回追踪,直至发现出错的根源。这是在小程序中常用的一种有效的调试方法。程序变大后,可能的回溯路线显著增加,以致人工进行完全回溯可望而不可及。例如,程序中发现错误处是某个打印语句。通过输出值可推断程序在这一点上变量的值,再从这一点出发。回溯程序的执行过程,反复考虑:“如果程序在这一点上的状态(变量的值)是这样,那么程序在上一点的状态一定是这样……”,直到找到错误的位置。34、若a=12,b=14,c=0,则表达式“((y=(a>B)?a:B)>C)?y:c”的值为【】。标准答案:14知识点解析:条件运算符是一种在两个表达式中选择一个的操作,它是C++中惟一的三元运算符。在本题中,先计算“(a>B)?a:b”,因为ac的逻辑值为真,所以表达式的值为y的值,即14。四、填空题(本题共7题,每题1.0分,共7分。)35、函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0:当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串大于t所指字符串时,返回值大于0(功能等同于strcmp())。请填空。intSstrcmp(char*S,char*t){while(*s&&*t&&*S==*t){s++;t++;}return【】;}标准答案:*s-*t或s[0]-t[0]知识点解析:函数sstrcmp()有两个字符型指针变量,用来指向两个字符串。比较两个字符串的大小方法是:从第1个字符开始依次向后比较,若对应的字符相等,则接着比较下一个字符,一直到两个字符串中的对应字符不相等,或有一个为“\0”,此时对应字符的ASCII码大的字符串就大。故循环条件是*s和*t不为’\0’,且*s和*t相同。空白处应填入返回值,即“*s-*t”或其等价形式。36、若有以下程序:#include<iostream>usingnamespacestd;intf(intx,inty){return(y-x)*x;}intmain(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));cout<<d<<<end1;return0;}执行后的输出结果是【】。标准答案:9知识点解析:本题考核函数的嵌套调用。在主函数中执行语句“d=f(f(a,b),f(a,c));”调用了3次f()函数:调用f(a,b)得到的值为3,调用f(a,c)得到的值为6,调用f(3,6)得到的值为9。37、如果一个数组中的每个元素都是同一类的对象,则该数组被称为【】。标准答案:对象数组知识点解析:对象数组是指数组元素为对象的数组,该数组中的每一个元素都是同一个类的对象。38、表达式c3=c1.operator+(c2)或c3=operator+(c1,c2)还可以表示为【】标准答案:c3=c1+c2知识点解析:这是运算符重载应用的两种形式。39、下面程序的打印结果是【】。#include<iostream>usingnamespacestd;classBase{public:Base(intx){a=x;}voidshow(){cout<<a;}private:inta;};classDerived:publicBase{public:Derived(inti):Base(i+1),b(i){}voidshow(){cout<<b;}private:intb;};intmain(){Baseb(5),*pb;Derivedd(1);pb=&d;pb->show();return0;}标准答案:2知识点解析:基类Base派生出派生类Derived,在主函数中,定义了基类对象b,基类指针pb,以及派生类对象d,并让基类指针pb指向派生类对象乙在C++中,当派生类的对象赋值给基类对象时,只能使用派生类对象中从基类继承的成员。所以最后执行语句“pb->show();”是调用基类的成员函数show(),输出a的值2。40、有如下程序:#include<iostream>usingnamespacestd;classAA{public:virtualvoidf(){cout<<"AA";}};classBB:publicAA{public:BB(){cout<<"BB";}};classCC:publicBB{public:virtualvoidf(){BB::f();cout<<"CC";}};intmain(){AAaa,*p;BBbb;CCcc;p=&cc;p->f();returnO;}运行后的输出结果【】标准答案:BBBBAACC知识点解析:本题中,函数f()在基类AA中派生类CC中都声明为虚函数,所以采用动态联编。主函数首先定义类AA的对象aa和指针对象p,然后定义了类BB的对象bb,此时调用了类BB的构造函数输出BB。再定义类CC的对象cc,由于类CC是类BB的派生类,所以此时又调用类BB的构造函数输出BB。最后执行语句“p=&cc;p->f();”,输出AA和CC。41、若有以下程序:#include<iostream>usingnamespacestd;intmain(){charstr[10];cin>>str;cout<<str<<end1;return0;}当输入为:Thisisaprogram!那么执行程序后的输出结果是【】。标准答案:This知识点解析:本题考核C++的标准输入/输出。提取符可以从输入流中读取一个字符序列,即一个字符串。在处理这种字符序列时,字符串被认为是一个以空白字符结束的字符序列。因此,本题得到的输入仅仅是第一个空白符之前的字符序列This。所以程序最后的输出是This。五、填空题(含2小题)(本题共1题,每题1.0分,共1分。)42、函数YangHui的功能是把杨辉三角形的数据赋给二位数组的下半三角,形式如下:其构成规律是:①第0列元素和主对角线元素均为1。②其余元素为其左上方和正上方元素值之和。③数据的个数每行递增1。请将程序补充完整。#defineN6voidYangHui(intx[N][N]){inti,j;x[0][0]=1;for(i=1;i<N;i++){x[i][0]=【】=1;for(j=1;j<i;j++)x[i][j]=【】;}}标准答案:x[i][0]x[i-1][j-1]+x[i-1][j]知识点解析:本题考核数组的应用,属于综合型考题。在函数YangHui中,通过嵌套的for语句实现杨辉三角各个位置元素的赋值。①由于杨辉三角中,第0列元素和主对角线元素均为1。所以可知,x[i][0]=1,x[i][i]=1。②杨辉三角中,其余元素为其左上方和正上方元素值之和。若元素为x[i][j],那么其左上方的元素为x[-1][j-1),正上方的元素为x[i-1][j]。所以x[i][j]的值为x[i-1][j-1]+x[i-1][j]。国家二级(C++)笔试模拟试卷第2套一、公共基础选择题(本题共32题,每题1.0分,共32分。)1、下列选项中不符合良好程序设计风格的是A、源程序要文档化B、数据说明的次序要规范化C、避免滥用goto语句D、模块设计要保证高耦合、高内聚标准答案:D知识点解析:编程风格是在不影响程序性能的前提下,有效地编排和组织程序,以提高可读性和可维护性。要按照规则进行编程。这些规则包括:①程序文档化。程序文档应包含恰当的标识符、适当的注解和程序的视觉组织等。②数据说明。出于阅读理解和维护的需要,最好使模块前的说明语句次序规范化。③功能模块化。即把源程序代码按照功能划分为低耦合、高内聚的模块。④注意goto语句的使用。合理使用goto语句可以提高代码的运行效率,但goto语句的使用会破坏程序的结构特性。因此,除非确实需要,否则最好不使用goto语。因此,本题的正确答案是D。2、从工程管理角度,软件设计一般分为两步完成,它们是A、概要设计与详细设计B、数据设计与接口设计C、软件结构设计与数据设计D、过程设计与数据设计标准答案:A知识点解析:从工程管理的角度,软件设计可分为概要设计和详细设计两大步骤。概要设计是根据需求确定软件和数据的总体框架;详细设计是将其进一步简化成软件的算法或表示和数据结构。而在技术上,概要设计和详细设计又由若干活动组成,包括总体结构设计、数据设计和过程设计。因此,本题的正确答案是A。3、下列选项中不属于软件生命周期开发阶段任务的是A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件生命周期由软件定义、软件开发和软件维护3个时期构成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由5个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正:当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项c中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。4、在数据库系统中,用户所见的数据模式为A、概念模式B、外模式C、内模式D、物理模式标准答案:B知识点解析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式也称子模式或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式也称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。内模式也称存储模式或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方法的描述。5、数据库设计的4个阶段是:需求分析、概念设计、逻辑设计和A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库的生命周期可以分为两个阶段:一是数据库设计阶段,二是数据库实现阶段。数据库的设计阶段又分为4个子阶段,即需求分析、概念设计、逻辑设计和物理设计。因此,本题的正确答案是D。6、下列叙述中正确的是A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、上述3种说法都不对标准答案:D知识点解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用的存储空间大小的度量。有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是矛盾存在的,但是,这不适用于所有的情况,也就是说,时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。7、在长为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A、63B、64C、6D、7标准答案:B知识点解析:在长度为64的有序线性表中,其中的64个数据元素是按照从大到小或从小到大的顺序有序排列的。在这样的线性表中进行顺序查找,最坏的情况就是查找的数据元素不在线性表中或位于线性表的最后。按照线性表的顺序查找算法,首先用被查找的数据和线性表的第一个数据元素进行比较。若相等,则查找成功;否则,继续进行比较,即和线性表的第二个数据元素进行比较。同样,若相等,则查找成功;否则,继续进行比较。以此类推,直到在线性表中查找到该数据或查找到线性表的最后一个元素,算法才结束。因此,在长度为64的有序线性表中进行顺序查找,最坏的情况下需要比较64次。因此,本题的正确答案为B。8、数据库技术的根本目标是要解决数据的A、存储问题B、共享问题C、安全问题D、保护问题标准答案:B知识点解析:数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且允许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。9、下列有关内联函数的叙述中,正确的是A、内联函数在调用时发生控制转移B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的D、内联函数体的最后一条语句必须是return语句标准答案:C知识点解析:内联函数也具有函数的基本功能,可以没有返回值;内联函数由编译器在调用该函数时将函数体的代码插入到调用该函数的语句处,同时以实参代替形参,以便程序在运行时不再进行函数调用,即在调用时不发生控制转移。10、下列情况中,不会调用复制构造函数的是A、用一个对象去初始化同一类的另一个新对象时B、将类的一个对象赋予该类的另一个对象时C、函数的形参是类的对象,调用函数进行形参和实参结合时D、函数的返回值是类的对象,函数执行返回调用时标准答案:D知识点解析:用一个对象去初始化同一类的另一个新对象时,将类的一个对象赋予该类的另一个对象时,函数的形参是类的对象,调用函数进行形参和实参结合时都会调用复制构造函数,生成一个新的对象,只有返回值为对象时,才调用构造函数,而不是复制构造函数,生成一个新对象给函数返回,故答案为D。11、下列有关继承和派生的叙述中,正确的是A、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:A知识点解析:派生类的成员函数在不同的继承方式下,能访问的数据成员也不一样。在公有继承方式下,派生类的成员函数能访问基类的公有和保护成员;在保护继承方式下,能访问基类的公有和保护成员;而在私有继承方式下,则不能访问基类的任何成员。可以将派生类对象赋值给基类对象,但不能将基类对象赋值给派生类对象。如果一个抽象类的派生类中没有抽象说明纯虚函数,则该函数在派生类中仍然为纯虚函数,而这个派生类也仍然是一个抽象类。12、模板对类型的参数化提供了很好的支持,因此A、类模板的主要作用是生成抽象类B、类模板实例化时,编译器将根据给出的模板实参生成一个类C、在类模板中的数据成员都具有同样类型D、类模板中的成员函数都没有返回值标准答案:B知识点解析:类模板是一个通用类,不知道其数据成员和成员函数的返回类型和形参类型,系统会根据实参的类型来取代类模板中的虚拟类型从而实现不同类的功能。类模板中的数据成员的类型并非一定要一致。13、下列关于C++流的叙述中,正确的是A、与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B、从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C、cin是一个预定义的输入流类D、输出流有一个名为open的成员函数,其作用是生成一个新的流对象标准答案:A知识点解析:在C++中,所有设备的交互都通过流来实现。从流中提取数据称为输入操作,或者提取操作;向流中添加数据称为输出操作,或者插入操作。cin是标准的输入流对象,cout标准输入流对象。文件流中有open成员函数,其作用是使磁盘文件同某一已经定义的文件流对象建立关联。14、下列符号中可以用作C++标识符的是A、_radiusB、foo~barC、elseD、3room标准答案:A知识点解析:在C++中,变量标识符必须以大小写字母、下画线开始,是由数字或者字母下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符号。15、下列语句中,错误的是A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);标准答案:B知识点解析:用const修饰常量就变为常变量,常变量一旦被建立,就不能被更改。在被定义时就应该给常变量赋初始值,而常指针则不同,被定义后,它指向的地址不能发生改变,但是指向的地址中的数据可以改变。16、有如下程序:intx=3:d0{x-=2:cout<<x:}while(!(--x));执行这个程序的输出结果是A、1B、30C、12D、死循环标准答案:C知识点解析:Do...while()循环是先执行循环体,然后判断条件。第一次进入循环x=1,打印1,第二次进入循环x=0,执行x-=2后,x=-2,打印x,退出循环。17、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*P;*P=9;cout<<"ThevalueatP:"<<*P:return0;}编译运行程序将出现的情况是A、编译时出现语法错误,不能生成可执行文件B、运行时一定输出:ThevalueatP:9C、运行时一定输出:ThevalueatP:*9D、运行时有可能出错标准答案:D知识点解析:int*p;指针变量定义时没有被初始化,也没有指向具体的地址,所以在后面打印时报错。应当做如下初始化:int*p=newint();18、有如下程序:#include<iostream>usingnamcspacestd;intmain(){voidfunction(doubleval);doubleval;function(val);eout<<val;return0;}voidfunction(doubleval){val=3:}编译运行这个程序将出现的情况是A、编译出错,无法运行B、输出:3C、输出:3.0D、输出一个不确定的数标准答案:D知识点解析:在主函数中的val没有初始值,而且在调用函数function()时采用的是传值调用,所以在函数中改变val的值不会影响到主函数中的val值,故输出是一个不确定的值。19、有如下类定义:classAA{inta;public:intgetRef()eonst{return&a;}//①intgetValue()const{returna;}//②voldset(intn)eonst{a=n;}//③friendvoidshow(AAaA)eonst{tout<<a;}//④};其中的4个函数定义中正确的是A、①B、②C、③D、④标准答案:B知识点解析:友元函数不能使用const修饰,故④错误,①的函数类型和返回类型不匹配。如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是说该函数不会修改类的非静态数据成员,而③对类的数据成员a进行了赋值,故不能用const赋值,故③错。20、有如下程序:#include<iostream>usingnamespacestd;usingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<<endl:}};classDerived:publicBase{public:voidfun(){eout<<"Derived::fun"<<endl:}};intmain(){Derivedd;d.fun();return0;}已知其执行后的输出结果为:Base::funDerived::fun则程序中下画线处应填入的语句是A、Base.fun();B、Base::fun();C、Base->fun();D、fun();标准答案:B知识点解析:从打印结果可以看出,在对象d调用fun()函数时调用了基类的fun()函数,所以,在派生类中应该显式调用基类的fun()函数,故应该写成:Base::fun();。21、下面是重载为非成员函数的运算符函数原型,其中错误的是A、Fractionoperator+(Fraction,Fraction);B、Fractionoperator-(Fraction);C、Fraction&operator=(Fraction&,Fraction);D、Fraction&operator+=(Fraction&,Fraction);标准答案:C知识点解析:类的赋值运算符“=”只能被重载为成员函数,不能重载为友元函数。22、有如下函数模板:template<typenameT,typenaineU>Tcast(Uu){returnu;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是A、cast(i);B、cast<>(i);C、cast<char*,int>(i);D、cast<double,int>(i);标准答案:D知识点解析:选择A、B错在没有给T参数类型,在函数的返回值中应该为T确定一个确切的类型。选项C错在赋给T的类型和函数中返回值的类型不匹配,故答案为D。23、若磁盘上已存在某个文本文件,其全路径文件名为d:\ncre\test.txt,下列语句中不能打开该文件的是A、ifstreamfile("d:\ncre\test.txt");B、ifstreamfile("d:\\ncre\\test.txt");C、ifstreamfile;file.open("d:\\ncre\\test.txt");D、ifstream*pFile=newifstream("d:\\ncre\\test.txt");标准答案:A知识点解析:文件流的打开路径用“\\”隔开,而不是“\”,但可以用“/”隔开。24、有如下类定义:classFoo{public:Foo(intv):value(v){}//①~Foo(){}//②private:Foo(){{//③intvalue=0;//④};其中存在语法错误的行是A、①B、②C、③D、④标准答案:D知识点解析:类的数据成员只能被定义类型,而不能对其设置默认值。如果要设置默认值需要在构造函数的参数中进行设置。25、有如下类定义:classPoint{intx_,y_;public:Point():x_(0),y_(0){}Point(intx,inty=0):x_(x),y_(y){}};若执行语句:Pointa(2),b[3],*c[4];则Point类的构造函数被调用的次数是A、2次B、3次C、4次D、5次标准答案:C知识点解析:a(2)执行一次,调用带参构造函数;b[3]生成一个对象数组,所以执行3次无参构造函数,生成3个对象数组元素;*c[4]定义一个对象指针,并没产生对象,所以没有调用构造函数。26、有如下类定义:classTest{public:Test(){a=0;C=0;t//①intf(intA)const{this->a=a;}//②staticintg(){returna;}//③voidh(intB){Test::b=b;};//④private:inta;staticintb;constintc;};intTest::b=0:在标注号码的行中,能被正确编译的是A、①B、②C、③D、④标准答案:D知识点解析:类的常变量一旦被定义就不能更改,所以选项A错。定义常成员函数不能更新对象的数据成员,也不能调用该类中的普通函数,更不能改变该类的数据成员的值。静态成员函数不能访问非静态数据成员。27、有如下程序:#include<lostream>usingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"~A";}};classB:publicA{A*P;public:B(){cout<<"B";P=newA();}~B(){cout<<"~B";deleteP;}};intmain(){Bobj;return0;}程序的输出结果是A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A标准答案:B知识点解析:基类与派生类的构造函数与析构函数的执行顺序是先执行基类的构造函数,然后执行派生类的构造函数。删除对象时,先执行派生类的析构函数,最后执行基类的析构函数成员。28、有如下类定义:classMyBase{intk;public:MyBase(intn=0):k(n){}intvalue()const{returnk;}};classMyDerived:MyBase{intj;public:MyDerived(inti):j(i){}intgetK()eonst{returnk;}intgetJ()const{returnj;}};编译时发现有一处语法错误,对这个错误最准确的描述是A、函数getK试图访问基类的私有成员变量KB、在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或privateC、类MyDerived缺少一个无参的构造函数D、类MyDerived的构造函数没有对基数数据成员K进行初始化标准答案:A知识点解析:派生类的成员函数不能访问基类的私有函数。29、在一个派生类对象结束其生命周期时A、先调用派生类的析构函数,后调用基类的析构函数B、先调用基类的析构函数,后调用派生类的析构函数C、如果基类没有定义析构函数,则只调用派生类的析构函数D、如果派生类没有定义析构函数,则只调用基类的析构函数标准答案:B知识点解析:在删除派生类对象时,应先执行派生类的析构函数,然后执行基类的析构函数。30、有如下运算重载函数定义:Doubleoperator+(inti,intk){returndouble(i+k);}但定义有错误,对这个错误的最准确的描述是A、+只能作为成员函数重载,而这里的+是作为非成员函数重载的B、两个int型参数的和应该是int型,而这里将+的返回类型声明为doubleC、没有将运算符重载函数声明为某个类的友元D、C++已经提供了求两个int型数据之和运算符+,不能再定义同样的运算符标准答案:C知识点解析:“+”作为双目运算符,在对其进行重载时,如果重载为成员函数,则只需要定义一个形参;如果重载为友元函数,则需要定义两个形参。从题干中可以看出,在重载函数声明中,没有friend关键字,却有两个形参,故会提示友元函数重载报错。31、语句ofstreamf("SALARY.DAT",ios_base::app)的功能是建立流对象f,并试图打开文件SALARY.DAT与f关联,而且A、若文件存在,则将其置为空文件;若文件不存在,则打开失败B、若文件存在,则将文件指针定位于文件尾;若文件不存在,则建立一个新文件C、若文件存在,则将文件指针定位于文件首;若文件不存在,则打开失败D、若文件存在,则打开失败;若文件不存在,则建立一个新文件标准答案:B知识点解析:ios_base::app所表示的文件打开方式为:如果文件存在则将文件指针指向文件尾,否则就建立一个新文件。32、有如下程序:#include<iostream>usingnamespacestd:classA{public:virtualvoidfuncl(){cout<<"A1";}voidfunc2(){cout<<"A2";}};classB:publicA{public:voidfuncl(){cout<<"B1";}voidfllnc2(){cout<<"B2";}};intmain(){A*p=newB;p->funcl();p->func2();return0:}运行程序,屏幕上将显示输出A、B182B、A1A2C、BlA2D、AlB2标准答案:B知识点解析:基类指针可以指向派生类对象,但是指针只能访问继承自基类的成员,而不能访问派生类中的新增加成员或重新定义后的成员。故p->funcl();p->func2();都执行基类的成员函数,打印A1A2。二、公共基础填空题(本题共9题,每题1.0分,共9分。)33、某二叉树中度为2的结点有18个,则该二又树中有______个叶子结点标准答案:19知识点解析:暂无解析34、在面向对象方法中,类的实例称为______。标准答案:对象知识点解析:在面向对象概念中,所有的同类的实体的抽象就构成一个类,而类被实例化就形成一个对象。35、诊断和改正程序中错误的工作通常称为______。标准答案:程序调试知识点解析:暂无解析36、在关系数据库中,把数据表示成二维表,每一个二维表称为______。标准答案:关系知识点解析:暂无解析37、问题处理方案的正确而完整的描述称为______。标准答案:算法知识点解析:暂无解析38、下列程序的输出结果是______。#include<iostream>#include<cstring>usingnamespacestd;voidfun(constchar*S,char&C){e=s[strlen(s)/2];}intmain(){charstr[]="ABCDE";charch=str[1];fun(str,ch);cout<<ch;return0;}标准答案:C’知识点解析:暂无解析39、补充完整下面的类定义:constdoublePI=3.14;classCircle{//圆形物体的抽象基类protected:doubler;//半径public:Circle(doubleradius=0):r(radius){}(13);//计算圆形物体表面积的纯虚函数声明};classCylinder:publicCircle{//圆柱体类doubleh;//高度public:Cylinder(doubleradius=0,doubleheight=0);Circle(radius),h(height){}VirtualdoubleArea(){return2*PI*r*(r+h);}//计算圆柱体的表面积};标准答案:virtualdoubleArea()=0知识点解析:声明纯虚函数的一般形式如下:Virtual函数类型函数名(参数表)=0;40、如下程序声明了一个使用两个通用数据类型的模板类dataClass,其中构造函数用于初始化两个数据成员,成员函数show用于输出两个数据成员的数值。#include<iostream>usingnamespaeestd;______T1i:T2j;public:dataClass(T1a,T2B){i=a;j=b;}voidshow(){tout<<i<<","<<j<<’\n’;}};intmain(){dataClass<int,double>obl(10,0.23);dataClass<char,char*>ob2(’X’,"mydata");obl.show();ob2.show();return0;请将程序补充完整,使程序在运行时输出:10,0.23X,mydata标准答案:template<classT1,classT2>classdataClass{知识点解析:类模板声明的一般格式为:template<typename类型参数>Class类名{类成员声明};其中类型参数可以为多个。题中出现了两个类型参数T1、T2,故应该在类模板的头部声明中声明两个类型参数T1、T2。41、下列程序的输出结果为:Ohjectid=0Objectid=1请将程序补充完整。#include<iostream>usingnamespaeestd;classPoint{public:Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}~Point(){countP--;}intGetX(){returnX;}intGetY(){returnY;}staticvoidGetC(){cout<<"Objectid="<<<countP<<endl;}private:intX,Y;staticintcountP;};______//静态数据成员的初始化intmain(){Point::GetC();PointA(4,5);A.GetC();return0;}标准答案:intP0int::counfP=0;知识点解析:静态数据成员的初始化格式为:<数据类型><类名>::<静态数据成员名>=<初始值>;国家二级(C++)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、对于算法的每一步,指令必须是可执行的。算法的()要求算法在有限步骤之后能够达到预期的目的。A、可行性B、有穷性C、正确性D、确定性标准答案:1知识点解析:暂无解析2、下列叙述中错误的是()。A、一种数据的逻辑结构可以有多种存储结构B、数据的存储结构与数据处理的效率无关C、数据的存储结构与数据处理的效率密切相关D、数据的存储结构在计算机中所占的空间不一定是连续的标准答案:2知识点解析:暂无解析3、在结构化程序设计方法中,下面内聚性最弱的是()。A、逻辑内聚B、时间内聚C、偶然内聚D、过程内聚标准答案:4知识点解析:暂无解析4、最简单的交换排序方法是()。A、快速排序B、选择排序C、堆排序D、冒泡排序标准答案:8知识点解析:暂无解析5、在深度为7的满二叉树中,叶子结点的个数为()。A、32B、31C、64D、63标准答案:4知识点解析:暂无解析6、在结构化方法中,软件功能分解属于下列软件开发中的阶段是()。A、详细设计B、需求分析C、总体设计D、编程调试标准答案:4知识点解析:暂无解析7、结构化程序设计的主要特征是()。A、封装和数据隐藏B、继承和重用C、数据和处理数据的过程分离D、把数据和处理数据的过程看成一个整体标准答案:4知识点解析:暂无解析8、在数据库管理系统的层次结构中,处于最上层的是()。A、应用层B、语言翻译处理层C、数据存取层D、数据存储层标准答案:1知识点解析:暂无解析9、概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是()。A、把软件划分成模块B、确定模块之间的调用关系C、确定各个模块的功能D、设计每个模块的伪代码标准答案:8知识点解析:暂无解析10、数据库关系模型中可以有三类完整性约束,下列选项中不属于三类完整性约束的是()。A、实体完整性规则B、参照完整性规则C、对象完整性规则D、用户自定义完整性规则标准答案:4知识点解析:暂无解析二、选择题(本题共25题,每题1.0分,共25分。)11、cout、cerr和clog是()的对象,cout处理标准输出,cerr和clog都处理标准出错信息。A、istreamB、ostreamC、celtD、clog标准答案:2知识点解析:暂无解析12、在C++中,用于实现运行时多态性的是()。A、内联函数B、重载函数C、模板函数D、虚函数标准答案:8知识点解析:暂无解析13、下列数组的定义中,会产生错误的是()。A、inta[]={’0’,’1’,’2’,’3’,’4’,’5’,’6’};B、inta[10]={0,1,2,3,4,5,6};C、chara[5]="hello";D、chara[5]={’h’,’e’,’l’,’l’,’o’};标准答案:4知识点解析:暂无解析14、若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是()。A、ps+1B、*(ps+3)C、ps[0][2]D、*(ps+1)+3标准答案:4知识点解析:暂无解析15、不合法的main函数命令行参数表示形式是()。A、main(inta,char*c[1])B、main(intarc,char**arv)C、main(intargc,c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实时线损管理办法
- 居间费用管理办法
- 境外存款管理办法
- 外贸出口管理办法
- 天津滴滴管理办法
- 安保登记管理办法
- 工程清收管理办法
- 工资挂账管理办法
- 巷道封闭管理办法
- 城市诊所管理办法
- 【真题】人教版七年级下学期7月期末数学试题(含解析)湖南省长沙市长沙市一中教育集团联考2024-2025学年
- SAVI综合征靶向治疗研究进展
- 物业资产考试试题及答案
- 氧化钨化学计量比对其物理化学性质的影响规律
- 口腔诊所污水管理制度
- DZ/T 0275.5-2015岩矿鉴定技术规范第5部分:矿石光片鉴定
- 苹果授权协议书
- 村庄环境整治协议书
- 2025-2031年中国鲜牛奶行业发展前景及投资战略规划研究报告
- 2025年高考化学大题突破大题01化工流程综合题(逐空突破)(原卷版+解析)
- 婚庆合伙人合同协议
评论
0/150
提交评论