2学期C++复习资料Word格式.docx
《2学期C++复习资料Word格式.docx》由会员分享,可在线阅读,更多相关《2学期C++复习资料Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
![2学期C++复习资料Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/26/0314b5a9-fe77-40f6-a16b-2a37aa33a708/0314b5a9-fe77-40f6-a16b-2a37aa33a7081.gif)
12.如要求在if后一对括号中的表达式,表示a不等于0的时候的值为"
真"
,则能正确表示这一关系的表达式为:
A.a<
>
0B.
!
a
C.a=0D.a
13.下面的这个循环的循环次数是:
for(inti=0,j=10;
i=j=10;
i++,j--)
A.无限次B.
语法错误,不能执行
C.10D.1
14.以下哪个不是循环语句:
A.while语句B.
do-while语句
C.for语句D.if-else语句
15.下列do-while循环的循环次数是:
已知:
inti=5;
do{cout<
<
i--<
endl;
i--;
}while(i!
=0)
A.0B.
2
C.5D.无限次
16.下列do-while循环的循环次数是:
for(inti=0,x=0;
x&
i<
=5;
i++)
A.5B.
6
C.1D.无限次
17.下列叙述中正确的是:
A.C++语言程序总是从第一个定义的函数开始执行
B.
C++语言程序中,return语句中表达式的类型应该与函数的类型一致
C.C++语言程序中,要调用的函数必须在main()函数中定义
D.C++语言程序中,main()函数必须放在程序开始的部分
18.下列叙述中正确的是:
A.C++语言程序中,main()函数必须在其它函数之前,函数内可以嵌套定义函数
C++语言程序中,main()函数必须在其它函数之后,函数内可以嵌套定义函数
C.C++语言程序中,main()函数必须在其它函数之前,函数内不可以嵌套定义函数
D.C++语言程序中,main()函数的位置没有限制,函数内不可以嵌套定义函数
19.已知函数test定义为:
voidtest()
{
…………
}
则函数定义中void的含义是:
A.执行函数test后,函数返回任意类型值
执行函数test后,函数不再返回
C.执行函数test后,函数没有返回值
D.以上三个答案都是错误的
20.C++语言中函数返回值的类型是由______决定的?
A.return语句中的表达式类型
B.调用该函数的主调函数类型
C.定义函数时所指定的函数类型
D.以上说法都不正确
21.在一个源文件中定义的全局变量的作用域为:
A.本程序的全部范围B.本函数的全部范围
C.从定义该变量的位置开始到本文件结束D.以上说法都不正确
22.以下说法错误的是:
A.全局变量就是在函数外定义的变量,因此又叫做外部变量
B.一个函数中既可以使用本函数中的局部变量,也可以使用全局变量
C.局部变量的定义和全局变量的定义的含义不同
D.如果在同一个源文件中,全局变量和局部变量同名,则在局部变量的作用范围内,全局变量通常不起作用
23.当一个函数无返回值时,定义它的函数类型应是___。
A.voidB.intC.任意D.无
24.要声明一个有10个int型元素的数组,正确的语句是____。
A.inta[10];
B.inta[2,5];
C.inta[];
D.int*a[10];
25.合法的数组初始化语句是____。
Achara="
string"
;
B.inta[5]={0,1,2,3,4,5};
C.inta[]="
D.chara[]={0,1,2,3,4,5};
26.在下述对C++语言字符数组的描述中,有错误的是____。
A.字符数组可以存放字符串
B.可以在赋值语句中通过赋值运算符"
="
对字符数组整体赋值
C.字符数组中的字符串可以进行整体输入输出
D.字符数组的下标从0开始
27.若用数组名作为函数调用时的实参,则实际上传递给形参的是____。
A.数组首地址B.数组的第一个元素值
C.数组中全部元素的值D.数组元素的个数
28.已知:
inti,x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是____。
for(i=0;
i<
3;
i++)
printf("
%d"
x[i][2-i]);
A.159B.147C.357D.369
29.在C++语言中,引用数组元素时,其数组下标的数据类型允许是____。
A.只能整型常量B.只能整型表达式
C.整型常量或整型表达式D.任何类型的表达式
30.以下对二维数组a的正确声明是____。
A.inta[3][]B.floata(3,4)
C.doublea[1][4]D.floata(3)(4)
31.已知:
int[3][4],则对数组元素引用正确的是____。
A.a[2][4]B.a[1,3]
C.a[1+1][0]D.a
(2)
(1)
32.在C++语言中,二维数组元素在内存中的存放顺序是____。
A.按列存放B.按行存放
C.由用户自己定义D.由编译器决定
33.下面程序的运行结果是____。
charc[5]={'
a'
'
b'
\0'
c'
};
%s"
c);
A.'
'
B.ab
C.abcD.以上三个答案均有错误
34.下面函数的功能是:
intfun(char*x)
{
char*y=x;
while(*y++){};
returny-x-1;
}
A.求字符串的长度B.求字符串存放位置
C.比较两个字符串的大小D.将字符串x连接到字符串y后面
35.若有以下说明和语句,且0<
10,则()是对数组元素的错误引用。
inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
A.*(a+i)B.a[p-a]C.p+iD.*(&
a[i])
36.下面程序的输出是:
#include<
stdio.h>
voidmain()
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
%d"
*(p+2));
A.3B.4C.1D.2
37.若有以下定义和语句,且0<
10,则对数组元素地址的正确表示是:
inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
A.&
(a+1)B.a++C.*pD.&
p[i]
38.已知:
inta[]={1,2,3,4,5,6},*p=a;
下面表达式中其值为5的是:
A.p+=3;
*(p++);
B.p+=5;
*p++;
C.p+=4;
*++p;
D.p+=4;
++*p;
39.若有以下语句,且0<
=k<
6,则正确表示数组元素地址的语句是()
intx[]={1,9,10,7,32,4},*ptr=x,k=1;
A.x++B.&
ptrC.&
ptr[k]D.&
(x+1)
40.若有说明:
inti,j=7,*p;
p=&
i;
则与i=j等价的语句是()
A.i=*p;
B.*p=*&
j;
C.i=&
jD.i=**p;
41.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是()
A.k=*p1+*p2;
B.p2=k;
C.p1=p2;
D.k=*p1*(*p2);
42.设有以下函数定义,则该函数返回的值是()
int*fun(inta)
int*t,n;
n=a;
t=&
n;
returnt;
A.一个不可用的存储单元地址值B.一个可用的存储单元地址值
C.n中的值D.形参a中的值
43.由C++目标文件连接而成的可执行文件的缺省扩展名为__________。
A.cpp
B.exe
C.obj
D.lik
44.在下面的一维数组定义中,哪一个有语法错误。
__________
A.
inta[]={1,2,3}
B.inta[10]={0}
C.
inta[]
D.inta[5]
45.在下面的函数声明中,存在着语法错误的是__________。
voidBC(inta,int)
B.voidBD(int,int)
C.
voidBE(int,int=5)
D.intBF(intx;
inty)
46.设x和y均为bool量,则x&
y为真的条件是__________。
A.它们均为真
B.其中一个为真
C.它们均为假
D.其中一个为假
47.下面的哪个保留字不能作为函数的返回类型?
__________。
A.void
B.int
C.new
D.long
48.假定a为一个整型数组名,则元素a[4]的字节地址为__________。
A.a+4
B.a+8
C.a+16
D.a+32
49.对于int*pa[5];
的描述,()是正确的。
A.pa是一个指向数组的指针,所指向的数组是5个int型元素;
B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;
C.pa是一个具有5个元素的指针数组,每个元素是一个int型指针;
D.pa[5]表示某个数组的第5个元素的值;
50.下述关于开关语句的描述中,()是正确的。
A.开关语句中default子句只能放在最后;
B.开关语句中每个语句序列中必须有break语句;
C.开关语句中default子句可以没有,也可以有一个;
D.开关语句中case子句后面的表达式可以是整形表达式。
51.关于C++与C语言的关系的描述中,()是错误的。
A.C语言是C++的一个子集;
B.C语言与C++是兼容的;
C.C++对C语言进行了一些改进;
D.C++和C语言都是面向对象的
52.下列各运算符中,()优先级最高。
A.+(双目);
B.*(单目);
C.<
=;
D.*=
53.下述关于break语句的描述中,()是不正确的。
A.break语句可用于循环体内,它将退出该重循环;
B.break语句可用于if体内,它将退出if语句;
C.break语句可用于开关语句中,它将退出开关语句。
D.break语句在一个循环体内可以出现多次。
54.下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用()合适。
A.递归调用;
B.重载函数;
C.内联函数;
D.嵌套调用。
55.下列各运算符中,()优先级最低。
A.?
:
B.|C.||D.!
56.下列存储类标识符中,()的可见性与存在性不一值。
A.外部类;
B.自动类;
C.寄存器类D.内部静态类;
57.在一个被调用函数中,关于return语句使用的描述,()是错误的。
A.被调用函数中可以不用return语句;
B.被调用函数中可以使用多个return语句;
C.被调用函数中,如果有返回值,就一定要有return语句;
D.被调用函数中,一个return语句可返回多个值给调用函数。
58.在C++中,关于下列设置参数默认的描述中,()是正确的。
A.不允许设置参数的默认值;
B.设置参数默认值只能在定义函数时设置;
C.设置参数默认值时,应该是先设置右边的再设置左边的;
D.设置参数默认值时,应该全部参数都设置;
59.下列定义中,()是定义指向数组的指针p。
A.int*p[5];
B.int*p[];
.(int*)p[5];
D.int(*p)[5];
二、填空题
1.C++程序一般可以分为4个部分:
预处理指令,全局说明,程序的主函数,用户自定义的函数。
2.任何程序逻辑都可以用顺序、选择和循环等三种基本结构来表示。
3.do-while语句与while语句的主要区:
do-while语句是先执行循环体,然后检查循环条件;
while语句是先检查循环条件,再执行循环体。
4.语句是构造程序最基本的单位,程序运行的过程就是执行程序语句的过程。
5.break语句实现的功能是:
break语句用在循环语句的循环体内的作用是终止当前的循环语句。
6.continue语句实现的功能是:
根据程序的目的,有时需要程序在满足另一个特定条件时跳出本次循环。
7.C++语言的头文件与源程序文件扩展名分别是h和cpp。
8.在C++程序中使用基本输入与输出流时需要包含的头文件名是iostream.h。
9.在C++语言中,惟一的一个三目运算运算符是?
:
。
10.在C++语言中,数值常量59、0123及0x9f对应的十进制值分别是59、83、159。
11.假定intx=4,y=8;
则x<
2和y>
2的值分别是16、2。
12.设对数组赋初值如下:
inta[]={2,7,9,6,5,7,10},则a[2]=9,a[5]=7。
13.若变量y是变量x的引用,则对变量y的操作就是对变量x的操作。
14.一个二维字符数组s[10][20]能够存储10个字符串,每个字符串的长度至多为19。
15.C++中当一个函数无返回值时,则函数的类型是void。
16.在字长为32位的机器中,sizeof(char)=1字节,sizeof(unsignedint)=4字节.
17.C++语法规定,任何变量在使用前必须先(定义);
变量有两个值,一个是变量数据值,另一个是变量的地址值。
18.浮点型变量f当前存储的值是17.8,经(int)f类型强制转换后f存储的值是__17.8__。
19.函数的调用主要分为传值调用和引用调用。
传值调用又分为传值调用、传址调用,前者的特点是形参值的改变不影响实参。
20.若:
typedefchar*STRING;
STRINGp,s[10];
则:
p和s的数据类型分别是字符型指针(指向字符型变量的指针),字符型指针数组。
21.求a,b,c中的最大值,请将表达式补充完整(t=a>
=b?
a:
b)<
c?
c:
t。
//c:
(t=a>
b)
22.C++中任何一个数组的名字是一个常量指针,该指针的值是该数组首元素的地址。
23.函数调用时的参数传递主要分为单向传递和双向传递,前者的特点是形参的改变不影响实参。
24.函数重载时要求同名函数的参数的个数不同或参数的类型不同,否则无法确定是哪个函数。
25.枚举是一种构造的数据类型,它是若干个有名字的整型常量的集合。
26.C++中,&的优先级比&&的高;
大多数运算符的结合性是从左到右的,只有单目、三目、赋值三类运算符的结合性是从右到左的。
三、判断题
1、在程序正确的前提下,可读性、易维护、可移植是程序设计的首要目标。
2、C++程序是函数驱动的。
3、C++程序设计中,变量和函数均遵循先声明后使用的原则。
4、数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。
(×
)
5、while循环语句的循环体至少执行一次。
(×
6、在说明语句inta(15),&
b=a,*p=&
a;
中,b的值与*p的值是相等的。
( √ )
7、按照标识符的要求,下划线是不能组成正确标识符的。
8、C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。
9、引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
(√ )
10、for循环是只有可以确定的循环次数时才可使用,否则不能用for循环。
( ×
)
11、返回值类型、参数个数和参数类型都相同的函数也可以重载。
12、当break语句用在双重循环的内循环中时,它只能退出内循环到外循环中去,而不能直接退出整个双重循环。
( √)
13、在语句constchar*ptr中,ptr是指向字符串的常量指针。
14、宏定义命令是以分号结束的。
15、函数形参的作用域是该函数的函数体。
四、阅读程序题
1、#include<
iostream.h>
voidmain()
ints=0;
for(inti=1;
;
i++){
if(s>
50)break;
if(i%2==0)s+=i;
}
cout<
"
i,s="
"
s<
运行结果:
i,s=15,56
2、#include<
inti(0);
while(++i){
if(i==10)break;
if(i%3!
=1)continue;
cout<
4
7
--------------------------------------
3、#include<
chara[]="
abcdabcabfgacd"
inti1=0,i2=0,i=0;
while(a[i])
{
if(a[i]=='
)i1++;
)i2++;
i++;
i1<
'
i2<
43
4、#include<
iomanip.h>
inta[9]={2,4,6,8,10,12,14,16,18};
for(inti=0;
i<
9;
cout<
setw(5)<
*(a+i);
if((i+1)%3==0)cout<
2
4
6
8
10
12
14
16
18
5、#include<
staticinta[8]={2,4,6,8,10,12,14};
voidfun(int*pa,intn);
voidmain()
{
intm=8;
cout<
a[7]="
a[7]<
fun(a,m);
}
voidfun(int*pa,intn)
for(intI=0;
I<
n-1;
I++)
*(pa+7)+=*(pa+I);
a[7]=0
a[7]=56
6、#include<
intx=3,y=3;
switch(x%2)
case1:
switch(y)
{
case0:
cout<
first\t"
case1:
second\t"
break;
default:
hellow\t"
}
case2:
cout<
third\n"
hellowthird
7、#include<
voidLE(int*a,int*b){
intx=*a;
*a=*b;
*b=x;
*a<
*b<
intx=10,y=25;
LE(&
x,&
y);
x<
y<
2510
8、#include<
io