C考试题库大全.docx
《C考试题库大全.docx》由会员分享,可在线阅读,更多相关《C考试题库大全.docx(156页珍藏版)》请在冰豆网上搜索。
![C考试题库大全.docx](https://file1.bdocx.com/fileroot1/2023-6/22/79fc4d00-e35f-41ef-a0be-a78193167ba7/79fc4d00-e35f-41ef-a0be-a78193167ba71.gif)
C考试题库大全
单选题
1.在以下二叉树结构中,先序遍历的先序序列为()。
"
■DBAECF■ABDCEF■DBEFCA■ABCDEFB
2.在以上二叉树结构中,中序遍历的中序序列为()。
■DBAECF■ABDCEF■DBEFCA■ABCDEFA
3.#ifdefM
A;
#else
B;
#endif
这段代码的意思是()。
"
■如果定义了标识符M,则编译A,否则编译B
■如果定义了变量M,则编译A,否则编译B
■如果定义了标识符M,则执行A,否则执行B
■如果定义了变量M,则执行A,否则执行BA
4.1个C程序的执行是从()。
■本程序的main函数开始,到main函数结束
■本程序文件的第1个函数开始,到本程序文件的最后1个函数结束
■本程序的main函数开始,到本程序文件的最后1个函数结束
■本程序文件的第1个函数开始,到本程序main函数结束B
5.C++语言中,默认的类中成员的访问权限为()。
■public■private■protected■defaultB
6.C++语言中,用于直接从键盘输入中读入单个字符的字符串函数是()。
■gets■puts■scanf■printfA
7.for(intx=0, y=0; !
x&&y<=5; y++)
语句执行循环的次数是()。
■0■5■6■无数次C
8.while(!
x)中的(!
x)与下面哪个条件等价?
()
■x==1■x!
=1■x==0■x!
=0C
9.把十进制数23转化为二进制数,其结果为。
()
■10111■111■101■11A
10.比较C语言与C++语言,最明显的差异在于()。
■输入输出流■数据结构■流程控制■类D
11.运行时的多态性可以通过使用以下哪个要素来实现?
()
■虚函数和指针■重载函数和析构函数■虚函数和对象■虚函数和引用A
12.表达式x=(3,4);x的值为__。
(请填写阿拉伯数字)
■1■0■4■3C
13.表示一个语句是宏定义语句的标识符是()。
■include■#include■define■#defineD
14.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。
■与虚基类的派生类个数有关■多次■两次■一次D
15.定义类的成员函数时,作用域运算符为()。
■:
:
■:
■.■*A
16.对以下说明语句的正确理解是()。
inta[10]={6,7,8,9,10};
■将5个初值一次赋给a[1]至a[5]
■将5个初值一次赋给a[0]至a[4]
■将5个初值一次赋给a[6]至a[10]
■因为数组长度与初值的个数不相同,所以语句不正确B
17.符合先进后出规则的数据结构是()。
■堆栈■队列■链表■二叉树A
18.符合先进先出规则的数据结构是()。
■堆栈■队列■链表■二叉树B
19.关于纯虚函数和抽象类的描述中,错误的是()。
■纯虚函数是1种特殊的虚函数,它没有具体实现
■抽象类是指具有纯虚函数的类
■1个基类说明中有纯虚函数,该基类的派生类一定不再是抽象类
■抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出C
20.关于二维数组a[3][4],以下说法正确的是()。
■&a[i]和a[i]是完全相同的,表示元素a[i]
■&a[i]和a[i]数值完全相同,表示数组a第i行的首地址
■a[0]和a[0][0]数值是相同的
■该二维数组共有4行3列共12个元素B
21.关于访问权限,以下说法错误的是()。
■public权限表示可以被程序中任何函数调用
■private权限表示只能被类自身调用
■protected权限表示只能被类自身和其父类调用
■protected权限表示只能被类自身和其子类调用C
22.关于构造函数,以下说法正确的是()。
■构造函数在对象被创建时,自动被调用
■构造函数需要程序员显式的调用
■构造函数不能被重载
■构造函数都是无参函数A
23.关于哈希函数,以下说法错误的是()。
■哈希函数的主要目的在于在元素和关键字之间建立一一对应的关系
■哈希函数就是关键字本身
■哈希函数可以由用户自己定义
■同一组数据,可以使用不同的哈希函数得到不同的哈希表B
24.关于继承中的二义性,以下说法中错误的是()。
■所谓的二义性,就是指基类与派生类中存在同名成员
■出现二义性的原因是在多重继承情况下,没有显式调用的情况下,系统不知道应该调用哪个基类的成员
■基类的对象不能直接访问派生类中的成员
■派生类的对象可以访问基类的成员B
25.关于静态数据成员的说法错误的是()。
■静态数据成员只能说明全局变量
■静态数据成员在内存中只有1个拷贝
■静态数据成员可通过类或静态函数访问
■静态数据成员可通过对象访问A
26.关于类的对象,说法错误的是()。
■同1个类定义的两个对象可以互相赋值
■对象是类的1个实例
■对象是现实生活中具有共同特征的一类事物的抽象
■对象的成员包括两个:
数据成员和成员函数C
27.关于类的继承,以下说法错误的是()。
■类A继承类B,类B继承类C,则类A也继承类C
■类A继承类B,类B继承类C,类C也可以继承类A
■类A和类B可以同时继承类C
■类A可以同时继承类B和类CB不允许循环继承
28.关于类模板的模板参数说法正确的是()。
■只可作为数据成员的类型
■只可作为成员函数的返回值类型
■只可作为成员函数的参数类型
■既可作为数据成员的类型,也可说明成员函数的类型D
29.关于联合类型,以下说法正确的是()。
■联合类型的内存大小是第1个成员变量的内存大小
■联合类型的内存大小是所有成员变量的内存大小之和
■联合类型的内存大小由内存大小最大的成员变量决定
■联合类型的内存大小由系统自动分配,在赋值前是不确定的C
30.关于内联函数,以下说法正确的是。
()
■内联函数不需要经过编译
■内联函数适用于函数体比较复杂的情况
■内联函数可以提高程序执行效率
■声明内联函数只需要在函数声明前加inline关键字C
31.关于下面的程序,说法正确的是()。
intx=-1;
do
{x=x*x;}
while(!
x);"
■死循环■循环执行两次■只循环一次■有语法错误C
32.关于虚函数的调用说法正确的是()。
■一定使用动态联编
■一定使用静态联编
■不一定使用动态联编
■与动态联编和静态联编无关C 使用对象指针时,可能会使用动态
33.关于以下代码,说法正确的是()。
classCGame
{
public:
CGame(void);
};
CGame:
:
CGame(void)
{
printf("%s","构造函数");
}
main()
{
CGamem_game;
m_game.CGame();
}
■该代码能够编译通过,但是没有输出
■该代码能够编译通过,输出字符串“构造函数”
■该代码能够编译通过,输出字符串“构造函数构造函数”
■该代码不能编译通过D (位于“.”运算符右边时非法)
34.关于以下代码:
classCGame
{
constinti=1;
public:
intf()const
{i=3;}
};
说法正确的是()。
"
■该代码编译无法通过
■该代码编译正常通过,变量i的值为3
■该代码编译正常通过,变量i的值为1
■该代码编译正常通过,如果调用函数f则i的值变为3,否则为1A
只有静态常量整型数据成员才可以在类中初始化
i是常量。
如果i是变量呢?
35.关于以下代码片段说法正确的是()。
inta[5],*pa;
pa=a;
pa=pa+2;
■pa指向a[2];
■pa的内容是a[0]+2
■pa指向a[0]
■语法有错误A
36.关于异常机制,以下说法正确的是()。
■异常不是语法错误
■异常代表了编程过程中遇见的所有错误
■一旦出现异常,程序将会中断,退出执行
■派生类不能捕获基类的异常A
37.关于作用域与生存周期,说法错误的是()。
■局部对象只在定义它的函数体中有效
■全局对象的作用域是整个程序
■局部对象在定义它的函数第1次被调用时构造,以后可以直接使用
■全局对象在程序主函数运行前被调用,只构造1次C
38.关于作用域与生存周期,说法正确的是()。
■静态对象就是全局对象
■静态对象在程序主函数运行前被调用,只构造1次
■静态对象的值在主函数中可以被修改
■全局对象一定是静态对象B C
函数定义时,如果没有声明返回值的类型,则系统会给出1个默认
39.返回类型,这个类型是()。
■bool■int■char*■voidB 在VC++2003时期可以
40.计算机系统中输入输出缓冲区的结构是()。
■堆栈■队列■链表■二叉树B
41.结构化程序设计所规定的3种基本控制结构是()。
■输入、处理、输出
■树形、网形、环形
■顺序、选择、循环
■主程序、子程序、函数C
42.类模板的使用实际上是将类模板实例化为1个具体的()。
■类■对象■函数■模板类B
43.模板声明的关键字是()。
■template■class■union■tempA
44.派生类的对象对它的基类成员中的哪些成员是可以访问的?
()
■公有继承的公有成员
■公有继承的私有成员
■公有继承的保护成员(不能)
■私有继承的公有成员A
45.派生类的构造函数的成员初始化列表中,不能包含()。
■基类的构造函数
■派生类中子对象的初始化
■基类中子对象的初始化
■派生类中一般数据成员的初始化C
46.若有以下定义和语句,则对s数组的元素的正确引用形式是()。
ints[4][5],(*ps)[5];
ps=s;
■ps+1■*(ps+3)■ps[0][2]■*(ps+1)+3C
指向第二行第一个元素
47.设int a=3,b=4,c=5;表达式a+b>c&&b==c的值是( )。
■2■-1■0■1C
48.设x,y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是()。
■‘x’&&‘y’■x<=y■x||(y+z)&&(y-z)■!
((xz||1)D
49.设有如下定义:
structst
{
inta;
intb;
}data;
int*p;
则要使p指向data中的成员a的正确赋值语句是()。
■p=&a;■p=data.a■p=&data.a■p=data.&aC
50.设置虚基类的目的是()。
■简化程序■消除二义性■提高运行效率■减少目标代码B
51.数据类型unsignedchar的取值范围是()。
■0~256■-127~128■-128~127■0~255D
52.系统在处理完一个异常后,下一步是()。
■返回抛出异常的地方,执行下一句
■执行当前异常处理语句的catch语句块的下一句
■转到主函数结束的地方
■异常退出B
53.下列变量名正确的是()。
■1a■int■_n_2■#a2C
54.下列标识符不属于C++关键字的是()。
■int■char■CHAR■thisC
55.下列不是异常处理中需要用到的标识符是()。
■try■catch■throw■goD
56.下列关于动态联编的描述中错误的是()。
■动态联编是以虚函数为基础的
■动态联编是在运行时确定所调用的函数代码
■动态联编调用函数操作是指向对象的指针或对象引用
■动态联编是在编译时确定操作函数的D
57.下列函数不能被声明为虚函数的是()。
■构造函数■析构函数■内联函数■普通成员函数A
58.下列说法中错误的是()。
■公有继承时基类中的public成员在派生类中仍是public的
■公有继承时基类中的private成员在派生类中仍是private的
■私有继承时基类中的public成员在派生类中是private的
■保护继承时基类中的public成员在派生类中是protected的全部正确
59.下列说法中错误的是()。
■基类的protected成员在派生类中仍是protected的
■基类的protected成员在public派生类中仍是protected的
■基类的protected成员在private派生类中是private的
■基类的protected成员不能被派生类的对象访问A
60.下列虚基类的声明中正确的是()。
■classvirtualB:
publicA
■virtualclassB:
publicA
■classB:
publicAvirtual
■classB:
virtualpublicAD
61.下列选项中,if语句语法正确的是()。
■if(x>0)printf("%f",x)elseprintf("%f",-x);
■if(x>0){x=x+y;printf("%f",x);}elseprintf("%f",-x);
■if(x>0){x=x+y;printf("%f",x);};elseprintf("%f",-x);
■if(x>0){x=x+y;printf("%f",x)};elseprintf("%f",-x);B
62.下列选项中,对以下程序说法正确的是()。
voidmain()
{
voidf();
f();
}
voidf()
{
printf("1");
}
■编译时会报错
■编译时可以通过,运行时会出错
■函数f()的声明改放在主函数之前就可以正常运行
■可以正常运行CD
63.下列选项中,非法的表达式是()。
■0<=x<100■i=j==0■(char)(65+3)■x+1=x+1D1不是左值
64.下列选项中,合法的字符常量是()。
■‘x’(注:
半角)■’xxx’■"x"■68D
65.下列选项中不是构造函数的特征是()。
■构造函数的函数名与类名相同
■构造函数在类对象被建立之前调用
■构造函数无函数类型说明
■如果类说明中没有显式的构造函数,则系统一定会给出1个默认的B
66.下列语言中,属于面向对象的语言是()。
■C语言■C++语言■Pascal语言■Basic语言B
67.下面的代码片段的输出结果为()。
chars[10]={’a’,’b’,’c’};
printf(""%s\n"",s+1);
■abc■bc■b■a+1B
68.下面给指针变量赋值的方法错误的是()。
■int*p;p=&5;
■int*p;inta=5;p=&a;
■int*p;inta[5];p=a;
■int*p;inta[5];p=&a[0];A不允许在常量上取址
69.下面关于异常机制说法错误的是()。
■抛出异常的地方和处理异常的地方可以不在同一层,即可以不在同一函数中发生
■系统在处理异常的层次关系时是自动按调用链查找的
■在同一个位置可以抛出属于不同层级的异常
■当最高层级处仍找不到匹配的异常处理时,系统就忽略这个异常D
70.下面哪1个不属于条件编译的内容?
()
■#if■#ifdef■#ifndef■#defineD
71.下面哪个标识符不是内存管理函数?
()
■malloc■calloc■free■gotoD
72.要格式化输出字符串值,使用的格式字符串值为()。
■%s■%d■%f■%aA
73.要用字符数组保存字符串"test"的值,以下代码正确的是()。
■chara[4]="test";
■chara[5]="test";
■chara[4];a="test";
■chara[5];a="test";B
74.已知定义int*p[3],则以下说法正确的是()。
■定义了1个int类型的指针变量,该变量具有3个指针
■定义了1个指针数组,该数组有3个元素,每个元素都是int类型的指针变量
■定义了1个名为*p的int类型数组,该数组含有3个int类型的变量
■定义了1个指向一维数组的指针变量p,该一维数组有3个int类型的元素B
75.已知函数f(inta,intb),则以下函数调用正确的是()。
■f(int1,int2)■f(1,2)■f
(1)■f(a,b)B
76.已知函数f(inta),则以下函数调用正确的是()。
■f(int1)■f
(1)■f(a)■f(2.5)B
77.已知结构类型:
structstudent
{
intnum;
charname;
floatscore;
charsex;
}Stu;
则sizeof(Stu)的值为()。
■4■16■12■10B
78.已知类A,a1和a2是类A的两个对象,x是A类的静态数据成员,则以下说法正确的是()。
■a1.x、a2.x、A:
:
x是3个不同的变量
■a1.x和a2.x是相同的变量,A:
:
x与它们不同
■a1.x、a2.x、A:
:
x是相同的变量
■x在程序运行期间的值不能改变C
79.已知类A的父类是类B和类C,则正确的语法格式为()。
■ApublicB;ApublicC;■A:
publicB;A:
publicC;■ApublicB,C;■A:
publicB,publicC;D
80.已知联合类型:
unionstudent
{
intnum;
charname;
floatscore;
charsex;
}a;
则sizeof(a)的值为()。
"
■8■4■16■24B
81.已知如下程序:
classB
{
public:
B(){}
B(intc):
count(c){}
virtualvoidprint()const=0;
private:
intcount;
};
classD:
publicB
{
public:
D():
B(0){}
D(intc):
B(c){}
voidprint()const{cout<<""hello""<};
voidmain()
{
Dd(10);
B*pb;
pb=&d;//OK
B&cb=d;
Ddd=*pb;//2B对象不能转换为D
D&cd=cb;//3B对象不能转换为 D&
Bbb=d;//4B类,不能实例化抽象类
}
则在标出的几个语句中,没有错误的是()。
■1■2■3■4A
82.已知如下代码:
intd(inta,intb)
{
if(b==0)
throwb;
returna/b;
}
voidmain()
{
try
{
printf(""%d\t"",d(7,3));
printf(""%d\t"",d(4,0));
printf(""%d\t"",d(9,3));
}
catch(int)
{
printf(""%s\t"",""divide0"");
}
printf(""%s\t"",""end"");
}
则输出结果为()。
(答案中的_代表制表位)
■2_divide0_end■2■2_divide0■endA
83.已知如下定义:
enumA{A1,A2,A3,A4}a;
a=A2;
intb=(int)a;
则b的值为()。
"
■语法错误■1■2■不一定B
84.已知以下代码:
1classA
2{
3public:
4inta;
5public:
6A(){f();}
7virtualvoidf()=0;
8voidfun();
}
则有错误的语句是()。
"■4■6■7■8B
85.已知以下代码:
classA
{
}
classB:
publicA
{
}
Aa;
Bb;
则以下说法正确的是()。
■赋值方式a=b是允许的
■赋值方式b=a是允许的
■a可以访问类B的所有成员
■a可以访问b的所有public成员A
86.已知以下继承关系:
classA
{
public:
voidf();
}
classB:
publicA
{
voidf();
}
Aa;
Bb;
则b要调用类A的函数f的语法形式是()。
"
■b.f()■b.A:
:
f()■b->f()■b不能调用类A的函数B
87.已知有如下代码片段
#defineM(x)x+4
inta=M
(2)*3;
则变量a的值为()。
■18■14■6■12B
88.已知有如下函数模板定义:
template
Tmax(Ta,Tb)
{
if(a>b)returna;
elsereturnb;
}
则下列函数调用有错误的是()。
■max(1,2)■max(’a’,’b’)■max(1.0,2)■max(3.1,4.5)C
89.以下表达式“0||1&&1”的值为。
()
■2■1■0■表达式错误B
90.以下程序inta=15;a>>2;则a的值变为()。
■3■15■13■2A
91.以下程序的输出结果是()。
#defineM(x,y,z)x*y+z
voidmain()
{
nta=1,b=2,c=3;
printf(""%d\n"",M(a+b,b+c,c+a));
}"
■19■17■15■12D
92.以下程序的输出结果是()。
f(intb[],intm,intn)
{
inti,s=0;
for(i=m;ireturns;
}
main()
{
intx,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf(""%d\n"",