1、国家二级(C+)机试模拟试卷 153 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.在关系代数运算中,有 5 种基本运算,它们是( )。(分数:2.00)A.并()、差()、交()、除()和笛卡儿积()B.并()、差()、交()、投影()和选择()C.并()、交()、投影()、选择()和笛卡儿积()D.并()、差()、投影(x)、选择()和笛卡儿积()2.在数据库系统的组织结构中,下列( )映射把用户数据库与概念数据库联系了起来。(分数:2.00)A.外模式模式B.内模式外模式C.模式内模式D.内模式模式3.下列关于线性链表的描述中,正确的
2、是( )。、只含有一个指针域来存放下一个元素地址、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)、结点由两部分组成:数据域和指针域。(分数:2.00)A.仅、B.仅、C.仅、D.全部4.下面关于数据库三级模式结构的叙述中,正确的是( )。(分数:2.00)A.内模式可以有多个,外模式和模式只有一个B.外模式可以有多个,内模式和模式只有一个C.内模式只有一个,模式和外模式可以有多个D.模式只有一个,外模式和内模式可以有多个5.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一
3、趟划分后的结果为( )。(分数:2.00)A.23, 13, 51, 57, 66, 26, 81, 69, 76B.13, 23, 26, 51, 57, 66, 81, 76, 69C.23, 13, 51, 57, 26, 66, 81, 69, 76D.23, 13, 51, 57, 81, 26, 66, 69, 766.下列哪一条不属于数据库设计的任务?( )(分数:2.00)A.设计数据库应用结构B.设计数据库概论结构C.设计数据库逻辑结构D.设计数据库物理结构7.数据库技术的根本目标是( )。(分数:2.00)A.数据存储B.数据共享C.数据查询D.数据管理8.需求分析阶段的任
4、务是( )。(分数:2.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能9.关系数据库管理系统能实现的专门关系运算包括( )。(分数:2.00)A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表10.数据管理技术发展的三个阶段中,( )没有专门的软件对数据进行管理。人工管理阶段文件系统阶段数据库阶段(分数:2.00)A.仅B.仅C.和D.和11.阅读以下程序: #inc1udeiostreamh void main() static int a2=5,3,1,2; int i,j,s1=0; for(i=0;i2;j+) for(j=0j2;
5、j+) if(i=j) s1=s1+aij; couts1end1; 则该程序的输出结果为( )。(分数:2.00)A.6B.7C.8D.912.若有如下程序段: #inc1udeiostream using namespace std; int main() char*p=“abcdefgh“,*r; r=p; cout*rend1; return 0: 该程序的输出结果是( )。(分数:2.00)A.aB.bC.cD.d13.有如下程序: #inc1udeiostream using namespace std; void fun(intx=y;y=t;) int main() int a
6、2=1,2; fun(a1,a0); std:couta0”,”a1std:end1; return 0; 执行后的输出结果是( )。(分数:2.00)A.2,2B.1,1C.1,2D.2,114.在 C+语言中函数返回值的类型是由( )决定的。(分数:2.00)A.调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型D.调用该函数时的主调函数类型15.下面程序的运行结果是( )。 #inc1udeiostreamh int x=5; int fun(int a) int c: cx*a; return c: void main() int x=3,a=4;
7、 x=x+fun(a); cout“x=“ xend1;(分数:2.00)A.x=15B.x=17C.x=23D.x=2516.分析下面程序,该程序的运行结果是( )。 #inc1udeiostreamh c1ass TestClass public: static int m, TesK:lass () m+; TestClass (int n) m=n; static void test() m+; ;int TestClass:m=0; void main() TestClass A; TestClass B(3); Atest(); TestClass:test(); cout“m=“
8、Bmend1; (分数:2.00)A.m=3B.m=4C.m=5D.m=617.下列说法中错误的是( )。(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 的B.公有继承时基类中的 private 成员在派生类中仍是 private 的C.私有继承时基类中的 public 成员在派生类中是 private 的D.保护继承时基类中的 public 成员在派生类中是 protected 的18.下面关于构造函数和析构函数的描述,错误的是( )。(分数:2.00)A.析构函数中调用虚函数采用静态联编B.对虚析构函数的调用可以采用动态联编C.当基类的析构函数是虚
9、函数时,其派生类的析构函数也一定是虚函数D.构造函数可以声明为虚函数19.有如下程序: #inc1udeiostream using namespace std; c1ass TestClass public: TestClass ()cout“BASE“; ; c1ass TestClass1:public TestClass public: TestClass1 ()cout“DERIVED“; ; int main ()TestClass1 x;return 0; 执行后的输出结果是( )。(分数:2.00)A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBAS
10、E20.设有以下定义和程序: #inc1udeiostreamh c1ass TestClass1 pubitic: void showl0 cout“TestClass1“end1; ; c1ass TestClass2:TestClass1 public: void show2() cout“ TestClass2“end1; ; c1ass TestClass3:protected TestClass2 public: void show3() cout“TestClass 3“end1; ; void main() TestClass1 obj1; TestClass2 0bj2; T
11、estClass3 0bj3; 则以下不合语法的调用语句是( )。(分数:2.00)A.objlshow1();B.obj2show1();C.obj3show1();D.obj2show2();21.下面程序段的正确输出是( )。 int w4,x=3,y=2,z=1; cout“(wx?w:zy?z:x)end1;(分数:2.00)A.0B.1C.2D.322.若变量都已正确说明,则以下程序段的输出结果是( ) a=2;b=3; printf(ab?“*a=n“:“#b=d“,a,b);(分数:2.00)A.没有正确的输出格式控制B.输出为:*a=2C.输出为:#b=2D.输出为:*a=2
12、#b=223.若执行以下程序时从键盘上输入 9,则输出结果是( )。 main() int n; cinn; if(n+10)coutnend1; elsecoutnxend1; (分数:2.00)A.11B.10C.9D.824.以下程序的输出结果是( )。 ma:in() int a=4,b=5,c=0,d; d=!a (分数:2.00)A.1B.0C.非 0 的数D.一 125.给出下面程序输出结果( )。 #inc1ude iostreamh void main() int *p1; int *p2= int b=20; p1= (分数:2.00)A.10B.20C.40D.3026.
13、在下面的 4 个关键字中用来说明虚函数的是( )。(分数:2.00)A.virtualB.publicC.protectedD.private27.如果有以下定义及初始化: int a=3,*p= retum 0;后将输出( )。(分数:2.00)A.123*OKB.123#OKC.123*OK*D.123#OK#31.下列对模板的声明中,正确的是( )。(分数:2.00)A.temp1ateTB.temp1atec1ass T1T2C.temp1atec1assT1,c1ass T2D.temp1atec1ass T1;c1ass T232.有如下程序: #inc1udeiostream u
14、sing namespace std; c1ass AA int n; public: AA(int k):n(k) int get()retum n; int get()constreturn n+1; ; int main() AA a(5); const AA b(6); coutaget()bget(); return 0; 执行后的输出结果是( )。(分数:2.00)A.55B.57C.75D.7733.关于函数重载,下列叙述中错误的是( )。(分数:2.00)A.重载函数的函数名必须相同B.重载函数必须在参数个数或类型上有所不同C.重载函数的返回值类型必须相同D.重载函数的函数体可
15、以有所不同34.以下程序的执行结果为( )。 #inc1udeiostreamh c1ass Samp1e int n; public: Samp1e(int i)n=i; operator+0n+; 前缀重载运算符 operator+(int)n+=2; 后缀重载运算符 void disp() cout“n=“nend1; ; void main() Samp1e A(2),B(2); A+: +B; Adisp(); Bdisp(); (分数:2.00)A.n=4 n=3B.n=1 n=2C.n3 n=4D.n=5 n=635.重载输入流运算符“”必须使用的原型为( )。(分数:2.00)
16、A.istreamB.istreamC.istream operator(istream,类名);D.类名operator(istream,类名);36.运算符函数调用格式的表达式“y/x+”与表达式“yoperator/(operator+(x,0)”的含义相同,由此可看出( )。(分数:2.00)A.“”和“+”都是作为成员函数重载的B.“”和“+”都是作为非成员函数重载的C.“”是作为成员函数重载的,“+”是作为非成员函数重载的D.“”是作为非成员函数重载的,“+”都是作为成员函数重载的37.派生类的构造函数的成员初始化列表中,不能包含( )。(分数:2.00)A.基类的构造函数B.派生
17、类中子对象的初始化C.基类中子对象的初始化D.派生类中一般数据成员的初始化38.在下面的类定义中,横线处应填入的内容是( )。 c1ass Fred public: void print()coutdataend1;) void setData(double d)data=d;) static int count, private: double data; ; count=0; /静态数据成员的定义(分数:2.00)A.intB.staticintC.int Fred:D.static int Fred:39.下列关于 this 指针的叙述中,正确的是( )。(分数:2.00)A.任何与类相
18、关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针40.下列情况中,不会调用拷贝构造函数的是( )。(分数:2.00)A.用一个对象去初始化同一类的另一个新对象时B.将类的一个对象赋值给该类的另一个对象时C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时二、基本操作题(总题数:1,分数:2.00)41.使用 VC6 打开考生文件夹下的源程序文件 modilcpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动 mai
19、n 函数,不能增行或删行,也不能更改程序的结构,错误的语句在*error*的下面。 #inc1ude iostream *enror* temp1ateT void fun(T t) std:cout“test“std:end1; *error* temp1atebool void fun(bool t) std:cout(t? “Hello“: “Hi“)std:end1; int main() *error* bool flag= TRUE; fun(flag); fun(int)flag); return 0; (分数:2.00)_三、简单应用题(总题数:1,分数:2.00)42.使用
20、VC6 打开考生文件夹下的源程序文件 mod12cpp。请完成函数 fun(intx),该函数功能是将 x 的值转换成二进制数输出到屏幕,并且在函数中调用写函数 WriteFile()将结果输出到 modi2txt 文件中。例如:x=13, 13 的二进制数字为 1101,则输出到屏幕的为 1101。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 #inc1ude iostream #inc1udefstream #inc1udecmath using namespace std; void Wr:iteFile(char* str) ofstream outl;
21、outlopen(“modi2txt“,ios_ base:binarylios_base:app); for(int i=0; stri!=0;1+) outlput(stri); outlc1ose(); void fun(int x) void ClearFile() ofstream outl; out1,open(“modi2txt“); outlc1ose(), int main() ClearFile(); fun(13); return0; (分数:2.00)_四、综合应用题(总题数:1,分数:2.00)43.使用 VC6 打开考生文件夹下的源程序文件 modi3cpp。通过继
22、承完成输入到屏幕指定的信息: TestClassA TestClassB TestClassC 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类 B 虚继承于 A,请在注释*1*后添加适当的语句。 (2)完成类 C 虚继承于 A,请在注释*2*后添加适当的语句。 (3)完成类 D 继承于 B,C,请在注释*3*后添加适当的语句。 (4)函数 fun 过调用基类的 fun,完成所输出的内容,请在注释/*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #inc1udeiostreamh c1ass TestCla
23、ssA public: void fun() coutTestClassA”end1; ) ); *1* c1ass TestClassB public: void fun() cout“TestClassB“end1; ); *2* c1ass TestClassC public: void fun() cout“TestClassC“end1; ; *3* c1ass TestClassD public: void fun() *4* ; void main() TestClassD test; testfun(); return; ;(分数:2.00)_国家二级(C+)机试模拟试卷 15
24、3 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.在关系代数运算中,有 5 种基本运算,它们是( )。(分数:2.00)A.并()、差()、交()、除()和笛卡儿积()B.并()、差()、交()、投影()和选择()C.并()、交()、投影()、选择()和笛卡儿积()D.并()、差()、投影(x)、选择()和笛卡儿积() 解析:解析:并、差、笛卡儿积、投影和选择是 5 种基本的运算,其他运算即交、连接和除,均可以通过5 种基本的运算来表达。2.在数据库系统的组织结构中,下列( )映射把用户数据库与概念数据库联系了起来。(分数:2.00)A.外模
25、式模式 B.内模式外模式C.模式内模式D.内模式模式解析:解析:数据库有两层映像,即外模式/模式和模式/内模式映像。模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。3.下列关于线性链表的描述中,正确的是( )。、只含有一个指针域来存放下一个元素地址、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)、结点由两部分组成:数据域和指针域。(分数:2.00)A.仅、B.仅、C.仅、D.全部 解析:解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;
26、另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。4.下面关于数据库三级模式结构的叙述中,正确的是( )。(分数:2.00)A.内模式可以有多个,外模式和模式只有一个B.外模式可以有多个,内模式和模式只有一个 C.内模式只有一个,模式和外模式可以有多个D.模式只有一个,外模式和内模式可以有多个解析:解析:数据库的三级模式结构是指数据库系统的外模式、模式和内模式。一个数据库可以有多个外模式,但只有一个模式和一个内模式。5.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素
27、为划分的基准,那么第一趟划分后的结果为( )。(分数:2.00)A.23, 13, 51, 57, 66, 26, 81, 69, 76 B.13, 23, 26, 51, 57, 66, 81, 76, 69C.23, 13, 51, 57, 26, 66, 81, 69, 76D.23, 13, 51, 57, 81, 26, 66, 69, 76解析:解析:快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。6.下列哪一条不属于数据库设计
28、的任务?( )(分数:2.00)A.设计数据库应用结构 B.设计数据库概论结构C.设计数据库逻辑结构D.设计数据库物理结构解析:解析:数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数据库设计分为以下 6 个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。7.数据库技术的根本目标是( )。(分数:2.00)A.数据存储B.数据共享 C.数据查询D.数据管理解析:解析:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集
29、成,并可被各个应用程序所共享,所以数据库技术的根本目标是解决数据共享问题。8.需求分析阶段的任务是( )。(分数:2.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能 解析:解析:需求分析时软件定义时期的最后一个阶段,它的基本任务就是洋细调查现实世界要处理的对象,充分了解原系统的上作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。9.关系数据库管理系统能实现的专门关系运算包括( )。(分数:2.00)A.排序、索引、统计B.选择、投影、连接 C.关联、更新、排序D.显示、打印、制表解析:解析:关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。1
30、0.数据管理技术发展的三个阶段中,( )没有专门的软件对数据进行管理。人工管理阶段文件系统阶段数据库阶段(分数:2.00)A.仅 B.仅C.和D.和解析:解析:数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。11.阅读以下程序: #inc1udeiostreamh void main() static int a2=5,3,1,2; int i,j,s1=0; for(i=0;i2;j+) for(j
31、=0j2;j+) if(i=j) s1=s1+aij; couts1end1; 则该程序的输出结果为( )。(分数:2.00)A.6B.7 C.8D.9解析:解析:程序中“static int a2=5,3,1,2;”定义了一个 2*2 的整型矩阵。两个 for 循环读取数组元素。“if(i=j)”语句中的条件是取矩阵的正对角线上的元素。对角线上的元素为 5,2,所以“s1=s1+aii”的计算结果为 7。12.若有如下程序段: #inc1udeiostream using namespace std; int main() char*p=“abcdefgh“,*r; r=p; cout*re
32、nd1; return 0: 该程序的输出结果是( )。(分数:2.00)A.a B.bC.cD.d解析:解析:字符指针 p 指向“abcdefgh”字符串,语句“r=p;”是 r 指向 p 指向的字符串,而*r 则是指向字符串中的第一个字符。即 a。13.有如下程序: #inc1udeiostream using namespace std; void fun(intx=y;y=t;) int main() int a2=1,2; fun(a1,a0); std:couta0”,”a1std:end1; return 0; 执行后的输出结果是( )。(分数:2.00)A.2,2B.1,1 C
33、.1,2D.2,1解析:解析:程序中的 fun 函数的功能是实现函数中两个参数的交换。主函数中 fun 的调用中第一个参数为数组第二个值即 2,第二个参数为第一个值即 1。在 fun 的定义中第一个形参引用类型,其改变会改变主函数中实参的值;而第二个形参不是引用类型,其改变不会改变第二个实参,所以 2,1 的交换结果为1,1,即 B。14.在 C+语言中函数返回值的类型是由( )决定的。(分数:2.00)A.调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型 D.调用该函数时的主调函数类型解析:解析:C+中函数 retum 语句中返回的类型应与函数定义指定
34、的类型一致,即函数定义的类型即为函数应返回的类型。15.下面程序的运行结果是( )。 #inc1udeiostreamh int x=5; int fun(int a) int c: cx*a; return c: void main() int x=3,a=4; x=x+fun(a); cout“x=“ xend1;(分数:2.00)A.x=15B.x=17C.x=23 D.x=25解析:解析:由主函数 main 入手,首先 x 被赋值为 3,a 被赋值为 4。然后调用 fun 函数,参数为 4,所以在 fun 函数中的 a=4。而主程序中的 x 作用域是由它定义开始到 cout 输出,在
35、fun 函数中无效。而在fun 函数定义前的变量 x 作用域是整个程序,所以 fun 函数中的 x 值为 5,这样 c 的值就为 20。在主函数中的 x+fun(a)中的 x 为靠近这条语句的 x 定义,即 3,所以最后 x 的值为 20+3=23。16.分析下面程序,该程序的运行结果是( )。 #inc1udeiostreamh c1ass TestClass public: static int m, TesK:lass () m+; TestClass (int n) m=n; static void test() m+; ;int TestClass:m=0; void main()
36、TestClass A; TestClass B(3); Atest(); TestClass:test(); cout“m=“Bmend1; (分数:2.00)A.m=3B.m=4C.m=5 D.m=6解析:解析:由主函数 main 入手,首先定义 TestClass 对象 A,B:对象 B 构造函数值为 3,构造函数中m+,所以这时 m=4。主函数中调用 Atest(),因为“staticint m;”,m 被定义为类 TestClass 静态成员变量,当它的值改变后,则在各对象中这个数据成员的值都同时改变了。所以这里执行“Atest();”中的 m 为前面进行加 1 操作后的 4,即 m
37、 现在的值为 5。17.下列说法中错误的是( )。(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 的B.公有继承时基类中的 private 成员在派生类中仍是 private 的 C.私有继承时基类中的 public 成员在派生类中是 private 的D.保护继承时基类中的 public 成员在派生类中是 protected 的解析:解析:公用继承时基类中的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。私有继承时,基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。受保护的继承时,基类的公用成员和保护成员在
38、派生类中成了保护成员,其私有成员认为基类私有。18.下面关于构造函数和析构函数的描述,错误的是( )。(分数:2.00)A.析构函数中调用虚函数采用静态联编B.对虚析构函数的调用可以采用动态联编C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数D.构造函数可以声明为虚函数 解析:解析:构造函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联。19.有如下程序: #inc1udeiostream using namespace std; c1ass TestClass public: TestCla
39、ss ()cout“BASE“; ; c1ass TestClass1:public TestClass public: TestClass1 ()cout“DERIVED“; ; int main ()TestClass1 x;return 0; 执行后的输出结果是( )。(分数:2.00)A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE 解析:解析:程序中的 TestClass1 为 TestClass 的派生类,从程序中的 main 函数入手,定义了TestClass1 对象 x。调用析构函数的顺序,先执行派生类自己的析构函数,对派生类新增加的成员进行清
40、理,然后调用子对象的析构函数,对子对象进行清理,最后调用基类的析构函数,对基类进行清理。这里派生类中析构函数输出 DERIVED,基类析构函数输出 BASE。20.设有以下定义和程序: #inc1udeiostreamh c1ass TestClass1 pubitic: void showl0 cout“TestClass1“end1; ; c1ass TestClass2:TestClass1 public: void show2() cout“ TestClass2“end1; ; c1ass TestClass3:protected TestClass2 public: void sh
41、ow3() cout“TestClass 3“end1; ; void main() TestClass1 obj1; TestClass2 0bj2; TestClass3 0bj3; 则以下不合语法的调用语句是( )。(分数:2.00)A.objlshow1();B.obj2show1();C.obj3show1(); D.obj2show2();解析:解析:TestClass1 为 TestClass2 的私有基类,所以派生类 TestClass2 中继承过来的 showl0 为私有的。TestClass3 为 TestClass2 的受保护派生类。所以 TestClass3 定义的对象
42、不能访问 TestClass 中的 showl()。21.下面程序段的正确输出是( )。 int w4,x=3,y=2,z=1; cout“(wx?w:zy?z:x)end1;(分数:2.00)A.0B.1 C.2D.3解析:解析:本题考查表达式作为变量进行输出,且表达式为两个三目表达式的嵌套,其中,第 1 个三目表达式 zy?z:x 的值为 l,接着计算第 2 个三目表达式 wx?w:1,值为 1。22.若变量都已正确说明,则以下程序段的输出结果是( ) a=2;b=3; printf(ab?“*a=n“:“#b=d“,a,b);(分数:2.00)A.没有正确的输出格式控制B.输出为:*a=
43、2C.输出为:#b=2 D.输出为:*a=2#b=2解析:解析:本题实际上是考查 C 语言中的格式化输入输出知识,同时本题也考查了三目表达式的知识。如果逻辑表达式为真,则执行冒号之前的,否则执行冒号之后的表达式。23.若执行以下程序时从键盘上输入 9,则输出结果是( )。 main() int n; cinn; if(n+10)coutnend1; elsecoutnxend1; (分数:2.00)A.11B.10 C.9D.8解析:解析:本题考查的是后置自增运算符的知识,这类题考生往往做错,主要原因是不能正确拆解。题中 if 语句可以拆解为:if(910),n+1=10,cout10end1
44、;,自增所代表的加 1 操作要紧跟在原表达式后面,而不是原语句后面。24.以下程序的输出结果是( )。 ma:in() int a=4,b=5,c=0,d; d=!a (分数:2.00)A.1 B.0C.非 0 的数D.一 1解析:解析:本题考查逻辑运算,只要考生掌握了逻辑运算的优先级就可以正确得到答案为选项 A)。或运算的优先级最高, int *p2= int b=20; p1= (分数:2.00)A.10B.20 C.40D.30解析:解析:p1 指向 b,而 p 指向 p1 的地址。*p2 表示 p1 的地址,p1 的地址就是 retum 0;后将输出( )。(分数:2.00)A.123
45、*OKB.123#OK C.123*OK*D.123#OK#解析:解析:Coutfill()用于设置或返回输出的填充字符,默认是空格,fill()函数的设置一直有效,直到下一个 fll()函数改变该值为止。setw(int n)作用是设置输入输出的宽度,此设置只对一次输入或输出有效,在完成一次数据的输入或输出后,宽度设置自动恢复为 0。注意:默认为输出数据在指定宽度内右对齐。31.下列对模板的声明中,正确的是( )。(分数:2.00)A.temp1ateTB.temp1atec1ass T1T2C.temp1atec1assT1,c1ass T2 D.temp1atec1ass T1;c1ass T2解析:解析:声明一个函数模板的格式为:temp1ate模板形参表声明函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。32.有如下程序: #inc1udeiostream using namespace std; c1ass AA