C 程序设计考试题库(精简版)剖析

更新时间:2023-09-02 19:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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++源程序文件的扩展名为( ) 。

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、如果有整型量int x = 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

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

C. 5

D. 6

答案:A

2、以下程序的运行结果是( ) 。

int main()

{ int k=4,m=1,p;

p=func(k,m);

cout<<p<<endl;

p=func(k,m);

cout<<p<<endl;

}

func(int a,int b)

{ static int m,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 <iostream>

int f(int b[],int n)

{int i,r=1;

for(i=0;i<=n;i++)

r=r*b[i];

return r;

}

void main(){

int x,a[]={2,3,4,5,6,7,8,9};

x=f(a,3);

cout<<x<<endl;

}

上面程序的输出结果是( ) 。

A. 720

C

B. 120

C. 24

D. 6

答案:B

5、下列函数参数默认值定义错误的是( ) 。

A. Fun(int x, int y=0)

B. Fun(int x = 100)

C. Fun(int x = 0, int y)

D. Fun(int x = 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、考虑函数原型void test(int a,int b=7,char z='*'),下面的函数调用中,属于不合法调用的是

A. test(5);

B. test(5,8);

C. test(6,'#');

D. test(0,0,'*');

答案:C

11、以下对C++ 函数的有关描述中,正确的是( ) 。

A. C 调用函数时,只能把实参的值传给形参,形参的值不能传递给实参

B. C++函数既可以嵌套定义又可以递归调用

C. 函数必须有返回值,否则不能使用函数

C

D. C++程序中有调用关系的所有函数必须放在同一源程序文件中答案:A

12、在C++语言中函数返回值的类型是由( )决定的。

A. 调用该函数时系统临时

B. return语句中的表达式类型

C. 定义该函数时所指定的函数类型

D. 调用该函数时的主调函数类型

答案:C

13、以下程序的输出结果是( ) 。

int func(int a,int b)

{ return a+b;}

int main()

{ int x=6,y=7,z=8,r;

r=func(func(x,y),z--);

cout<<r<<endl;

}

A. 15

B. 20

C. 21

D. 31

答案:C

14、以下程序的输出结果是( ) 。

void fun(int a,int b,int c)

{ a=456;b=567;c=678;}

int main( )

{ int x=10,y=20,z=30;

fun(x,y,z);

cout<<z<<”,”<<y<<”,”<<x<<endl;

}

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 <iostream>

void fun(int num){cout<<num<<endl;}

void fun(char ch){cout<<(ch+1)<<endl;}

C

int main(){

fun('A');

return 0;

}

以上程序的输出结果是( ) 。

A. 65

B. 66

C. A

D. B

答案:B

17、一个函数为void f(int x, char y = ‘a’),另一个函数为void f(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. int Fun(int x,int y=2,int z=3);

B. int Fun(int x=1,int y,int z=3);

C. int Fun(int x,int y=2,int z);

D. int Fun(int x=1,int y,int z=3);

答案:A

21、下列函数参数默认值定义错误的是( ) 。

A. Fun(int x, int y=0)

B. Fun(int x = 100)

C. Fun(int x = 0, int y)

D. Fun(int x = f( )) (假定函数f( )已经定义)

答案:C

22、在函数定义前加上关键字“inline”表示该函数被定义为( ) 。

A. 重载函数

B. 内联函数

C. 成员函数

C

D. 普通函数

答案:B

23、一个函数功能不太复杂,但要求被频繁调用,选用( ) 。

A. 内联函数

B. 重载函数

C. 递归函数

D. 嵌套函数

答案:A

24、下面有关重载函数的说法中正确的是( ) 。

A. 重载函数必须具有不同的返回值类型

B. 重载函数形参个数必须不同

C. 重载函数必须有不同的形参列表

D. 重载函数名可以不同

答案:C

25、在C++语言中,对函数参数默认值描述正确的是( ) 。

A. 函数参数的默认值只能设定一个

B. 一个函数的参数若有多个,则参数默认值的设定可以不连续

C. 函数必须设定默认值

D. 在设定参数的默认值后,该参数后面定义的所有参数都必须设定默认值

答案:D

26、考虑函数原型void test(int a,int b=7,char z='*'),下面的函数调用中,属于不合法调用的是( ) 。

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、以下程序的输出结果是( ) 。

int func(int a,int b)

{ return a+b;}

int main( )

{ int x=6,y=7,z=8,r;

C

r=func(func(x,y),z--);

cout<<r<<endl;

}

A. 15

B. 20

C. 21

D. 31

答案:C

30、以下程序的输出结果是( ) 。

void fun(int a,int b,int c)

{ a=456;b=567;c=678;}

int main()

{ int x=10,y=20,z=30;

fun(x,y,z);

cout<<z<<”,”<<y<<”,”<<x<<endl;

}

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的语句(划线处)应该是( ) 。

class MyClass

{

public:

MyClass(int x)

{

n=x;

}

void SetValue(int n1)

{

n=n1;

}

private:

C

int n;

};

int f( )

{

MyClass *ptr=new MyClass(45);

__________;

}

A. MyClass(50)

B. SetValue(50)

C. ptr - > SetValue(50)

D. ptr - > n=50

答案:C

分值:2

难度:1

知识点:

评析:

2、类MyClass的定义如下:

class MyClass

{

public:

MyClass()

{

value=0;

}

setVariable(int i)

{

value=i;

}

private:

int value;

};

则以下各项对如下语句序列的描述中,正确的是( ) 。

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、下面类的定义,有( )错误。

class MyClass{

C

int i=0;

public: void MyClass(); ~MyClass(int Value);};

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

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

C

分值: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

知识点:

评析:

C

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的定义如下:

class MyClass

{

public:

Myclass() {}

MyClass(int i) {value=new int (i);}

int* value;

};

若要对value赋值,则下面语句正确的是()。

A. MyClass my; my.value=10;

B. MyClass my; *my.value=10;

C. MyClass my; my.*value=10;

D. MyClass my(10);

答案:D

分值:2

难度:1

知识点:

评析:

19、下面是对类MyClass的定义,对定义中语句描述正确的是()。

class MyClass

{

public:

void MyClass(int a) {X=a;} //①

C

int f(int a,int b) //②

{

X=a;

Y=b;

}

int f(int a,int b,int c=0) //③

{

X=a;

Y=b;

Z=c;

}

static void g() {X=10;} //④

private:

int X,Y,Z;

};

A. 语句①是类MyClass的构造函数定义

B. 语句②是类和语句③实现类成员函数的重载

C. 语句④实现对类成员变量X的更新操作

D. 语句①、②、③和④都不正确

答案:D

分值:2

难度:1

知识点:

评析:

20、类aClass的定义如下:class aClass{public:aClass(){}aClass(int i){value=new int(i);}int *value;}若要对类中的value赋值,则下面的语句中,正确的是( )。

A. aClass my;my.value = 10;

B. aClass my;*my.value = 10;

C. aClass my;my.*value = 10;

D. aClass my(10);

答案:D

分值:2

难度:1

知识点:

评析:

21、对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句(划线处)应该是( )。

class MyClass

{

public:

MyClass(int x)

{

n=x;

}

C

void SetValue(int n1)

{

n=n1;

}

private:

int n;

};

int f()

{

MyClass *ptr=new MyClass(45);

__________;

}

A. MyClass(50)

B. SetValue(50)

C. ptr - > SetValue(50)

D. ptr - > n=50

答案:C

分值:2

难度:1

知识点:

评析:

22、类MyClass的定义如下:

class MyClass

{

public:

MyClass()

{

value=0;

}

setVariable(int i)

{

value=i;

}

private:

int value;

};

则以下各项对如下语句序列的描述中,正确的是( ).。

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

C

难度:1

知识点:

评析:

23、类的析构函数是在()被自动调用的?

A. 类创建时

B. 创建对象时

C. 删除对象时

D. 不自动调用

答案:C

分值:2

难度:1

知识点:

评析:

24、对于任何一个类,析构函数最多有( ) 个。

A. 0

B. 1

C. 2

D. 3

答案:B

分值:2

难度:1

知识点:

评析:

25、通常,拷贝构造函数的参数是( )。

A. 某个对象名

B. 某个对象的成员名

C. 某个对象的引用名

D. 某个对象的指针名

答案:C

分值:2

难度:3

知识点:

评析:

26、下列关于类的访问权限的描述中,错误的是( ).。

A. 说明为公有的成员可以被程序中的任何代码访问

B. 说明为私有的成员只能被类的成员和说明为友元类的成员函数访问

C. 说明为保护的成员,除了能被本身的成员函数和说明为友元类的成员函数访问外,该类的派生类的成员也可以访问

D. 类的所有成员都可以被程序中的任何代码访问

答案:D

分值:2

难度:1

知识点:

评析:

C

27、一个类的友元函数或友元类可以访问该类的( )。

A. 私有成员

B. 保护成员

C. 公有成员

D. 所有成员

答案:D

分值:2

难度:1

知识点:

评析:

28、下列关于成员函数特征的描述中,错误的是( )。

A. 成员函数一定是内联函数

B. 成员函数可以重载

C. 成员函数可以设置参数的默认值

D. 成员函数可以是静态的

答案:A

分值:2

难度:1

知识点:

评析:

29、下面对类中静态数据成员的描述中,正确的是( )。

A. 静态数据成员是类的所有对象共享的数据

B. 类的每个对象都有自己的静态数据成员

C. 类的不同对象有不同的静态数据成员

D. 静态数据成员不能通过类的对象调用

答案:A

分值:2

难度:1

知识点:

评析:

30、C++中对于类中定义的成员,其默认的访问权限为( )。

A. public

B. protected

C. private

D. static

答案:C

分值:2

难度:1

知识点:

评析:

31、类的析构函数的作用是( )。

A. 作为类的一般成员函数

B. 类的初始化

C. 对象的初始化

C

D. 对象扫尾处理

答案:D

分值:2

难度:2

知识点:

评析:

32、若有一个MyClass类,则执行语句”MyClass,a,b(2), *p ;”后,自动调用该类的构造函数( )次。

A. 2

B. 3

C. 4

D. 5

答案: A

分值:2

难度:1

知识点:

评析:

33、类MyClass的定义如下:

class MyClass

{

public:

Myclass() { }

MyClass(int i) {value=new int (i);}

int* value;

};

若要对value赋值,则下面语句正确的是()。

A. MyClass my; my.value=10;

B. MyClass my; *my.value=10;

C. MyClass my; my.*value=10;

D. MyClass my(10);

答案:D

分值:2

难度:1

知识点:

评析:

34、下面是对类MyClass的定义,对定义中语句描述正确的是()。

class MyClass

{

public:

void MyClass(int a) {X=a;} // ①

int f(int a,int b) // ②

{

X=a;

Y=b;

本文来源:https://www.bwwdw.com/article/k18i.html

Top