一、单选题
1、关于面向对象的程序设计方法,下列说法正确的是______。
A:"封装性"指的是将不同类型的相关数据组合在一起,作为一个整体进行处理
B:"多态性"指的是对象的状态会根据运行时要求自动变化
C:基类的私有成员在派生类的对象中不可访问,也不占内存空间
D:在面向对象的程序设计中,结构化程序设计方法仍有着重要作用
答案:D 封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部;多态性是指当多种事物继承自一种事物时,同一种操作在它们之间表现出不同的行为;基类的私有成员对派生类来说是不可访问的,因此在派生类中直接引用基类的私有变量成员是不允许的,可以通过基类的公用成员函数来引用基类的私有变量成员;C++是一种优秀的高级程序设计语言,它是以C语言为基础而逐渐发展起来的。C++语言既保留了传统的结构化程序设计方法,又对流行的面向对象程序设计方法提供了完整的支持。
知识点:C++部分/C++语言概述/掌握C++程序的基本框架
2、判断字符型变量ch是否为大写英文字母,应使用表达式______。
A:ch>='A'&ch<='Z' B:ch<='A'||ch>='Z' C:'A'<=ch<='Z' D:ch>='A'&&ch<='Z'
答案:D C++语言提供了三种逻辑运算符,它们是:!(逻辑非)、&&(逻辑与)、||(逻辑或)。其中!为单目运算符,&&和||为双目运算符。本题的选项中符合题意的是D。
知识点:C++部分/数据类型、表达式和基本运算/熟练掌握C++表达式类型及求值规则
3、已知下列语句中的x和y都是int型变量,其中错误的语句是______。
A:x=y++; B:x=++y; C:(x+y)++; D:++x=y;
答案:C 对于C++、--这样的运算,其操作数必须为一变量,因为x+y是表达式故答案C是错误的。 知识点:C++部分/数据类型、表达式和基本运算/掌握变量的定义与使用方法
4、执行语句序列
int n;
cin>>n;
switch(n)
{ case 1:
case 2:cout<<'1';
case 3:
case 4:cout<<'2';break;
default:cout<<'3';
}
时,若键盘输入1,则屏幕显示______。
A:1 B:2 C:3 D:12
答案:D switch语句又称为开关语句,它也是一种选择语句。switch语句的功能是根据给定表达式的不同取值来决定从多个语句序列中的哪里开始执行。 break语句又称为跳出语句。break语句只能用在switch语句和循环语句中。在switch语句中,break用来使执行流程跳出switch语句,而继续执行switch后面的语句。在循环语句中,break用来使执行流程无条件地跳出本层循环。
知识点:C++部分/C++的基本语句/用switch语句实现多分支选择结构
5、下列程序的输出结果是______。
#include<iostream>
using namespace std;
int main()
{
char a[]="Hello,World";
char *ptr=a;
while(*ptr)
{
if(*ptr>='a'&&*ptr<='z')
cout<<char(*ptr+'A'-'a');
else cout<<*ptr;
ptr++;
}
return 0;
}
A:HELLO,WORLD B:Hello,World C:hELLO,wORLD D:hello,world
答案:A 此程序段的功能是将字符串中的小写字母转换为大写字母并将其输出。
知识点:C++部分/C++的基本语句/用if语句实现分支结构
6、已知:int m=10;在下列定义引用的语句中,正确的是______。
A:int &x=m; B:int y=&m; C:int &z; D:int &t=&m;
答案:A 本题主要考查了对引用及地址(&)的理解,引用实际上就是别名,它与被引用变量拥有同一个地址空间,对于选项A而言,其操作实际上就是为m赋于一个别名x,因此选项A是对的。对于选项B,&m表示m的地址,而y是一个整型变量,在C++中不能从地址值隐式转换为整型值,故选项B是错的。对于选项C,引用必须要用被引用的对象,即引用必须要初始化;选项D中t是一个整型应用,而其被引用的对象却是m的地址,存在着与选项B类似的错误,因此选项D也是错的。
知识点:C++部分/数据类型、表达式和基本运算/掌握C++运算符的种类、运算优先级和结合性
7、下列函数原型声明中错误的是______。
A:void Fun(int x=0,int y=0);
B:void Fun(int x,int y);
C:void Fun(int x,int y=0);
D:void Fun(int x=0,int y);
答案:D 在C++中,可以为参数指定默认值,在函数调用时没有指定与形参相对应的实参时就自动使用默认值。默认参数可以简化复杂函数的调用。
默认参数通常在函数名第一次出现在程序中的时候,如在函数原型中,指定默认参数值。指定默认参数的方式从语法上看与变量初始化相似。例如:
void myfunc(int x=0,int y=1);
如果一个函数中有多个参数,则默认参数应从右至左逐个定义。
知识点:C++部分/掌握函数的有关使用/函数的定义方法和调用方法
8、已知程序中已经定义了函数test,其原型是int test(int,int,int);,则下列重载形式中正确的是______。
A:char test(int,int,int)
B:double test(int,int,double)
C:int test(int,int,int=0);
D:float test(int,int,float=3.5F);
答案:B 在对函数进行重载时,不允许为其指定缺省参数,故C、D是错的,同时,对于重载的函数原型间不允许有类型完全相同的参数列表,故A是错的,对于返回类型,在重载时没有特别的要求。
知识点:C++部分/掌握函数的有关使用/函数重载
9、有以下程序
#include<iostream>
int i=0;
void fun()
{ {
static int i=1;
std::cout<<i++<<',';
}
std::cout<<i<<',';
}
int main()
{
fun();fun();
return 0;
}
程序执行后的输出结果是______。
A:1,2,1,2, B:1,2,2,3, C:2,0,3,0, D:1,0,2,0,
答案:D 本题主要考查了static型的变量,在C++中可以为函数或类指定static型的变量,如果将一个变量指定为static型,则该变量在内存中仅有一个副本,同时在函数或类执行完成后空间不会被释放,以前的值将会被保留。同时还考查了C++中变量作用域的问题,在C++中如果要将一个变量限定在指定的范围内,可以将该作用域用{}包含起来,同时可在函数的外部指定全局变量,该变量的作用范围是从当前位置开始到程序结束。对于"static int i=1;"中的i,初始值为1,在调用std::cout<<i++<<','后,将输出"1,",然后自加1,对于第二句std::cout<<i<<',',该i所代表的应该是全局变量"i",故输出"0,"。在第二次执行fun()时,由于第一i为static型变量,其值是保留的,故输出"2,",对于第二个i则输出"0,"。
知识点:C++部分/掌握函数的有关使用/变量的作用域、生存周期和存储类别
10、已知函数f的原型是:void f(int *a,long &b);,变量v1、v2的定义是:int v1;long v2;,正确的调用语句是______。
A:f(v1,&v2); B:f(v1,v2); C:f(&v1,v2); D:f(&v1,&v2);
答案:C 对于函数f而言,其第一个参数为整型指针,第二个参数为一引用(实际上就是按地址传递参数),该引用是一长整型的引用。
对于选项A、B,实参变量 v1为整型,而所要传递的对应的形参变量a是指针型,它接受的是地址,若将实参变量v1改为&v1,那么这一传递就是正确的;对于选项A、D,&v2为一地址,传递给整型引用,也将导致出错。
知识点:C++部分/掌握函数的有关使用/函数的定义方法和调用方法
11、有以下类定义
class MyClass
{
public:
MyClass(){cout<<1;}
};
则执行语句MyClass a,b[2],*p[2];后,程序的输出结果是______。
A:11 B:111 C:1111 D:11111
答案:B class MyClass定义了一个类,其中MyClass(){cout<<1;}为其的构造函数,当程序创建类MyClass的实例时,该函数将会被调用,在执行"MyClass a,b[2],*p[2];"时,一共创建了3个这样的实例,故一共执行构造函数3多态性与虚函数次,对于变量p,则是声明了一个指针数组,该数组中的元素是指向类MyClass实例的指针,本身并没有创建类的实例。
知识点:C++部分/熟练掌握类与对象的相关知识/类的定义方式、数据成员、成员函数及访问权限
13、关于动态存储分配,下列说法正确的是______。
A:new和delete是C++语言中专门用于动态内存分配和释放的函数
B:动态分配的内存空间也可以被初始化
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论