1、国家二级( C+)笔试模拟试卷 259及答案与解析 1 SQL语言又称为 ( )。 ( A)结构化定义语言 ( B)结构化控制语言 ( C)结构化查询语言 ( D)结构化操纵语言 2 有如下程序: #include iostream using namespace std; long fun(int n) if(n 2) return(fun(n-1)+fun(n-2); return 2; int main() cout fun(3) end1; return 0; 则该程序的输出结果应该是 ( )。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 3 以下程序的正确运行结果是 (
2、)。 #include iostream.h int fun(int); void main() int a=2,i; for(i=0;i 3;i+) cout fun(a) end1; coutend1; int fun(int a) int b=0; static int c=3; b+;c+; return(a+b+c); ( A) 4, 5, 6 ( B) 6, 7, 9 ( C) 7, 8, 9 ( D) 7, 7, 7 4 线性表的顺序存储结构和线性表的链式存储结构分别是 ( )。 ( A)顺序存取的存储结构、顺序存取的存储结构 ( B)随机存取的存储结构、顺序存取的存储结构 (
3、C)随机存取的存储结构、随机存取的存储结构 ( D)任意存取的存储结 构、任意存取的存储结构 5 ( )复审应该把重点放在系统的总体结构、模块划分、内外接口等方面。 ( A)详细设计 ( B)系统设计 ( C)正式 ( D)非正式 6 下列模式中,能够给出数据库物理存储结构与物理存取方法的是 ( )。 ( A)内模式 ( B)外模式 ( C)概念模式 ( D)逻辑模式 7 索引属于 ( A)模式 ( B)内模式 ( C)外模式 ( D)概念模式 8 VisualFoxPro是一种 ( )。 ( A)数据库管理系统软件 ( B)操作系统软件 ( C)文字处理软件 ( D) CAD软件 9 下述关
4、于数据库系统的叙述中正确的是 ( A)数据库系统中数据的一致性是指数据类型一致 ( B)数据库系统比文件系统能管理更多的数据 ( C)数据库系统减少了数据冗余 ( D)数据库系统避免了一切冗余 10 数据库概念设计中,由分散到集中的设计方法是 ( A)视图设计 ( B)视图集成设计 ( C)集中式模式设计 ( D)分数式模式设计 11 有以下程序: #include iostream using namespace std; class sample private: int n: public: sample () sample(int m) n=m; sample add(sample s
5、1, sample s2) this- n=s1.n+s2.n; return (*this); void disp () cout “n=“ n end1; ; int main() sample s1(1)0,s2(5),s3; s3.add(s1,s2); s3.disp(); return 0; 程序运行后,输出的结果是 ( A) n=10 ( B) n=5 ( C) n=20 ( D) n=15 12 如果表达式 -x/y中的 “-”和 “/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可以表示为 ( )。 ( A) operator/(x.operator-(),
6、 y); ( B) operator/(operator-(x), y); ( C) x.operator-().operator/(y); ( D) y.operator/operator-(x); 13 下面程序的运行结果为 #include iostream.h Class A static int n; public: A( ) n 1; A(int num) n num; void print( ) cout n; ; int A: :n 2; void main( ) A a,b(3) ; a. print( ) ; b. print( ) ; cout endl; ( A) 11
7、 ( B) 13 ( C) 23 ( D) 33 14 下列说法中错误的是 ( )。 ( A)公有继承时基类中的 public成员在派生类中仍是 public成员 ( B)私有继承时基类中的 protected成员在派生类中仍是 protected成员 ( C)私有继承时基类中的 public成员在派生类中仍是 private成员 ( D)保护继承时基类中的 public成员在派生类中仍是 protected成员 15 下面类的声明中的几个语句,正确的是 (设定语句是主函数中的语句 )( )。 class TestClass private; int data; public: TestCla
8、ss(int g_data) data=g data; void show()cout #include using std: cout; class Point public: friend double distance(const Point while(*(a+num)!=0) num+; while(bn) *(a+num)=bn;num+;n+; return num; ( A)字符串 a的长度 ( B)字符串 b的长度 ( C)字符串 a和 b的长度之差 ( D)字符串 a和 b的长度之和 21 对中断语句的说法不正确的是 _。 ( A)用户可 以指定中断位置 ( B)用户可以指
9、定转移的位置 ( C) break语句可以跳出本循环 ( D) continue语句可以结束本次循环 22 下面程序段的输出结果是 _。 char *s= “12345“; s+=2; cout s; ( A) 345 ( B)字符 3 ( C)字符 3的地址 ( D)无确定的输出结果 23 在 C+中,用于实现运行时多态性的是 _ 。 ( A)内联函数 ( B)重载函数 ( C)模板函数 ( D)虚函数 24 要想使 23.78965421的输出为 23.7887应用的语句是 ( A) cout 23.78965421; ( B) cout fixed 23.78965421; ( C) c
10、out 23.78965421-0.001; ( D) cout fixed 23.78965421-0.001; 25 己知类 X成功地重载了 -、 =、 +、和 这几个运算符,则其中肯定属于成员函数的运算符是 ( )。 ( A)和 ( B) 和后置 - ( C) =和 ( D)前置 -和 26 继承机制的作用是 ( A)信息隐藏 ( B)数据封装 ( C)定义新类 ( D)数据抽象 27 C+语言类体系中,不能被派生类继承的有 ( A)转换函数 ( B)构造函数 ( C)虚函数 ( D)静态成员函数 28 以下函数实现的功能是 void fun(char*s) char*p, *q,tem
11、p; p=s; q=s+strlen(s)-1; while(p q) temp=*p; *p=*q; *p=temp; p+; q-; ( A)将一个字符串首尾颠倒 ( B)计算字符串的长度 ( C)统计字符串中的空格个数 ( D)将字符串中的小写字母变成大写字母 29 已知 int a, b;用语句 scanf(“%d%d“, void fun3() const cout “fun3“; ; class Derived: protected Base public; void fun4() const cout “fun4“; ; int main() Derived obj; obj.f
12、unl(); / obj.fun2(); / obj.fun3(); / obj.fun4(): / return 0; 其中有语法错误的语句是 ( A) ( B) ( C) ( D) 35 Sample是一个类,执行下面语句后,调用 Sample类的构造函数的次数是Sample a2, *P=new Sample; ( A) 0 ( B) 1 ( C) 2 ( D) 3 36 如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体 “工人 ”与实体 “设备 ”之间存在【 】关系。 37 软件设计模块化的目的是【 】。 38 数据库是指按照一定的规则存储在计算机中的【 】的集合,它能被
13、各种用户共享。 39 具有记忆作用的线性表称为【 】。 40 数据结构分为线性结构和非线性结构,带链的队列属于【 】。 41 请将下列程序补充完整,使得输出结果为 bbaa。 #include iostream using namespace std; class A public: _cout “aa“; ; class B:public A public: B()cout “bb“; ; int main() B *p=new B; delete p; return 0; 42 指针变量所保存的不是一般的数据值,而是程序中另一个对象的 _。 43 非成员函数只有在声明为类的 _时才能访问这
14、个类的所有 private成员。 44 对基类数据成员的初始化必须派生类的构造函数中的 _处执行。 45 在声明派 生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承private。 已知有如下类定义: class Base protected: void fun() ; class Derived: Base ; 则 Base类中的成员函数 fun(),在 Derived 类中的访问权限是【 】 (注意:要求填写 private、 protected或 public中的一项 )。 46 若有如下程序段: #include iostream using namespace std;
15、int main() char *p=“abcdefgh“, *r; long *q; q=(long *)p; q+; r=(char *)q; cout r end1; return 0; 该程序的输出结果是【 】。 47 类继承中,缺省的继承方式是 _。 48 假设 fin是一个文件流对象,则关闭文件的语句是【 】。 49 下列程序的运行结果是【 】。 # include iostream. h class SomeClass public: SomeClass(int value) some_value=value; void show_data(void) cout data “ s
16、ome_value endl; ; static void set_data(int value) data=value; private: static int data; int some_value ; int SomeClass:data void main(void) SomeClass my_class(1001),your_class(2002); your_class. set_data(4004); my_elass. show_data() 50 下列程序的输出结果是【 】。 #include iostream. h int CalcDigital(char *str) i
17、f(str=NULL) return 0; int num_of_digital=0; for(int i=0;stri! =0x0;i+) if(stri =9 return num_of_digital; void main() char a=“Beijing2008olympic“; cout CalcDigital(a) endl; 国家二级( C+)笔试模拟试卷 259答案与解析 1 【正确答案】 C 2 【正确答案】 C 3 【正确答案】 C 4 【正确答案】 B 【试题解析】 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式 LOC(ai)=LO
18、C(a1)+(i-1)L 计算得 到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。 5 【正确答案】 B 6 【正确答案】 A 7 【正确答案】 B 【试题解析】 内模式 (Internal SchemA 又称物理模式 (Physical SchemA,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash 等存取方式与存取路径。 8 【正确答案】 A 【试题解析】 Visual FoxPro 属于小型数据库管理系统软件 ,它是微软的产品,只具备数据库管理系统的一些简单功能。 9 【正确答案
19、】 C 【试题解析】 C和 D两者的描述刘象一样,结果必然在这两者之中。 D太绝对,所以 C正确。 10 【正确答案】 B 【试题解析】 数据库概念设计中,由分散到集中的设计方法是视图集成设计。 11 【正确答案】 D 【试题解析】 本题考核 this 指针的使用。类成员函数 add 中通过 this 指针实现私有数据成员 n的赋值。 12 【正确答案】 B 【试题解析】 本题考查运算符的重载。假定已经作为某个类的成 员函数重载了二元运算符 +,且 c1、 c2 都是该类的对象,则 c1.operator+(c2)与 c1+c2含义相同。如果 +作为该类的非成员函数重载,则 operator+
20、(cl, c2)与 cl+c2含义相同。同理,运算符 “/”作为友元函数重载,则 (-x)/y与表达式 operator/(-x), y)相同。前缀运算符 “-”作为友元函数重载,则 -x与 operator-(x)相同,所以组合起来是operator/(operator-(x), y);,即 B选项。 13 【正确答案】 D 【试题解析】 本 题考查的是静态数据成员的使用, n 为类 A的静态成员,即为类A的所有对象共有的成员,所以,当对象 b把 n 初始化为 3时,对象 a的成员 n的值也为 3(这两个 n 实际上是同一个 ) 。 14 【正确答案】 B 【试题解析】 此题考查的是派生类中
21、的访问权限。继承方式包括公有、保护和私有派生。私有继承时基类中的 protected 成员在派生类中变成了 private成员,所以选项 B)错误。 15 【正确答案】 A 【试题解析】 C+中,若没有类的显式声明构造函数则系统会为其提供一个默认的构造函数,若提供了构造 函数则会将系统提供的默认的构造函数覆盖。调用构造函数时,实参必须与形参匹配。但是如果声明一个对象指针时,不是定义一个对象,不调用对象的构造函数。 16 【正确答案】 C 【试题解析】 在主函数中 for循环语句执行 4次,第一次循环结束时,变量 f 的值等于 1, f1的值等于 1, f2的值等于 1;第二次循环结束时,变量
22、f 的值等于2, f1的值等于 1, f2的值等于 2;第三次循环结束时,变量 f的值等于 3, f1的值等于 2, f2的值等于 3;第四次循环结束时,变量 f的值等于 5, f1的值等于 3, f2的值等于 5;结束循环。 17 【正确答案】 A 18 【正确答案】 C 【试题解析】 虚基类的声明格式: class(类名 ): virtual继承方式基类名。其中关键字 virtual 与继承方式的位置无关,但必须位于虚基类类名之前,且virtual 只对紧随其后的基类名起作用。 19 【正确答案】 A 20 【正确答案】 D 21 【正确答案】 B 22 【正确答案】 B 23 【正确答案
23、】 D 【试题解析】 多态性的相关概念。 24 【正确答案】 C 【试题解析】 C+语言中 默认小数的输出位一共是 6位, fixed的意义是在小数点后保留 6位。 25 【正确答案】 C 26 【正确答案】 C 【试题解析】 数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基础。 27 【正确答案】 B 【试题解析】 派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须重新定义。 28 【正确答案】 A 【试题解析】 本题考核 while循环语句和指针的使用。在该函数中,循环开始时,指针 p指向字符串的第 1个字符,指针 q指
24、向字符串的最后一个字符,首先交换这两个字符:然后,指针 p 前进一个字符位置 (指向下一个字符 ),指针 q 后退一个字符位置 (指向前一个字符 );经过若干次循环,条件 p q 将为假 (即指针 p 和指针 q相遇 ),循环结束。从而实现了将一个字符串首尾颠倒的功能。 29 【正确答案】 A 【试题解析】 C+语言规定在使用 scanf输入时可以用作数据分隔符的有空格,回车和 Tab键。用户如果要从键盘输入空格字符,则需要使用其他的输入方式。 30 【正确答案】 B 【试题解析】 本题考察指针和数组的 关系。其根本的联系在于数组名表示该数组的首地址,等同于指针,因此用数组名进行指针运算是正确
25、的,并能够进行与整数的加减操作。考生要注意的是 *的运算优先级和 的运算优先级的大小问题;本题正确答案为 B。 31 【正确答案】 C 【试题解析】 虚函数的引入是为了解决动态绑定问题,使类的实例表现出多态性,虚函数在继承后依然保持虚函数特性,此时不需要用 virtual 关键词修饰。 32 【正确答案】 A 【试题解析】 endl 与 n的作用相同。 33 【正确答案】 A 【试题解析】 使 用函数模板,要求形参必须为相同类型。 34 【正确答案】 B 【试题解析】 本题考查的知识点是保护继承。题目中的 Derived 类保护继承了Base类,因此 Base类中的公有成员与保护成员均成了 D
26、erived 类的保护成员,而Base类的私有成员 Derived类不可访问。所以,主函数中通过 Derived类的对象只能够访问到 Derived 类的公有成员,即只能调用 fun4()函数。故应该选择 B。 35 【正确答案】 D 【试题解析】 一共定义了 3个 Sample的对象, a2包含两个 sample元素,调用两次构造函数, newsample 调用一次构造函数,故其构造函数执行了 3次。 36 【正确答案】 一对多 或 I:N, 37 【正确答案】 降低复杂性 【试题解析】 模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。 38 【
27、正确答案】 数据 【试题解析】 数据库是由一个互相关联的数据的集合和一组用以访问这些数据的程序组成,这些数据按一定的数据模型组织、描述和储存 39 【正确答案】 栈 【试题解析】 栈具有记忆作用 。 40 【正确答案】 线性结构 【试题解析】 数据结构分为线性结构和非线性结构,其中队列属于线性结构。队列有两种存储结构,一种是顺序存储结构,称为顺序队列;另一种是链式存储结构,称为链队列。题目中所说的带链的队列就是指链队列。无论队列采取哪种存储结构,其本质还是队列,还属于一种线性结构。因此,本题的正确答案是线性结构。 41 【正确答案】 A() 【试题解析】 此题考查的是类的构造与析构。本题要求输
28、出的结果中包含 aa,所以基类 A中横线处的函数一定要被执行。横线处应是定义基类的构造或者 析构函数,如果定义的是构造,那么 aa肯定在 new 操作时就输出,而下面的 bb 是在析构函数中,会在 delete时被输出。故可以肯定应填入基类 A的析构函数定义A()。 42 【正确答案】 内存地址。 【试题解析】 指针变量指向的不是变量保存的数据值,而是变量的地址,所以指针变量保存的是对象的内存地址。 43 【正确答案】 友元函数 【试题解析】 此题考查的是非成员函数对类的成员的访问权限,非成员函数只有在声明为类的友元函数才能访问这个类的所有 privace成员,否则是不能访问类的私有成员的 。
29、 44 【正确答案】 成员初始化列表 【试题解析】 C+语言规定对基类数据成员的初始化必须在派生类的构造函数中的成员初始化列表中进行。 45 【正确答案】 private 46 【正确答案】 efgh 【试题解析】 本题定义了一个字符型指针变量 p,并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量 r和一个长整型指针变量 q。首先通过语句 “a=(long*)p; ”,把 p 的地址值强制转换为长整型地址值并赋值给小然后执行“q+; ”,地址值增加了 4,执行语句 “r=(char*)q; ”,把长整型指针变量 q 的值再强制转换成字符型地址值并赋给 r, r的值应为字符串中字符
30、 “e”的地址。最后输出 r指向的字符串。 47 【正确答案】 私有继承 48 【正确答案】 fin 【试题解析】 如果程序没有用 close()主动关闭文件,则在文件流对象退出作用域时,被调用的析构函数会关闭对象所联系的文件。但应及时关闭,以便尽早释放占用的系统资源并将文件置于更安全的状态。 49 【正确答案】 4004 1001 【试题解析】 本题考查静态成员变量在不同对象间的共享现象。无论哪个对 象修改了其静态变量的值,其他对象再访问该变量时已经发生了变化。 50 【正确答案】 4 【试题解析】 分析本题可知函数功能为计算一个字符串中包含的数字个数。字符串中包含的数字有 2008,故输出为 4。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1