C++面向对象程序设计期末考试试卷

版权申诉
0 下载量 80 浏览量 更新于2024-08-26 收藏 54KB DOC 举报
"这是一份面向对象程序设计的C++期末试卷,包含了选择题和对C++编程语言特性的考察,如标识符规则、枚举类型、循环控制、继承访问修饰符、常量指针操作、数组与指针、成员函数、函数重载等知识点。" 在这份试卷中,我们可以深入探讨以下几个重要的C++编程知识点: 1. **标识符**:合法的C++标识符由字母、数字和下划线组成,且不能以数字开头。选项A(4on1)不符合这一规则,因此不是合法标识符。 2. **枚举类型**:在给定的枚举类型中,BLUE的值可以通过计算得出,由于BLACK等于3,RED是下一个值,所以BLUE的值是4。选项C(287)是错误的。 3. **循环控制**:`for(int x=0,y=0;!x&&y<=5;y++)`这个循环将在y不小于6时停止,因为`!x`在x被初始化为0时始终为真,因此循环体实际执行了6次,答案是B(5)。 4. **继承访问修饰符**:在C++中,公有继承时,基类的public成员保持public,protected成员保持protected,而private成员变为派生类的private。选项B是正确的,表示公有继承不会改变基类private成员的访问性。 5. **常量指针**:已经定义了`const char* name="chen"`,表明name是一个指向常量字符数组的指针,不能修改它所指向的值。因此,选项A(name[3]='q')和B(name="lin")都是错误的。选项C和D涉及到动态分配内存,与题目情境不符,但根据C++规定,也是错误的。 6. **do-while循环**:这段代码中的do-while循环会在i等于6时结束,因为i在循环内部先自增到7,然后在循环条件检查前再次自增到8,满足退出条件。因此,i的最终值是B(7)。 7. **数组与指针**:对于数组`int a[]={1,2,3,4,5,6,7,8}`,表达式`*(a+5)`表示访问数组的第六个元素,其值为6;`*a+5`表示先解引用数组的第一个元素,然后加上5,结果为6+5=11;`a+4`是数组的第五个元素的地址;`*(a+4)`才是第五个元素的值,即5。所以正确答案是D。 8. **成员函数**:C++类的成员函数包括公有、私有和保护成员函数,以及构造函数。友元函数不是类的成员,因此答案是D。 9. **函数参数传递**:函数`void f(int &a, char *b)`需要传入一个整型引用和一个字符指针。由于`s`是int类型,`t`是字符串,所以正确的调用方式是将s的地址传递给第一个参数,t直接传递给第二个参数,即选项B(f(&s, t))。 10. **函数重载**:函数重载允许有多个同名但参数列表不同的函数。选项B中的`int add(intx,int)`和`int add(intx,inty)`有相同的参数列表,因此是不正确的重载。 通过解答这些题目,可以加深对C++语言特性和面向对象编程概念的理解,有助于进一步学习和实践。