C++备考题目.docx

上传人:b****5 文档编号:8168136 上传时间:2023-01-29 格式:DOCX 页数:69 大小:44.99KB
下载 相关 举报
C++备考题目.docx_第1页
第1页 / 共69页
C++备考题目.docx_第2页
第2页 / 共69页
C++备考题目.docx_第3页
第3页 / 共69页
C++备考题目.docx_第4页
第4页 / 共69页
C++备考题目.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

C++备考题目.docx

《C++备考题目.docx》由会员分享,可在线阅读,更多相关《C++备考题目.docx(69页珍藏版)》请在冰豆网上搜索。

C++备考题目.docx

C++备考题目

C++试题库

一、选择题

1、求“abc\\12\n”字符串的长度(C)

(A)5(B)6(C)7(D)8

2、字符串常量“\tMyNane\103”的长度是:

(B)

(A)6(B)8(C)12(D)14

3、设x=7,执行语句y=++x,则y等于(D)

(A)6(B)7(C)9(D)8

4、下列字符列中,合法的长整型常量是:

(D)

(A)4.18e3(B)0.46793(C)4L(D)956738

5、在C++中,char类型数据在内存的存储形式是:

(D)

(A)原码(B)反码(C)补码(D)ASCII码

6、以下运算符中,优先级最高的是:

(A)

(A)*=(B)–>(C)&&(D)>=

7、若有定义“intx”,则下面不能将x的值强制转换成双精度数的表达式(D)

(A)(double)x(B)double(x)(C)(double)(x)(D)x(double)

8、设有变量定义inti,j;与表达式i==0&&j==0等价的表达式是:

(B)

(A)i||j(B)!

i&&!

j(C)!

i==!

j(D)i==j

9、下述叙述正确的是(D)。

(A)字符型变量不能赋予整数(B)任意整数都能表示字符

(C)字符型变量可存放多个字符(D)字符数据的值是整数值

10、设变量inta=5;下列哪个表达式计算后,使得变量b的值等于2?

(A)

(A)b=a/2(B)b=6-(a--)(C)b=a%2(D)b=a>3?

3:

2

11、if…else中为避免嵌套出现二义性,C++规定else子句总与(B)

(A)其之前最近的if语句

(B)其之前最近且尚未配对的if语句

(C)缩排位置相同的if语句

(D)其之后最近的if语句

12、逻辑运算符两侧运算对象的数据(D)

(A)只能是逻辑型数据(B)只能是整型数据

(C)只能是整型或字符型数据(D)可以是任何类型的数据

13、设变量x,y,a,b,c,d的值为1,计算表达式(x=a!

=b)&&(y=c!

=d)后,变量x,y的值分别是:

(A)

(A)0,0(B)0,1(C)1,0(D)1,1

14、已知intx=1,y=0;执行下面程序段后,y的值为(C)。

If(x){if(x>0)y=1;}elsey=-1;

(A)-1(B)0(C)1(D)不确定

15、已知intx=1,y=0,w;执行下面程序段后,w的值为(A)。

If(x)if(y)w=x&&y;elsew=y;

(A)0(B)-1(C)1(D)不确定

16、语句while(w)…中的表达式w的等价表示是:

(C)

(A)w==0(B)w==1(C)w!

=0(D)w!

=1

17、语句while(a>b)a--;等价于(D)。

(A)if(a>b)a--;(B)do{a--}while(a>b);

(C)for(a>b)a--;(D)for(;a>b;a--);

18、已知inti=0,x=0;下面while语句执行时循环次数为(C)。

while(x||i){x++;i++;}

(A)3(B)2(C)1(D)0

19、执行语句x=1;while(++x<7)cout<<’*’;后输出结果是:

(B)

(A)*****(B)******(C)*******(D)********

20、C++中循环语句while和do…while的主要区别是(A)

(A)do…while的循环体至少无条件执行一次

(B)while的循环控制条件和do…while的循环控制条件的控制条件的控制方式是相反的

(C)do…while允许从外部转到循环体内,while不允许

(D)while的循环体不能复合语句

21、若有以下程序段:

for(m=1;m<=100;m++)

{

cin>>y;

if(y<0)

continue;

cout<

}

则下面正确的说法是(D)

(A)当y<0时整个循环结束(B)当y>=0时什么也不输出

(C)cout语句永远也不执行(D)最多输出100个非负整数

22、语句“while(!

x)…”等价于(A)

(A)while(x==0)…(B)while(x!

=1)…(C)while(x!

=0)…(D)while(x==1)…

23、一维数组a正确定义是(D)。

(A)chara(10)(B)inta[](C)intk=5,a[k](D)chara[]={‘a’,’b’,’c’}

24、下面不能够判断字符串S是空串的是(B)

(A)if(S[0]==0)(B)if(strlen(S)==0)

(C)if(strcmp(S,””)==0)(D)if(S==’\0’)

25、charx[5]={‘a’,’b’,’\0’,’c’,’\0’}输出的结果是(B)

(A)’a’’b’(B)ab(C)abc(D)abc

26、设有下面和程序段

chara[3],b[]="China"

a=b;

cout<

则(A)

(A)编译出错(B)运行后将输出Ch(C)运行后将输出Chi(D)运行后将输出Chian

27、判断字符串s1是否大于字符s2是空串的是(A)

(A)if(strcmp(s1,s2)>0)(B)if(strcmp(s1,s2))

(C)if(strcmp(s2,s1)>0)(D)if(s1>s2)

28、下面关于C++字符数组的叙述中,错误的是(D)。

(A)字符数组可以放字符串

(B)字符数组的字符可以整体输入、输出

(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

(D)可以用关系运算符对字符数组比较大小

29、以下对一维数组a的正确定义是(D)

(A)chara(10);(B)inta[];(C)intk=5,a[k];(D)chara[]={‘a’,’b’,’c’};

30、若二维数组y有m列,则位于y[i][j]之前的元素个数有(C)个

(A)j*m+i(B)i*m+j(C)i*m+j-1(D)i*m+j+1

31、非数组、指针或引用型变量做实参时,它和对应虚参之间的数据传递方式是(B)

(A)地址传递(B)单向值传递(C)双向值传递(D)由用户指定传递方式

32、若有数组名作为函数调用的实参,则传递给虚参的是(A)

(A)数组的首地址(B)数组第1个元素的值

(C)数组中全部元素的值(D)数组元素的个数

33、以下正确的函数原型声明语句是(c)

(A)intfun(inta,b);(B)floatfun(inta;intb);

(C)doublefun();(D)intfun(chara[][]);

34、已有定义“inta=5,&ra=a;”则下叙述中,错误的说法是(C)。

(A)ra是变量a的引用(B)ra的值为5

(C)ra是a的地址值(D)执行“ra=10;”后变量a的值也变为10

35、若有定义“intc[5],*p=c;”,则以下对数组c元素地址的正确引用是(B)

(A)p+5(B)c++(C)&c+1(D)&c[0]

36、设intx=1,y=3,能正确表示代数式3x|x-y|的C++表达式是(A)。

(A)abs(x-y)*3*x(B)3x(abs(x-y))

(C)3x||(x-y)(D)3*x*(x-y)||3*x*(y-x)

37、有函数原型voidf(int*);下面选项中,正确的调用是(C)。

(A)char*s="ABCD";f(s);(B)inta=15;f(a);

(C)intm=100;f(&m);(D)doublepi=3.14;f(pi);

38、下面关于new和delete运算的叙述中,错误的说法是(D)。

(A)由new分配的内存空间是连续的

(B)如果当前内存无足够的空间可分配,则new运算符返回NULL

(C)由new运算符分配的内存空间,当函数执行结束时系统会自动收回

(D)对于程序中的静态数组占用的存储空间不能使用delete来释放

39、下面判断是否构成重载函数的条件中,错误的判断条件是(C)

(A)参数类型不同(B)参数个数不同(C)参数顺序不同(D)函数返回值不同

40、假设a,b是全局变量,下面设置函数参数默认值的函数原型中,错误的是(D)

(A)intfun(intx,inty=10);(B)intfun(intx=5,inty=10);

(C)intfun(intx,inty);(D)intfun(intx,inty=a+b);

41、设有定义:

structdata

{

inti;

charch;

doubleq;

doublef

}b;

结构体变量b占用内存的字节数是(D)

(A)18(B)19(C)20(D)21

42、关于结构体概念的叙述中,正确的说法是(C)。

(A)相同类型数据的集合称为结构(B)不同类型数据的集合称为结构体

(C)数据的集合称为结构体(D)整数的集合称为结构体

43、设有说明语句

structabc

{

intm;

floatn;

}stype;

则下面错误的叙述是(B)

(A)struct是定义结构体类型的关键字

(B)stype是结构体类型名

(C)m和n都是结构体成员

(D)stype是结构体变量名

43、对枚举类型ee的定义中,正确的这定义是(A)。

(A)enumee{A,B,C,D};(B)enumee{‘A’,’B’,’C’,’D’};

(C)enumee={A,B,C,D};(D)enumee={‘A’,’B’,’C’,’D’};

44、关于同类型结构体与同类型联合体赋值的叙述中,正确的说法是(B)

(A)联合体变量之间可以直接赋值,结构体变量之间也可以直接赋值

(B)联合体变量之间可以直接赋值,结构体变量之间不可以直接赋值

(C)联合体变量之间不可以直接赋值,结构体变量之间可以直接赋值

(D)联合体变量之间不可以直接赋值,结构体变量之间也不可以直接赋值

45、一个结构体变量所占用的内存字节数是(D)

(A)结构体中第一个成员所需的内存字节数

(B)结构体中最后一个成员所需的内存字节数

(C)结构体中占用内存最大的成员所需的字节数

(D)结构体中各成员所需的内存字节数和

46、当定义一个联合体变量时系统分配给它的内存字节数是(C)

(A)联合体中第一个成员所需的内存字节数

(B)联合体中最后一个成员所需的内存字节数

(C)联合体中占用内存最大的成员所需的字节数

(D)联合体中各成员所需的内存字节数和

47、下面叙述中错误的是(C)。

(A)预处理命令都必须以“#”开始

(B)在程序中凡是以“#”开始的语句行都是预处理命令行

(C)C++程序在程序执行过程中对预处理命令进行处理

(D)一行只能写一条预处理命令

48、下面表达式组中不等价的一组是(C)

(A)a&=b与a=a&b(B)a|=b与a=a|b

(C)a!

=b与a=a!

b(D)a^=b与a=a^b

49、设x=001101012,则下面能使x的高4位取反,低4位清零,则下面能实现此功能的是(C)

(A)x=x&0x0f(B)x=x|0x0f(C)x=x^0365(D)x=x^033

50、设x=001101102,则若想通过x&y运算使x中的低4位不变,高4位清零,则下面能实现此功能的是(B)

(A)x=x|0x0f(B)x=x&0x0f(C)x=x|0xf0(D)x=x&0xf0

51、设a和b是两个结构体变量,下面正确的表达式是(D)

(A)a=b(B)a=b+1(C)a>b(D)a==b

52、关于结构体变量运算重载中,正确的单目运算符重载语法格式(B)

(A)函数类型名单目运算符operator(虚参){函数体}

(B)函数类型名operator单目运算符(虚参){函数体}

(C)函数类型名单目运算符operator(){函数体}

(D)函数类型名operator单目运算符(){函数体}

53、后缀—运算符的重载函数语法格式如下:

函数类型operator--(虚参,int){函数体}

则下面关于第2个虚参的叙述中,正确的说法是(C)

(A)第2个参数必须给出参数名称

(B)第2个参数不能给出参数名称

(C)第2个参数必须是int型参数,其参数名可有可无

(D)第2个参数也可以是long型参数

54、设分数的结构体定义如下:

structFraction

{

intnume;

intdeno;

};

则下面关于取自身的单目运算符“+”的运算符重载函数中,最合适是(B)。

(A)Fractionoperator+(Fractionx)

{returnx;}

(B)Fractionoperator+(Fraction&x)

{returnx;}

(C)voidoperator+(Fractionx)

{returnx;}

(D)voidoperator+(Fraction&x)

{returnx;}

55、派生类对象不能访问基类中的(B)

(A)公有继承的公有的成员(B)公有继承的私有成员

(C)公有继承的保护成员(D)私有继承的公有成员

56、关于派生类叙述中,错误的说法是(B)

(A)派生类中从基类公有继承过来的分有成员的访问权限不变

(B)任何类都有基类

(C)派生类还可作为另一类的基类

(D)基类中的构造函数和析构函数是不可继承的

57、设有类的定义如下:

classAAA

{

intx;

chars[12];

}ob;

则在VC++环境下,变量ob所占内存空间字节数是(C)字节

(A)14(B)15(C)16(D)17

58、关于构造函数的叙述中,错误的说法是(B)

(A)构造函数的名称必须为类名

(B)构造函数最多只能有一个

(C)创建对象时自动执行构造函数

(D)构造函数无任何函数类型

59、(A)只能访问静态成员变量

(A)静态成员函数(B)虚函数(C)构造函数(D)析构函数

60、C++中类有两种用法,一种是类的实例化,即生成类对象,另一种是通过(B)派生出新的类

(A)复用(B)继承(C)重载(D)封装

二、判断题

1、!

比&&的优先级最低(F)

2、字符型变量不能赋予整数(F)

3、设inta=1,b=2,c=3,d=4;则条件表达式a

a:

c

c:

d的值为3(F)

4、用C++语言编制的源程序要变为目标程序必须要经过编译(T)

5、表达式x=i++和x=++i执行结果x获得不同的结果。

(T)

6、关于switch语句中必须要使用break。

(F)

7、设有“intx,a,b,c”,则if(a==b)x++;是不合法的。

(F)

8、用x>a&&x<=b描述区间[a,b]的表达式是正确的。

(F)

9、下面程序

m=-1

do

{

m=m*n;

}

while(!

m)

是死循环(F)

10、for(;;)写法是错误。

(F)

11、在循环语句体中,continue的作用是结束本次循环,回到循环头。

(F)

12、设intx=6;while(x){循环体},将不执行循环体中语句。

(F)

13、#definen10inta[n],b[n+1]定义数组是合法的。

(T)

14、相同类型的数据的集合称为数组。

(T)

15、设有两个数组a[]={‘a‘,’b’,’c’}和b=“abc”相同的。

(T)

16、设有两个数组a[]={‘a‘,’b’,’c’}和b=“abc”用函数strlen()得到的值是相等的(T)。

17、对二维数组inta[][3]={1,32,45,17,-23,87,36}第一维的值是3(T)

18、数组作为函数的实参传递是单向值传递(F)

19、按C++标识符的语法规定,new是合法的标识符(F)

20、int*buffer=newint[256]是分配256个字节。

(F)

21、函数模板参数的类型是通用类型(T)

22、构成重载函数的参数类型是不同。

(F)

23、设float*p,则p+1是当前地址加float类型的长度(T)

24、对结构体中的成员不能用“->”访问成员。

(F)

25、在x构造体中含有y构造体在访问y中的成员的格式是x·y·成员名(T)

26、结构体类型定义中可以出现联合体类型的成员,联合体类型中也可以出现结构体类型的成员(T)

27、对数据类型int的别名的定义可以是typedefInteger=int;(F)

28、enumweek{“MON”,“TUE”,“WED”}是错误写法。

(T)

29、文件包含命令不能装入“*cpp”类型的文件。

(F)

30、设包含文件在D盘的“ABC”目录中,则指定路径的语法格式是“#include”D:

\ABC\头文件名.h””(T)

31、条件编译的作用是根据不同条件进行编译不同程序段,以提高程序的兼容性(F)

32、设x是8位字节的数据,x&0xf0可对低4位进行清零(T)

33、设对变量intx进行“<<”运算,结果等价x/2。

(F)

34、运算符重载函数作用的提高运算符的处理速度。

(F)

35、双目运算符重载语法格式是函数类型名operator双目运算符(虚参1,虚参2){函数体}(F)

36、可以对类成员变量直接赋值。

(F)

37、设成员函数定义p&Set(pa)函数返回值是类p的对象的引用。

(F)

38、构造函数释放指针成员占据的内存空间,析构函数给数据成员赋初值。

(F)

39、设AB为一个类,则AB(AB&x)拷贝构造函数的函数原型。

(T)

40、一个类只能拥有一个类。

(F)

三、程序设计

1、求下列分段函数

#include

usingnamespacestd;

intmain()

{

intx,y;

cout<<”Pleaseinputthevalueofx:

”;

cin>>x;

if(x<5)

{

if(x>0)

y=x;

else

y=-x;

}

elseif(x>=5&&x<20)

y=3*x*x-2*x+1;

else

y=x/5;

cout<<”y=”<

return0;

}

2、输入1-7之间的数字,输出对应的星期几,要求当用户输入不在1-7的范围要有出错处理的功能。

#include

usingnamespacestd;

intmain()

{

intn;

cout<<”Pleaseinputyournumber:

”<

cin>>n;

switch(n)

{

case1:

cout<<”Monday”<

case2:

cout<<”Tuesday”<

case3:

cout<<”Thursday”<

case4:

cout<<”Wednesday”<

case5:

cout<<”Friday”<

case6:

cout<<”Saturday”<

case7:

cout<<”Sunday”<

default:

cout<<”Error,thenumberyouinputshouldbetween1and7.”<

}

return0;

}

3、求一元二次方程ax2+bx+c=0的两个实根。

#include

#include

usingnamespacestd;

intmain()

{

floata,b,c,d;

cout<<”Pleasseiputthevalueofa,b,c:

”;

cin>>a>>b>>c;

d=b*b-4*a*c;

if(d<0)

cout<<”Thisequationhasnoroot!

”<

elseif(d==0)

cout<<”Thisequationhasonlyoneroot:

”<<-b/2<

else

{

x1=(b+sqr(d))/2*a;

x2=(b-sqr(d))/2*a;

cout<<”Therootsofthisequationare:

”<

}

return0;

}

4、求s=1+3+5+…+99的和。

#include

usingnamespacestd;

intmain()

{

intS(0);

for(inti=0;i<100;i++)

S+=i;

cout<<”S=”<

return0;

}

5、输出32~126的ASICII码,每个字符与它的编码值相对应。

#include

#include

usingnamespacestd;

intmain()

{

charn[95];

for(inti=32,j=0;i<127;i++,j++)

n[j]=i;

for(inti=32,j=0;j<95;j++,i++)

{

cout<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1