C++复习题Word下载.docx
《C++复习题Word下载.docx》由会员分享,可在线阅读,更多相关《C++复习题Word下载.docx(71页珍藏版)》请在冰豆网上搜索。
![C++复习题Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/3/b9238155-9c09-45d2-80bf-e395d82699ac/b9238155-9c09-45d2-80bf-e395d82699ac1.gif)
b)求a、b、c中最大值。
30.执行intx(3);
doubley(3.0);
if(x=y)cout<
<
”x=y”;
elsecout<
”x!
=y”;
后屏幕显示得结果为x!
=y。
31.若i=3,则执行语句“j=++i;
”之后j的值为4。
32.如果x=0;
则条件语句if(x=5)的值为假。
33.若i=3,则执行“j=i++;
34.执行inta=1;
cout<
~a后屏幕显示得结果为-1。
35.
数组是一种构造型数据,即是若干相同类型的数据的集合。
36.若有inta[3][4];
则a[3][4]是对二维数组的正确访问。
37.在C++中将数组名看成是一个地址,其地址值是常量,不可改变。
38.数组名表示数组在内存中的首地址,其值为一个可变的量。
39.数组定义为a[N],则N可以是常量,也可以是变量。
40.定义数组时,可以使用变量来说明数组某一维的大小。
41.inta[5]={1,2,3,4},b[5];
b=a;
含有非法语句。
42.在两个具有包含关系的作用域内声明了两个同名标识符,则外层标识符在内层结束生命期。
43.静态全局变量和静态局部变量的作用域不同,但生命期相同。
44.局部静态变量和局部自动变量具有相同的生命期。
45.定义在函数中或{…}之间的变量称为局部变量。
46.函数的形参存放在全局数据区。
47.静态变量和全局变量存放在全局数据区。
48.函数调用语句f(a++,b--,f(++c,--d))的参数个数是4个。
49.函数原型中的形参名与函数调用中的实参名可以相同,也可以不相同。
50.如果函数调用中将实参的值传递给形参,则形参的改变会影响实参。
51.当函数的形参为数组时,实参传递给形参的是数组的首元素。
52.数组名作为函数实参时,传递给被调函数的是数组首元素的值。
53.函数的实参数在任何情况下都要和形参数相同。
54.为函数的形式参数指定缺省值时,这些形式参数必须在参数表的右侧连续出现。
55.所有函数都可定义为内联函数。
56.内联函数的调用机制和一般函数不同。
57.内联函数中不可使用循环,break等语句。
58.使用内联函数的目的是提高程序的可读性。
59.函数可以有多个return语句,因此函数可以返回多个值。
60.一个函数可以没有return语句。
61.函数的类型可以作为是否为重载函数的标志。
62.charc[10]=”ABCD”。
则函数strlen(c)的值为4。
63.函数strcmp(“AShhjjj”,“ASHHJJJ”)的返回值是0。
64.内存单元的地址与内存单元中的内容是两个相同的内容。
65.声明一个指针型变量后,就可以将该指针指向任何对象。
66.声明指针型变量必须声明其类型。
67.不可为一个指针赋常量。
68.语句inti,j;
int*pi,pj;
定义了2个整型变量和2个指向整型变量的指针。
69.在inti,*intp=&
i;
(*intp)++中出现的两个*含义是相同的。
70.语句char*ps=”Thisisc++”的含义是将字符串存放到ps字符数组中。
71.语句“*p++”与语句“(*p)++”等价。
72.语句“int*p[4]”定义了一个一维指针数组。
73.指针在任何情况下都可进行>
<
>
=,<
=,==运算。
74.inta[10];
语句a++;
非法。
75.double(*fp)()表示为一函数名,该函数返回一个指向double类型变量的指针。
76.通过赋值语句“函数指针名=&
函数名“获得函数的地址。
77.使用文件操作必须先说明一个文件流对象。
选择填空
1.____将C++源程序生成目标程序。
A解释程序B编译程序
C连接程序D汇编程序
B
2.用#include命令包含的文件是()
A.目标文件B.可执行文件C.源程序文件D.二进制文件
C
3.C++使用控制符对数据进行格式输出时,应包含()文件。
A.iostream.hB.fstream.hC.iomanip.hD.stdlib.h
4.以下可作为正确变量名的是()。
A.caseB.-cdC._33D.33s
5.下面选项中能用作用户自定义的标识符是()。
A.friendB.-varC.3Xyz-D.Float
D
6.下列变量名中,()是合法的。
A.CHINAB.Byte-sizeC.doubleD.A+a
A
7.下列变量名中,()是合法的。
A.classB.class1C.1classD.cl\ass
8.下列变量名中,()是合法的。
A._123B.voidC.doubleD.switch
9.下列标识符中合法的标识符有____个。
void_mainf4.5$MyFilecCharnint43a
A3B4
C6D5
10.下列标识符中,关键字有______个。
_mainifIntusingvoidbreaksin
A.2B.3
C.4D.5
11.下列标识符中合法的标识符有____个。
void_mainx2.1$FilecCharnintinteger
12.下列字符常量的表示中,()是错误的。
A.’\105’B.’*’C.’\4f’D.’\a’
13.在3,-5.0,0.6,0x12,12e3,‘a’,”ab”,017等常量中,属于整型常量的有______个。
14.____是三目运算符。
A?
:
B+=
C<
=D|=
15.____不是复合运算符。
A.?
:
B.+=
C.&
=D.%=
A
16.^为异或运算符,a^a的结果是____个。
A全1B全0
CaD~a
17.inti=2,c=65;
则cout<
char(i|c)的显示结果是____。
A67B65
CADC
18.将01110101的低4位每位求反,高4位不变,可将其与____进行异或运算。
A11111111B00001111
C01010101D00000000
19.若inta;
charb;
floatc;
doubled;
则表达式a*b-c+d值的数据类型为()。
A.intB.floatC.doubleD.char
20.设a和b为int类型的变量,且b不等于0,则a/b*b+a%b的结果是____。
AaBb
C大于a的整数D小于a的整数
21.当x=y=0,z=1时,逻辑表达式x&
&
y++&
--z执行后,x、y、z的值分别是______。
A.010B.011
C.001D.000
22.执行intx,y,t;
x=y=3;
t=++x||++y后,x和y的值分别为______。
A.33B.34
C.43D.44
23.设x和y均为bool量,则x&
y为真的条件是__________。
A.它们均为真 B.其中一个为真
C.它们均为假 D.其中一个为假
24.判断年份是否为闰年的条件是:
年份是400的倍数,或者年份是4的倍数但不是100的倍数。
变量year中保存一整数代表年份,则____是判断year是否为闰年的正确表达式。
Ayear%400==0&
year%4==0&
year%100!
=0
Byear%400==0||year%4==0||year%100!
Cyear%400==0&
year%4==0||year%100!
Dyear%400==0||year%4==0&
25.正确表示”a、b都大于0或都小于0”的关系表达式是______。
A.(a>
0&
b>
0)&
(a<
b<
0)B.(a>
0||b>
0||b<
0)
C.(a>
0)||(a<
0)D.a*b>
D
26.a不小于5且b小于-3的错误条件表达式是____。
A(a>
=5)&
(b<
=-3)B!
((a<
5)||(b>
=-3))
C!
5)&
!
(b>
=-3)D(a>
-3)
27.要判断char型变量m是否是数字,可以使用下列表达式()。
A.0<
=m&
m<
=9B.’0’<
=m&
m<
=’9’
C.”0”<
m>
=”9”D.以上都错误
28.下列语句中不正确的是____。
Ainta=3,b=3,c=3;
Binta=b=c=3;
Ca=b=c=3;
Da=(b=10)/(c=2);
29.inti=12;
cout<
hex<
”,”<
dec<
oct<
endl;
输出结果为
A14,c,12B12,14,c
C12,c,14Dc,12,14
30.整型常量011表示的是____11。
A二进制B八进制
C十进制D十六进制
31.需要换行时,可以使用操作符endl;
其作用和____相同。
A‘\b’B‘\t’
C‘\n’D‘\r
32.对switch的错误描述是______。
A.break可选B.case后的常量表达式必须各不相同
C.default必须出现在最后D.switch可以嵌套使用
C
33.对选择结构的语句描述有:
①if语句可以嵌套;
②else与最近的且没有与其它else匹配的if匹配;
③switch语句可以实现多项选择;
④switch语句中的case表达式可以是含有变量和函数的表达式;
⑤switch语句中的case部分如都带有break,则case书写一般没有次序要求;
⑥switch语句中default可以缺省;
⑦switch语句可以嵌套;
则下列有错误的描述是______。
A.①②③④B.①②③⑤
C.①②③⑥D.①②③⑦
A?
?
34.程序如下,该程序运行结果是____。
inti=5;
while(i);
--i;
A.不构成循环B.循环5次
C.循环4次D.死循环
35.下列while循环的次数为()
while(inti=0)i--;
A.0B.1C.5D.无限
36.下列do-while循环的循环次数为()
已知inti=5;
do{cout<
i--<
i--;
}while(i!
=0);
37.程序inti=1,sum=0;
while(i++<
=10)sum+=i;
出循环后sum的值为____。
A45B55
C65D75
38.程序inti=0,s=0;
while(i++<
=10)s+=i;
其中while语句循环____。
A9次B10次
C11次D死循环
39.下列程序中不构成死循环的是______。
A.inti=5;
while(i--);
B.inti=5;
while(i--)i--;
C.inti=5;
do{i++;
}while(i>
5);
D.inti=5;
while
(1){i=i%5+1;
if(i>
5)break;
}
40.要定义具有5个元素,初始值依次为1,2,3,0,0的一维数组vect,错误地定义形式是______。
A.vect[5]={1,2,3,0,0}B.vect[5]={1,2,3}
C.vect[]={1,2,3,0,0}D.vect[]={1,2,3}
41.在inta[][3]={{1},{3,2},{4,5,6},{0}};
中,a[2][2]的值是()。
A.0B.5C.6D.2
42.若有说明inta[3][4];
则对a数组元素的非法引用是()。
A.a[0][2*1]B.a[0][4]C.a[4-2][0]D.a[1][3]
43.二维数组可以看成一个矩阵,二维数组matrix初始化成{{1,2,3},{4,5},{6}},则位于矩阵中心的元素值为____。
A0B5
C6D随机数
44.执行下列程序后显示的结果是______。
voidDispchar(char*pc){
if(*pc!
=0){Dispchar(++pc);
*--pc;
}
return;
voidmain(){
charch[]="
ABCD"
*pc=ch;
Dispchar(pc);
A.ABCDB.DCBA
C.DABCD.BADC
45.下面程序段的运行结果是()。
charc[]=”\t\v\\\0will\n”;
strlen(c);
A.4B.3C.9D.字符串中有非法字符,输出值不确定
46.判断字符串a和b是否相等,应当使用()。
A.if(a==b)B.if(a=b)C.if(strcpy(a,b))D.if(strcmp(a,b))
47.字符串”Thisis”比字符串”This”______。
A.大B.小
C.相等D.无法比较
48.若有以下语句:
staticcharx[]=”12345”;
staticchary[]={‘1’,’2’,’3’,’4’,’5’};
则正确的说法是()。
A.x数组和y数组的长度相同B.x数组的长度大于y数组的长度
C.x数组的长度小于y数组的长度D.x数组与y数组等价
49.下面对s初始化不正确的是()。
A.chars[5]={“abc”};
B.chars[5]={‘a’,’b’,’c’};
C.chars[5]=””;
D.chars[5]=”abcde”;
50.设有变量说明:
chara[10],*p=a;
则下列表达式中,正确的是()。
A.a=”welcome”B.*p=”welcome”C.a[10]=”welcome”D.p=”welcome”
51.对语句char*strp=”ThisisC++program”的正确描述是____。
A定义了一个字符数组strp,将上述字符串放入其中。
B等价于char*string;
*string=”ThisisC++program”。
C等价于char*string;
string=”ThisisC++program”。
DABC描述均正确。
52.若charp,p1[20];
*s;
s=”visual”;
p1=p;
正确的说法是()。
A.p和p1的均为”visual”
B.第一个赋值语句正确,第二个赋值语句不正确。
C.第一个赋值语句不正确,第二个赋值语句正确。
D.两个赋值语句均不正确。
53.下列有错误的语句是____。
Aconstinti=3;
i=i+1Binti,*pi=&
Cchar*constpchar=”C++”;
Dcharstr[20]=”C++Program”;
54.定义数组inta[10],*p=a;
则与a[i]含义不同的是____。
A*a+iB*(p+i)
Cp[i]D*(a+i)
55.执行程序inta,*p=&
a;
*p=10;
(*p)++;
a++后,a的值为____。
A10B11
C12D不定
56.有定义inti=0,j=9,a[10],*p1=a,*p2=p1+j;
则不正确的表达式是______。
A.p1+jB.p2-i
C.p2>
p1D.p3=(p2+p1)/2
57.有定义inti,*p1=&
i,*p2;
doubled,*p3=&
d;
A.p1++B.p2--
p1D.p2=p3
58.执行inta[6]={1,2,3,4,5,6},*p=&
不能访问到值为4的元素的表达式是______。
A.a[3]B.*(a+3)
C.*(p+3)D.*p+3
59._____是对指针的错误描述。
A.同类型的指针可以进行加运算
B.同类型的指针可以进行减运算
C.同类型的指针可以关系运算
D.同类型的指针可以赋值运算
60.对指针的描述有①指针的类型表示指针所指对象的类型;
②同类型指针可以进行=运算;
③同类型指针可以进行关系运算;
④同类型指针可以进行+-*/运算;
⑤*p++和(*p)++等价;
⑥inta[10];
a=a+1;
含有非法操作;
⑦各类指针均是一个32位无符号数,因此指针变量无类型区别。
下列选项中全部正确的是____。
A.①②③⑦B.①②③⑤
C.①②③⑤⑥D.①②③④
61.对指针的描述有①指针的类型表示指针所指对象的类型;
⑤*p++和*(p++)的作用相同;
⑥int(*fp)()和int*fp()含义相同;
A①②③⑦B①②③⑥
C①②③⑤D①②③④
62.对数组的描述有:
①数组元素在内存中依次存放没有空隙;
②数组名是一个指针常量;
③可以用指向数组的指针访问数组元素;
④数组名和数组元素均可作为函数的参数传递给形参;
⑤chars[50]=”…”;
s;
显示的是s数组首元素的地址;
⑥数组元素在内存中以最左下标变化最快,最右下标变化最慢的顺序线性存放;
⑦同类型的数组可以整体赋值。
则下列全部正确的描述是______。
A.①②③④B.②③④⑤
C.③④⑤⑥D.④⑤⑥⑦
63.对数组的描述有:
①数组是一种顺序容器;
②数组中的元素可以是基本的或自定义的数据类型;
③数组名表示数组首元素的地址;
④字符串可以存放在字符数组中,以0作为结束标记;
⑤数组名和数组元素均可作为函数的参数;
⑥数组在内存中以元素最左下标变化最快,最右下标变化最慢的顺序线形存放;
⑦inta[3];
通过a++操作可以访问元素a[1],⑧inta[3][4],*p=a是正确的定义;
A.①②③④⑤B.①②③④⑥
C.①②③④⑦D.①②③④⑧
64.指针数组p的正确定义是()
A.int(*p)[4]B.int*p[4]C.int*p[]D.int*(p[4])
65.以下说明中,标识符ptr()。
int(*ptr)[3];
A.说明不合法。
B.是一个指针数组名。
C.是一个指针,它指向一个具有三个元素的一维数组。
D.是一个指向整型变量的指针。
66.若有以下声明,则它与()中的声名是等价的。
chars[3][5]={“aaaa”,”bbbb”,”cccc”};
A.char**s1={“aaaa”,”bbbb”,”cccc”};
B.char*s2[3]={“aaaa”,”bbbb”,”cccc”};
C.chars3[][5]={“aaaa”,”bbbb”,”cccc”};
D.Chars4[][4]={“aa