一、选择题(每小题1分,共40分)1[单选题]有如下程序:运行后的输出结果是()。A.3B.5C.6D.编译出错参考答案:C参考解析:题意中,add()函数接收3个double类型的参数,最后一个形参e具有默认值1,函数将三个参数相加,返回相加的结果;main()函数中,调用add()函数,传人两个参数,所以形参c使用默认值1,对应参数的值为:2,3,1,函数将a、b、c转换为double类型后,相加,并将结果6.0作为函数值返回,返回值转换为int赋给result,最终输出result的值。本题答案为C选项。2[单选题]下列关于类定义的说法中,正确的是()。A.类定义中包括数据成员和函数成员的声明B.类成员的缺省访问权限是保护的C.数据成员必须被声明为私有的D.成员函数只能在类体外进行定义参考答案:A参考解析:类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。3[单选题]必须用一对大括号括起来的程序段是()。A.switch语句中的case标号语句B.if语句的分支C.循环语句的循环体D.函数的函数体参考答案:D参考解析:本题考查C++基本控制结构,A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。4[单选题]计算数列第n项的函数定义如下:若执行函数调用表达式fa(4)时,返回的函数值为()。A.53B.17C.23D.49参考答案:A参考解析:题意中fa()函数是一个递归函数,当参数n大于1时,函数返回值为3*fa(n-1)+2,当n等于1时,函数返回值为1,所以fa(4)=3*fa(3)+2=3*(3$fa(2)+2)+2=3*(3*(3*fa(1)+2)+2)+2=3*(3*(3+2)+2)+2=53。本题答案为A选项。5[单选题]有如下程序:运行时的输出结果是()。A.Book:C++B.Book:UnknownC.Unknown:C++D.Unknown:Unknown参考答案:A参考解析:C++中,多态调用必须满足两个条件:被调用的成员函数是虚函数;必须通过基类类型的引用或指针进行函数调用。题意的main()函数中首先定义一个Book类对象,对象名为book,在构造book对象时,程序过程如下:首先调用Book类的构造函数,传人参数“C++”,在构造函数执行函数体前,再调用基类Publication的默认构造函数:传入字符串“C++”,基类构造函数在成员初始化列表中,使用传人的参数“C++”为name赋值;此时继承于基类的成员:name存放字符串“C++”。然后main()函数调用showPublication()函数,传人book对象:showPublication()函数接收Publication类对象的引用p,然后调用p.getType()和p.getName()输出。由于getType()成员函数...