"C 程序设计模拟试卷(二)"

版权申诉
0 下载量 67 浏览量 更新于2024-02-22 收藏 50KB DOCX 举报
"。5D. 6答案:B解析:(P117)执行“AB a(2), b[3], *p[4];”语句时,涉及到了类的对象a、数组b和指针数组p的声明,其中a(2)是一个对象a的声明并进行了初始化,调用构造函数1次;b[3]是一个大小为3的数组b的声明并进行了初始化,调用构造函数3次;*p[4]是一个指针数组p的声明,但不是对象的声明,不调用构造函数。所以调用构造函数的次数为1+3=4次。3. 下面有关static成员的说法中,错误的是()A. static数据成员是共享的B. static成员函数不能引用非static成员C. 静态成员函数没有this指针D. static成员可以被继承和隐藏答案:B解析:(P106)static数据成员是共享的,它属于类,而不是属于具体的对象(P107)静态成员函数没有this指针,因为this指针指向隐含的对象参数,静态成员是共享的,它不依赖于具体的对象,是属于类的一部分,所以是不具有this指针的。由于静态成员是共享的,所以说static成员变量是可以被继承的。既然静态成员函数没有this指针,自然就不能访问非静态的成员变量,只能访问static成员。静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员。4. 在C++程序设计中,为了调用基类的构造函数,可以使用()来调用A. superB. thisC. baseD. parent答案:C解析:(P75)在C++中,调用基类的构造函数可以使用base来调用。super是Java中的关键字,表示对超类的引用,this表示指向当前对象的指针,parent是命名约定,并不是C++中的关键字。5. 下面关于C++类的描述中,错误的是()A. 类成员函数可以访问该类的public、private和protected成员B. 类成员函数可以访问该类的static、non-static成员函数C. 类的成员变量可以是静态类型D. 类的成员函数可以是静态类型答案:D解析:(P106)类的成员函数可以是静态类型,但类的静态成员函数只能访问静态成员变量,而不能访问非静态的成员变量,也不能使用this指针。静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员;若要访问非静态成员时,必须通过参数传递的方式得到相应的对象,再通过对象来访问。6. 下面程序的输出结果是什么?#include <iostream>using namespace std;void fun(int n){ if(n>1){ fun(n-1); }}int main(){fun(3);return 0;}A. 输出3B. 输出2C. 输出1D. 以上都不对答案:C解析:(P121)上述程序是一个递归函数,fun函数的功能是不断递减n的值,直到n不大于1时结束递归。所以在主函数main中调用fun(3),fun函数依次调用fun(2)和fun(1),而fun(1)不再继续递归,所以最终输出结果为1。7. 下列程序运行后的输出结果是什么?#include <iostream>using namespace std;class A{public: virtual void show(){ cout<<"A"<<endl; }};class B: public A{public: void show(){ cout<<"B"<<endl; }};int main(){A *pa=new B;pa->show();return 0;}A. 输出A B. 输出B C. 编译出错D. 运行时错误答案:B解析:(P90)A是基类,B是派生类,当通过基类指针调用虚函数时,会根据指针指向对象的类型来决定调用哪个版本的虚函数。在这里,pa指向一个B类型的对象,所以调用show函数时会执行B类中的show函数,输出结果为B。8. 下列程序的输出结果是什么?#include <iostream>using namespace std;int main(){char a[20],*p;int i;for(i=0;i<20;i++){ a[i]=65+i;}p=a;for(i=0;i<20;i++){ cout<<*p;p++;}return 0;}A. 输出ABCDEFGHIJ·····答案:A解析:(P116)上述程序是一个简单的C++程序,定义一个包含20个元素的字符数组a,并初始化为字
2023-06-10 上传