C++复习题.docx
- 文档编号:12877007
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:28
- 大小:27.24KB
C++复习题.docx
《C++复习题.docx》由会员分享,可在线阅读,更多相关《C++复习题.docx(28页珍藏版)》请在冰点文库上搜索。
C++复习题
一、单项选择题(每题2分,共60分)
1.下列关于C++与C语言关系描述中错误的是【】。
(A)C++是C语言的超集
(B)C++对C语言进行了扩充
(C)C++和C语言都是面向对象的程序设计语言
(D)C++包含C语言全部的语法特征
2.C++对C语言做了很多改进,下列描述中【】使得C语言发生了质变,即从面向过程变成面向对象。
(A)增加了一些新的运算符
(B)允许函数重载,并允许设置默认参数
(C)规定函数说明必须用原型
(D)引进类与对象的概念
3.下列关于面向对象概念的描述中,【】是错误的。
(A)面向对象方法比面向过程方法更先进
(B)面向对象方法中使用了一些面向过程中没有的概念
(C)面向对象方法完全替代了结构化程序设计方法
(D)面向对象程序方法具有封装性、继承性和多态性
4.对于语句cout< (A)cout是一个输出流对象 (B)endl的作用是输出回车换行 (C)x是一个变量(D)<<称为提取运算符 5.下列【】是C++合法的标识符。 (A)_256(B)computer~1 (C)case(D)5char 6.下列【】是C++合法的字符型常量。 (A)97(B)”a”(C)‘\t’(D)a 7.以下自定义变量名中,【】是合法的。 (A)CHINA(B)byte-size(C)double(D)A+a 8.下列【】是C++合法的标识符。 (A)2op(B)-256 (C)case(D)Dfe 9.下列【】是C++合法的标识符。 (A)foo-bar(B)_256 (C)new(D)2b 10.下列整型常量的书写中,错误的是【】。 (A)0xaf(B)0853(C)34(D)OX1B 11.下列【】属于float类型常量。 (A)3.14f(B)0.0314E2 (C)3.14L(D)3.14 12.常量的书写格式决定了常量的类型和值,0x1011是【】。 (A)8进制整型常量(B)字符常量(C)16进制整型常量(D)2进制整型常量 13.下列运算符中优先级最高的是【】。 (A)? : (B)%(C)-=(D)&& 14.下列C++运算符中,优先级最高的是【】。 (A)+(B)*(C)<=(D)*= 15.在C++语言中,要求操作数必须是整型的运算符是【】。 (A)/(B)++(C) %(D) ! = 16.下列运算符中,优先级最低的是【】。 (A)==(B)? : (C)|(D)&& 16.如有inta=11;则表达式(a++*1/4)的值是【】。 (A)0(B)2.75(C)3(D)2 17.若x,i都是int型变量,则执行如下表达式x=(i=1,i+5,i++)后,x的值为【】。 (A)2(B)1(C)6(D)7 18.若x、i、j、k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为【】。 (A)4(B)16(C)32(D)52 19.若整型变量a、b、c、d中的值依次为: 1、4、3、2。 则条件表达式a a: c c: d的值为【】。 (A)1(B)2(C)3(D)4 20.设x,y和z都是int型变量,且x=3,y=6,z=4,则下面表达式中值为0的是【】。 (A)! ((x z||1)(B)‘x’&&’y’(C)x||y+z&&y-z(D) x 21.下列关于变量数据类型转换的描述中,错误的是【】。 (A)如果a为int型变量,b为char型变量,则a+b的值为int型 (B)如果a为float型变量,b为int型变量,则a-b的值为float型 (C)如果a为double型变量,b为float型变量,则a*b的值为double型 (D)如果a为int型变量,b为int型变量,则a/(double)b的值为int型 22.若有如下语句: inta; cout<<((a=3*5,a*4),a+5)< 则执行后的输出为【】。 (A)20(B)15(C)65(D)60 23.下列条件语句中,功能与其它语句不同的是【】。 (A)if(a)cout< (B)if(a==0)cout< (C)if(a! =0)cout< (D)if(a==0)cout< 24.下列条件语句中的描述中,【】是正确的。 (A)if语句中至少有一个else子句 (B)if语句中可以有多个else子句 (C)if语句中的if体中可以是循环语句 (D)if语句中if体内不能是switch语句 25.下列关于switch语句描述中,【】是正确的。 (A)switch语句中default子句只能放在最后 (B)switch语句中每个语句序列中必须有break语句 (C)switch语句中case子句后面的表达式只能是整型表达式 (D)switch语句中default子句可以没有,也可以有一个 26.下列关于开关语句的描述中,错误的是【】。 (A)开关语句中,case子句的个数是不受限制的 (B)开关语句中,case子句的语句序列中一定要有break语句 (C)开关语句中,default子句可以省略 (D)开关语句中,右花括号具有退出开关语句的功能 27.下列for循环的循环体执行次数为【】。 for(inti=0,j=10;i=j=4;i++,j--) (A)0(B)1(C)4(D)无限 28.执行语句: for(i=1;i++<4;)后;变量i的值是【】。 (A)3(B)4(C)5(D)不定 29.下列for循环语句执行的次数是【】。 for(inti=0,x=0;! x&&i<=5;i++) (A)5(B)无限(C)1(D)6 30.下列for循环语句执行的次数是【】。 for(inti=2;i==0;) (A)0(B)无限(C)1(D)2 31.执行下列语句段后,输出的字符“*”的个数是【】。 for(inti=50;i>1;--i)cout<<’*’; (A)48(B)49(C)50(D)51 32.下列while循环语句的循环次数是【】。 while(inti=0)i--; (A)0(B)1(C)2(D)无限 33.下列do...while循环的次数是【】。 intx=-1; do {x=x*x;} while(! x); (A)无限(B)1(C)2(D)0 34.下列关于break语句描述中,【】是错误的。 (A)break语句可用于if语句体内,它将退出if语句 (B)break语句可用于循环体内,它将退出该重循环 (C)break语句可用于switch语句中,它将退出switch语句 (D)break语句在一个循环体内可以出现多次 35.以下叙述中正确的是【】 (A)break语句只能用于switch语句题中 (B)continue语句的作用是使程序的执行流程跳出包含它的所有循环 (C)break语句只能用在循环体内和switch语句体内 (D)在循环体内使用break语句和continue语句的作用相同 36.已知枚举类型声明语句为: enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10}; 则下列说法错误的是【】。 (A)枚举常量WHITE的值为1(B)枚举常量RED的值为6 (C)枚举常量BLACK的值为10(D)枚举常量YELLOW的值为1 37.若有以下说明语句: struct {inta; doubleb; }stu; 则下面的叙述错误的是【】。 (A)struct是定义结构体类型的关键字 (B)stu是用户自定义的结构体变量 (D)a和b都是结构体成员名 (D)structstu是用户自定义的结构体类型 38.在32位PC机上使用C++语言,若有如下定义: structdata {inti; doublef; charch ; }b ; 则结构变量b占用内存的字节数为【】。 (A)1(B)2(C)8(D)13 39.下列关于数组概念的描述中,错误的是【】。 (A)数组中所有元素类型是相同的 (B)数组定义后,它的元素个数是可以改变的 (C)数组在定义时可以被初始化,也可以不被初始化 (D)数组元素的个数与定义时的每维大小有关 40.下列关于数组下标的描述中,错误的是【】。 (A)C++语言中数组元素的下标是从0开始的 (B)数组元素下标是一个整常型表达式 (C)数组元素可以用下标来表示 (D)数组元素的某维下标值应小于该维的大小值 41.下列合法的数组初始化语句是【】。 (A)inta[5]={0,1,2,3,4,5}; (B)chara[]="string"; (C)inta[]="string" (D)chara[]={0,1,2,3,4,5}; 42.intb[][3]={{1},{3,2},{4,5,6},{0}};则b[1][2]的值为【】。 (A)0(B)6(C)2(D)3 43.下列给字符数组进行初始化中,【】是正确的。 (A)chars3[][3]={‘a’,’x’,’y’};(B)chars2[3]="xyz"; (C)chars1[]="12345abcd";(D)chars4[2[3]={"xyz","mnp"}; 44.在下列对字符数组进行初始化中,【】是错误的。 (A)chars1[]=”abcd”;(B)chars2[3]=”xyz”; (C)char*p=”hello”;(D)chars3[2][4]={“xyz”,“mnp”}; 45.下面选项中等价的是【】。 (A)inta[2][3]={1,0,2,2,4,5}与inta[2][]={1,0,2,2,4,5}; (B)inta[][3]={1,0,2,2,4,5}与inta[2][3]={1,0,2,2,4,5}; (C)inta[2][3]={3,4,5}与inta[][3]={3,4,5}; (D)inta[2][3]={0,1}与inta[2][3]={{0},{1}}; 46下列关于字符数组的描述中,错误的是【】。 (A)字符数组中的每一个元素都是字符 (B)字符数组可以使用初始值表进行初始化 (C)字符数组可以存放字符串 (D)字符数组就是字符串 47.下面程序的运行结果是【】。 charc[5]={'a','b','\0','c','\0'}; cout< (A)'a''b'(B)ab(C)abc(D)以上三个答案均有错误 48.语句int*p=&k;定义了指针p,与这个语句等效的语句序列是【】。 (A)int*p;p=&k;(B)int*p;p=k; (C)int*p;*p=&k;(D)int*p;*p=k; 49.若有以下语句: inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; 则b的值为【】。 (A)5(B)6(C)8(D)9 50.若有以下定义和语句,且0 inta[]={1,2,3,4,5,6,7,8,9,0},*p,i; p=a; (A)&(a+1)(B)a++(C)&p[i](D)*P 51.已知: chars[]="abcd";输出显示字符'c'的表达式是【】。 (A)s(B)s+2 (C)s[2](D)s[3] 52.设intx[]={1,2,3,4,5,6};*p=x;则值为3的表达式是【】。 (A)p+=2,*++p(B)p+=2,*p++(C)p+=3,*p(D)p+=2,++*p 53.设inta[]={1,2,3,4,5,6};*p=a;则值为5的表达式是【】。 (A)*p+5(B)*(p+4)(C)*p+=9(D)p+5 54.已知: intm=10;下列表示引用的方法中,【】是正确的。 (A)int&x=m;(B)int&y=10;(C)int&z;(D)float&t=&m; 55.已知: inta(5),&ra=a;下列描述中,错误的是【】。 (A)ra是变量a的引用,即为变量的别名(B)ra的值为5 (C)改变ra的值为10,变量a值仍为5(D)ra的地址值为&a 56.关于函数的调用下面不正确的是【】。 (A)由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行。 (B)函数的调用可以在任意函数之间进行,只要有需要。 (C)一个函数可以自己调用自己。 (D)函数返回时可以不带返回值,这时函数在定义时其返回值的类型用void表示。 57.以下关于return语句的描述错误的是【】。 (A)函数可以不使用return语句。 (B)函数中可以出现多个return语句。 (C)函数中如果有返回值,就一定要有return语句。 (D)一个return语句可以返回多个值。 58.在C++中,关于函数返回值的类型是由【】。 (A)return语句中的表达式类型所决定的 (B)在定义该函数时所指定的数据类型所决定的 (C)调用该函数的主调函数类型所决定的 (D)调用该函数时系统临时决定的 59.若用数组名作为函数调用时的实参,则实际上传递给形参的是【】。 (A)数组首地址(B)数组的第一个元素值 (C)数组中全部元素的值(D)数组元素的个数 60.对数组名作函数的参数,下面描述正确的是【】。 (A)数组名作函数的参数,调用时将实参数组复制给形参数组 (B)数组名作函数的参数,主调函数和被调函数共用一段存储单元 (C)数组名作参数时,形参定义的数组长度不能省略 (D)数组名作参数,不能改变主调函数中的数据 61.一个函数功能不太复杂,但要求被频繁调用,应选用【】。 (A)内联函数(B)重载函数(C)递归函数(D)嵌套函数 62.采用函数重载的目的在于【】。 (A)实现共享(B)减少空间(C)使用方便,提高可靠性(D)提高速度 63.重载函数在调用时选择的依据中,【】是错误的。 (A)参数个数(B)参数的类型(C)参数的顺序(D)函数的类型 64.在C++中,关于下列设置参数默认值的描述正确的是【】。 (A)不允许设置参数的默认值 (B)设置参数默认值只能在定义函数时设置 (C)设置参数默认值时,应该是先设置右边的再设置左边的 (D)设置参数默认值时,应全部参数都设置 65.下列设置函数参数默认值的说明语句中,错误的是【】。 (A)intfun(intx,inty=10);(B)intfun(intx=5,int=10); (C)intfun(intx=5,inty);(D)intfun(intx,inty=a+b); 66.已知函数f的原型是: voidf(int*x,long&y); 则以下对函数f正确的调用语句是(其中a和b是实参)【】。 (A)f(a,b);(B)f(&a,b);(C)f(a,&b);(D)f(&a,&b); 67.若有下面的函数调用: fun(a+b,3,max(n-1,b));则fun中的实参个数为【】个。 (A)3(B)4(C)5(D)6 68.若要定义一个只允许在本源文件中所有函数中使用的全局变量,则该变量需要使用的存储类别是【】。 (A)extern(B)register(C)static(D)auto 69.下列存储类标识符中,【 】的可见性与存在性不一致。 (A)内部静态类(B)自动类(C)外部类(D)寄存器类 70.下列存储标识符中,【】不属于局部变量。 (A)函数形参(B)自动类(C)外部静态类(D)寄存器类 71.在C++语言中,数据封装要解决的问题是【】 (A)数据的规范性(B)便于数据转换 (C)防止不同模块之间数据的非法访问(D)避免数据丢失 72.下列关于类的定义格式的描述中,错误的是【】。 (A)类中成员有3种访问权限 (B)类的定义可分说明部分和实现部分 (C)类中成员函数都是公有的,数据成员都是私有的 (D)定义类的关键字通常用class 73.有关类和对象说法不正确的是【 】 (A)对象是类的一个实例 (B)类与对象的关系和数据类型与变量的关系相似 (C)任何一个对象只能属于一个具体的类 (D)一个类只能有一个对象 74.作用域运算符的功能是【】。 (A)标识作用域的级别的(B)指出作用域的范围的 (C)给定作用域的大小的(D)标识某个成员是属于哪个类的 75.下列描述中【】不是构造函数的特征。 (A)构造函数的函数名与类名相同(B)构造函数可以重载 (C)函数可以设置默认参数 (D)函数必须指定类型说明 76.【】是析构函数的特征。 (A)一个类中只能定义一个析构函数(B)析构函数与类名不同; (C)析构函数的定义只能在类体内(D)析构函数可以有一个或多个参数 77.下列描述中【】是析构函数的特征。 (A)析构函数可以有一个或多个参数(B)析构函数定义只能在体内 (C)析构函数与类名不同 (D)一个类中只能定义一个析构函数 78.下列关于析构函数的描述中,错误的是【】。 (A)析构函数的函数体都为空(B)析构函数是用来释放对象的 (C)析构函数是系统自动调用的(D)析构函数是不能重载的 79.下面的各种函数中,哪个不是类的成员函数【】。 (A)构造函数(B)友元函数(C)析构函数(D)复制构造函数 80.关于成员函数特征的下列述描述中,【】是错误的。 (A)成员函数一定是内联函数(B)成员函数可以重载 (C)成员函数可以设置参数的默认值(D)成员函数可以是静态的 二、程序填空题(每空2分,共20分) 1.下列程序是求100之内的能被7整除的自然数之和。 请在横线处填入适当的语句,将程序补充完整。 #include voidmain() { intsum; _ (1)_; for(inti=1;__ (2)_;i++) if(_(3)_) sum+=i; cout< } 答案: _sum=0_i<=100_i%7==0__ 2下面程序的功能是计算xn。 请在横线处填入适当的语句,将程序补充完整。 #include voidmain() { intn,x; cin>>x>>n; doubley=1; for(inti=1;__ (1)_;i++) _ (2)_; cout< } 答案: i 3下面程序是输出100内能被3整除且个位数是6的所有整数。 请在横线处填入适当的语句,将程序补充完整。 #include voidmain() { inti,j; for(i=0; (1);i++) { j=i*10+6; if( (2)) continue; else cout< } } 答案: i<10j%3! =0 4.下面程序运行后输出的结果为: * *** ***** ******* 请在横线处填入适当的语句,将程序补充完整。 #include #include voidmain() { inti,j,k ; for(i=1 ;i<=4 ;i++) { for(j=1;j<20-3*i; (1)) cout<<”“; for(k=1; (2);k++) cout< (3); }} 答案: j++k<2*i-1cout< 5.下面程序运行后输出的结果为: 1 121 12321 1234321 请在横线处填入适当的语句,将程序补充完整。 #include #include voidmain() { inti,j,k ; for(i=1 ;i<=4 ;i++) { for(j=1;j<20-3*i;j++) cout<<”“; for(k=1; (1);k++) cout< for( (2);k>0;k--) cout< cout< }} 答案: k<=ik=i-1 6.以下程序将数组中的元素按逆序存放。 请在横线处填上适当的语句,将程序补充完整。 #include voidmain() { inta[12],i,j,t; for(i=0;i<12;i++) cin>>a[i]; for(i=0;i<6;i++) { (1); (2);(3);}//数组元素交换 for(i=0;i<12;i++) cout< 答案: t=a[i]a[i]=a[11-i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题