C程序设计考试题库精简版剖析.docx
《C程序设计考试题库精简版剖析.docx》由会员分享,可在线阅读,更多相关《C程序设计考试题库精简版剖析.docx(141页珍藏版)》请在冰豆网上搜索。
C程序设计考试题库精简版剖析
【章节】第1章C++基础知识
【知识点】
1、C++程序的构成与书写形式;
2、基本数据类型,常量、变量和表达式
3、C++的标准输入输出
【单选题】
1、在C++中,源程序变为可执行程序的正确顺序应该是()。
A.编辑、链接、编译、执行B.编辑、编译、链接、执行
C.编译、编辑、链接、执行
D.编译、链接、编辑、执行
答案:
B
2、要把高级语言编写的源程序转换为目标程序,需要使用()。
A.编辑程序
B.驱动程序
C.调试程序
D.编译程序
答案:
D
3、下列关于C++与C语言的关系描述中,错误的是()。
A.C语言是C++语言的一个子集
B.C++与C语言是兼容的
C.C++对C语言进行了一些改进
D.C++和C语言都是面向对象的
答案:
D
4、下面为使用面向对象语言的正确理由是()。
A.面向对象程序由三种基本结构组成,分别是顺序结构、选择结构和循环结构
B.程序语句比面向过程语言简单
C.面向对象程序设计可以设计为自行修改错误
D.面向对象程序很容易概念化
答案:
D
5、以下选项中,合法的用户标识符是()。
A.long
B._2Test
C.3Dmax
D.A.dat
答案:
B
6、下列描述中正确的是()。
A.不是每个C++程序都必须包含预处理命令#include
B.C++程序必须有return语句
C.C++程序中的变量必须定义在主程序内部
D.C++程序中所使用的符号常量可以不进行定义
答案:
A
7、C++源程序文件的扩展名为()。
A..CPP
B..C
C..DLL
D..EXE
答案:
A
8、cout是I0流库预定义的()。
A.类
B.对象
C.包含文件
D.常量
答案:
B
9、C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是()。
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
答案:
D
10、下列选项中,()是不合法的标识符.
A.Program
B.Obj23
C.double
D.B_C_D
答案:
C
11、下列标识符中,不合法的用户标识符为()。
A.a~!
B._int
C.a_10
D.PAd
答案:
A
12、只能向终端输出一个字符的函数是()。
A.pringf函数
B.putchar函数
C.getchar函数
D.scanf函数
答案:
B
13、如果有整型量intx=5,执行情况x+=1.9后x的值为()。
A.6
B.7
C.结果不确定
D.表达式非法
答案:
A
14、已知a=5,b=3,表达式a+=a*=++b*3的值为()。
A.40
B.80
C.100
D.120
答案:
D
20、在C++语言中,自定义的标识符()。
A.能使用关键字并且不区分大小写
B.不能使用关键字并且不区分大小写
C.能使用关键字并且区分大小写
D.不能使用关键字并且区分大小写
答案:
D
32、C++语言程序的基本单位是()。
A.程序行
B.语句
C.函数
D.字符
答案:
B
37、C++对C语言作了很多改进,即从面向过程变成为面向对象的主要改进是()
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
答案:
D
38、下列符号属于c++语言用户标识符的是()。
A.DO
B.if
C.void
D.switch
答案:
A
39、任意一个类,析构函数的个数最多是()。
A.不限个数
B.1
C.2
D.3
答案:
B
【章节】第3章函数
【知识点】
1、C++函数的相关知识
2、函数定义与函数的调用
3、内联函数与函数重载
【单选题】
1、若有以下函数调用语句,在此函数调用语句中实参的个数是()。
fun(a+b,(y=10,y),fun(n,k,d));
A.3
B.4
C.5
D.6
答案:
A
2、以下程序的运行结果是()。
intmain()
{intk=4,m=1,p;
p=func(k,m);
cout<
p=func(k,m);
cout<
}
func(inta,intb)
{staticintm,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A.8,17
B.8,16
C.8,20
D.8,8
答案:
A
3.以下函数调用语句中,含有的实参个数是().
func(rec1,rec2+1,(rec3,rec4));
A.3
B.4
C.5
D.有语法错误
[答案]A
4.分析如下程序:
#include
intf(intb[],intn)
{inti,r=1;
for(i=0;i<=n;i++)
r=r*b[i];
returnr;
}
voidmain(){
intx,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
cout<}
上面程序的输出结果是()。
A.720
B.120
C.24
D.6
答案:
B
5、下列函数参数默认值定义错误的是()。
A.Fun(intx,inty=0)
B.Fun(intx=100)
C.Fun(intx=0,inty)
D.Fun(intx=f())(假定函数f()已经定义)
答案:
C
6、在函数定义前加上关键字“inline”表示该函数被定义为()。
A.重载函数
B.内联函数
C.成员函数
D.普通函数
答案:
B
7、一个函数功能不太复杂,但要求被频繁调用,选用()。
A.内联函数
B.重载函数
C.递归函数
D.嵌套函数
答案:
A
8、下面有关重载函数的说法中正确的是()。
A.重载函数必须具有不同的返回值类型
B.重载函数形参个数必须不同
C.重载函数必须有不同的形参列表
D.重载函数名可以不同
答案:
C
9、在C++语言中,对函数参数默认值描述正确的是()。
A.函数参数的默认值只能设定一个
B.一个函数的参数若有多个,则参数默认值的设定可以不连续
C.函数必须设定默认值
D.在设定参数的默认值后,该参数后面定义的所有参数都必须设定默认值
答案:
D
10、考虑函数原型voidtest(inta,intb=7,charz='*'),下面的函数调用中,属于不合法调用的是
A.test(5);
B.test(5,8);
C.test(6,'#');
D.test(0,0,'*');
答案:
C
11、以下对C++函数的有关描述中,正确的是()。
A.C调用函数时,只能把实参的值传给形参,形参的值不能传递给实参
B.C++函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C++程序中有调用关系的所有函数必须放在同一源程序文件中
答案:
A
12、在C++语言中函数返回值的类型是由()决定的。
A.调用该函数时系统临时
B.return语句中的表达式类型
C.定义该函数时所指定的函数类型
D.调用该函数时的主调函数类型
答案:
C
13、以下程序的输出结果是()。
intfunc(inta,intb)
{returna+b;}
intmain()
{intx=6,y=7,z=8,r;
r=func(func(x,y),z--);
cout<}
A.15
B.20
C.21
D.31
答案:
C
14、以下程序的输出结果是()。
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
intmain()
{intx=10,y=20,z=30;
fun(x,y,z);
cout<}
A.30,20,10
B.10,20,30
C.456,567,678
D.678,567,456
答案:
A
15、C++语言中,形参与实参之间的数据传递方式是()。
A.只能按值传递
B.只能按地址传递
C.既可以按值传递也可以按地址传递
D.以上说法都不对
答案:
C
16、分析以下程序:
#include
voidfun(intnum){cout<voidfun(charch){cout<<(ch+1)<intmain(){
fun('A');
return0;
}
以上程序的输出结果是()。
A.65
B.66
C.A
D.B
答案:
B
17、一个函数为voidf(intx,chary=‘a’),另一个函数为voidf(int),则它们()。
A.不能在同一程序块中定义
B.可以在同一个程序块中定义并可重载
C.可以在同一个程序块中定义,但不可以重载
D.以上说法均不正确
答案:
A
18、函数定义为Fun(int&i),变量定义n=100,则下面调用正确的是()。
A.Fun(20)
B.Fun(20+n)
C.Fun(n)
D.Fun(&n)
答案:
C
19、当一个函数无返回值时,函数的类型应为()。
A.任意
B.void
C.int
D.char
答案:
B
20、下列带缺省值参数的函数说明中,正确的说明是()。
A.intFun(intx,inty=2,intz=3);
B.intFun(intx=1,inty,intz=3);
C.intFun(intx,inty=2,intz);
D.intFun(intx=1,inty,intz=3);
答案:
A
21、下列函数参数默认值定义错误的是()。
A.Fun(intx,inty=0)
B.Fun(intx=100)
C.Fun(intx=0,inty)
D.Fun(intx=f())(假定函数f()已经定义)
答案:
C
22、在函数定义前加上关键字“inline”表示该函数被定义为()。
A.重载函数
B.内联函数
C.成员函数
D.普通函数
答案:
B
23、一个函数功能不太复杂,但要求被频繁调用,选用()。
A.内联函数
B.重载函数
C.递归函数
D.嵌套函数
答案:
A
24、下面有关重载函数的说法中正确的是()。
A.重载函数必须具有不同的返回值类型
B.重载函数形参个数必须不同
C.重载函数必须有不同的形参列表
D.重载函数名可以不同
答案:
C
25、在C++语言中,对函数参数默认值描述正确的是()。
A.函数参数的默认值只能设定一个
B.一个函数的参数若有多个,则参数默认值的设定可以不连续
C.函数必须设定默认值
D.在设定参数的默认值后,该参数后面定义的所有参数都必须设定默认值
答案:
D
26、考虑函数原型voidtest(inta,intb=7,charz='*'),下面的函数调用中,属于不合法调用的是()。
A.test(5);
B.test(5,8);
C.test(6,'#');
D.test(0,0,'*');
答案:
C
27、以下对C++函数的有关描述中,正确的是()。
A.C调用函数时,只能把实参的值传给形参,形参的值不能传递给实参
B.C++函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C++程序中有调用关系的所有函数必须放在同一源程序文件中
答案:
A
28、在C++语言中函数返回值的类型是由()决定的。
A.调用该函数时系统临时
B.return语句中的表达式类型
C.定义该函数时所指定的函数类型
D.调用该函数时的主调函数类型
答案:
C
29、以下程序的输出结果是()。
intfunc(inta,intb)
{returna+b;}
intmain()
{intx=6,y=7,z=8,r;
r=func(func(x,y),z--);
cout<}
A.15
B.20
C.21
D.31
答案:
C
30、以下程序的输出结果是()。
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
intmain()
{intx=10,y=20,z=30;
fun(x,y,z);
cout<}
A.30,20,10
B.10,20,30
C.456,567,678
D.678,567,456
答案:
A
【章节】第7章类与对象
【知识点】
1、面向对象程序设计的基本概念
2、类定义、属性与行为、访问权限控制,对象的定义、使用
3、构造函数与析构函数
4、函数重载技术与运算符重载技术
5、友元
【单选题】
1、对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句(划线处)应该是()。
classMyClass
{
public:
MyClass(intx)
{
n=x;
}
voidSetValue(intn1)
{
n=n1;
}
private:
intn;
};
intf()
{
MyClass*ptr=newMyClass(45);
__________;
}
A.MyClass(50)
B.SetValue(50)
C.ptr->SetValue(50)
D.ptr->n=50
答案:
C
分值:
2
难度:
1
知识点:
评析:
2、类MyClass的定义如下:
classMyClass
{
public:
MyClass()
{
value=0;
}
setVariable(inti)
{
value=i;
}
private:
intvalue;
};
则以下各项对如下语句序列的描述中,正确的是()。
MyClass*p,my;p=&my;
A.语句”p=&my;”是把对象my赋值给指针变量p
B.语句”MyClass*p,my;”会调用两次类MyClass的构造函数
C.对语句”*p.SetVariable(5)”的调用是正确的
D.语句”p->SetVariable(5)”与语句”my.SetVariable(5)”等价
答案:
D
分值:
2
难度:
1
知识点:
评析:
3、下面类的定义,有()错误。
classMyClass{
inti=0;
public:
voidMyClass();~MyClass(intValue);};
A.1
B.2
C.3
D.4
答案:
C
分值:
2
难度:
1
知识点:
评析:
4、定义析构函数时,应该注意()。
A.其名与类名完全相同
B.返回类型是void类型
C.无形参,也不可重载
D.函数体中必须有delete语句。
答案:
C
分值:
2
难度:
1
知识点:
评析:
5、构造函数不具备的特征的是()。
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定返回类型
答案:
D
分值:
2
难度:
1
知识点:
评析:
6、类的析构函数是在()被自动调用的。
A.类创建时
B.创建对象时
C.删除对象时
D.不自动调用
答案:
C
分值:
2
难度:
1
知识点:
评析:
7、对于任何一个类,析构函数最多有()个。
A.0
B.1
C.2
D.4
答案:
B
分值:
2
难度:
2
知识点:
评析:
8、通常,拷贝构造函数的参数是()。
A.某个对象名
B.某个对象的引用名
C.某个对象的成员名
D.某个对象的指针名
答案:
B
分值:
2
难度:
1
知识点:
评析:
9、面向对象程序设计中的数据隐藏指的是()。
A.输入数据必须输入保密口令
B.数据经过加密处理
C.对象内部数据结构上建有防火墙
D.对象内部数据结构的不可访问性
答案:
D
分值:
2
难度:
1
知识点:
评析:
10、下列关于类的访问权限的描述中,错误的是().。
A.说明为公有的成员可以被程序中的任何代码访问
B.说明为私有的成员只能被类的成员和说明为友元类的成员函数访问
C.说明为保护的成员,除了能被本身的成员函数和说明为友元类的成员函数访问外,该类的派生类的成员也可以访问
D.类的所有成员都可以被程序中的任何代码访问
答案:
D
分值:
2
难度:
1
知识点:
评析:
11、一个类的友元函数或友元类可以访问该类的()。
A.私有成员
B.保护成员
C.公有成员
D.所有成员
答案:
D
分值:
2
难度:
1
知识点:
评析:
12、下列关于成员函数特征的描述中,错误的是()。
A.成员函数一定是内联函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
答案:
A
分值:
2
难度:
1
知识点:
评析:
13、下面对类中静态数据成员的描述中,正确的是()。
A.静态数据成员是类的所有对象共享的数据
B.类的每个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员
D.静态数据成员不能通过类的对象调用
答案:
A
分值:
2
难度:
1
知识点:
评析:
14、C中对于类中定义的成员,其默认的访问权限为()。
A.public
B.protected
C.private
D.static
答案:
C
分值:
2
难度:
1
知识点:
评析:
15、类的析构函数的作用是()。
A.作为类的一般成员函数
B.类的初始化
C.对象的初始化
D.对象扫尾处理
答案:
D
分值:
2
难度:
1
知识点:
评析:
16、若有一个MyClass类,则执行语句”MyClass,a,b
(2),*p;”后,自动调用该类的构造函数()次。
A.2
B.3
C.4
D.5
答案:
A
分值:
2
难度:
1
知识点:
评析:
17、C++对C语言作了很多改进,即从面向过程变成为面向对象的主要改进是()
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
答案:
D
分值:
2
难度:
1
知识点:
评析:
18、类MyClass的定义如下:
classMyClass
{
public:
Myclass(){}
MyClass(inti){value=newint(i);}
int*value;
};
若要对value赋值,则下面语句正确的是()。
A.MyClassmy;my.value=10;
B.MyClassmy;*my.value=10;
C.MyClassmy;my.*value=10;
D.MyClassmy(10);
答案:
D
分值:
2
难度:
1
知识点:
评析:
19、下面是对类MyClass的定义,对定义中语句描述正确的是()。
classMyClass
{
public:
voidMyClass(inta){X=a;}//①
intf(inta,intb)//②
{
X=a;
Y=b;
}
intf(inta,intb,intc=0)//③
{
X=a;
Y=b;
Z=c;
}
staticvoidg(){X=10;}//④
private:
intX,Y,Z;
};
A.语句①是类MyClass的构造函数定义
B.语句②是类和语句③实现类成员函数的重载
C.语句④实现对类成员变量X的更新操作
D.语句①、②、③和④都不正确
答案:
D
分值:
2
难度:
1
知识点:
评析:
20、类aClass的定义如下:
classaClass{public:
aClass(){}aClass(inti){value=newint(i);}int*value;}若要对类中的valu