C++程序复习题
一.选择题(每题2分,共40分)
1.C++规定,在一个源程序中,main()函数的位置()。
A.必须在最开始
B.必须在最后
C.可以任意
D.必须在系统调用的库函数的后面
2.以下()是C/C++合法的标识符。
A.char2
B.@x
C.int
D.7Bx
3.下面的程序,对于输入:2 9 15,输出的结果是()。
#include
void main()
{
int a;
float b;
cout<<”input a,b”< cin>>a>>b; cout<<”a+b=”< } A.2 B.11 C.26 D.24 4.下面关于编译预处理命令的说法中,正确的是()。 A.一条文件包含命令能包含多个文件 B.文件包含命令不可以嵌套使用 C.编译预处理命令是在编译之前被处理的命令 D.编译预处理命令中的“#”可以省略 5.在以下关于C++语言的叙述中,正确的是() A.if语句结构中必须有else语句 B.switch语句结构中必须有default语句 C.C++程序必须有return语句 D.C++中使用流来执行标准的输入输出操作 6.下列不正确的变量定义方法是()。 A.int a,&b=a; B. float a,*b=&a; C.int a(4),b(0); D. int a=b=5; 7.下列运算符优先级按由高到低的顺序排列正确的是()。 A.*=. &&.!=.% B.*=. %. &&. != C.%. != .&& .*= D. &&. !=. %.= 8.已知x,y为整型,z为实型,ch为字符型,下列表达式中合法的是() A.z=(y+x)++ B.x+y=z C.y=ch+x D.y=z%x 9.若有变量定义”int a=7;”,则下列语句组对应的输出结果是() switch(a%5) { case 0: cout< case 1: cout<<++a; case 2: cout< case 3: cout<< --a; default:cout<<”其它值”; } A.其它值 B.5 C.7 D.75其它值 10.执行下列程序段后,变量K的值为() for(k=0,m=1;m<4;m++) { for(n=1;n<5;n++) if (m*n%3==0) continue; k++; } A.1 B. 3 C.6 D.12 11.若输入字符串“ABC”,下面程序段的输出为() char c; while (cin>>c,c!=’\n’) cout< A.222 B. CDE C.676869 D.333 12.以下不能对二维数组a初始化的语句是() A.int a[2][]={{1},{2}}; B.int a[2][3]={1,2,3,4,5,6}; C.int a[2][3]={1}; D.int a[2][3]={{1},{2}}; 13.已知有语句“int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}},*p=&a[0][0];”,则表达式 (*p+2)+*(p+2)的值应为()。 A.10 B.5 C.6 D.8 14.要比较两个字符数组a,b中字符串是否相等,下面正确的是()。 A.a==b B. strcmp(a,b)==0 B.strcpy(a,b) D.strcmp(a,b)=0 15.若函数的类型和return语句中的表达式类型不一致,则() A.编译时出错 B.运行时出现不确定结果 C.不会出错,且返回值的类型以return语句中表达式的类型为准 D.不会出错,且返回值的类型以函数类型为准。 16.下面函数说明正确的是() A.void f1 (int a=3,int b,int c); B.void f2 (int a,int b=3,inc c); C.void f3(int a,int b,int c=3); D.void f4(int a,int b,int 3); 17.下面程序的输出结果是() #include int m=10; void f(int m,int &n) { m=m+2;n=n+2; } void main() { int n=5; f(m,n); cout<<”m=”< } A.m=10 n=5 B.m=10 n=7 C.m=12 n=7 D.m=12 n=5 18.以下函数中不属于类的成员函数的是() A.构造函数 B.析构函数 C.友元函数 D.拷贝初始化构造函数 19.作用域运算符的功能是() A.标识作用域的级别的 B.指出作用域的范围的 C.给定作用域的大小的 D.标识某个成员是属于哪个类的 20.假设person是一个类,p1是该类的一个对象,p2是指向p1的指针,getname是该类的一个成员函数,则以下表达式不正确的是() A.perso n.getname() B.p1.getname() C.p1.person::getname() D.p2->getname() 21.C++源程序文件的扩展名为() A..CPP B..C C..DLL D..EXE 22.以下()是C++合法的表达式 A. a=1,a++ B. (x+y)++ C. a+b=c D. 12.25%10 23.以下程序的输出结果是:() #include int fun(char *s){ char *p=s; while (*p!='\0') p++; return (p-s); } void main(){ cout< } A.0 B.1 C.2 D.3 24.下面叙述中正确的是() A.for循环只能用于循环次数已经确定的情况 B.for循环同do-while语句一样,先执行循环体再判断 C.不管哪种形式的循环语句,都可以从循环体内转到循环体外 D.for循环体内不可以出现while语句 25.使用()可以设置数据输出的宽度。 A.setbase(int n) B.s etw(int n) C.setfill(int n) D.setprecision(int n) 26.在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是( ) A.3 B. 2 C.6 D.4 27.下面正确定义数组的语句是() A.int x[][2]={2,1,3,2} B. int x[][]={2,1,3,2} C. int x[2][]={2,1,3,2} D. int x[2,2]={2,1,3,2} 28.已知 char c; const char *pc="asdf";( )是正确的。 A.pc="dfgh" B.*pc=‘b’ C.*pc++=‘y’ D.pc=&c 29.若有变量定义”int a=7;”,则下列语句组对应的输出结果是() switch(a%5) { case 0: cout< case 1: cout<<++a; case 2: cout< case 3: cout<< --a;break; default:cout<<”其它值”; } A.5 B.7 C.75 D.75其它值 30.以下程序段的输出结果是() for(i=4;i<=10;i++) { if(i%3==0) continue; cout< A.45 B. 457810 C.69 D.678910 31.执行下列语句后的输出结果是()。 int hot=10; int &rad=hot; hot+=10; cout< A.0 B.20 C.10 D.30 32.若用数组名作为函数调用的实参,传递给形参的是。 A.数组的首地址 B.数组中第一个元素的值 C.数组全部元素的值 D.数组元素的个数 33.定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) cout< 则下面语句的输出结果是()。 A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9 34.将两个字符串连接起来组成一个字符串时,选用的函数是。 A. strlen() B. strcap() C. str cat() D. strcmp() 35.若有以下程序段: int x[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’,d,g; 则数值为4的表达式是()。 A. x[g-c] B. x[4] C. x[…d?-…c?] D. x[?d?-c] 36.若函数的调用形式如下: f((x1,x2,x3),(y1,y2)) 则函数形参个数是()。 A. 2 B. 3 C.4 D. 5 37.有如下程序 #include #include using namespace std; int main(){ cout< cout <<12.345<< <<34.567; return 0; } 若程序的输出是: **12.345**34.567 则程序中下划线处遗漏的操作符是______。 A.setprecision(3) B.fixed C.setfill('*') D.stew(8) 38.在私有继承中,基类的公有成员将成为其派生类的()。 A.公有 B.保护 C.私有 D.不能访问 39.下列哪个不是成员访问限定符。 A.public B.protected C.private D.static 40.在下面关于函数的描述中错误的是() A.在一个源文件中,如果函数定义在先,调用在后,则不必声明该函数 B.如果一个函数在一个源文件里定义,而调用在另一个源文件中,则必须在调用之前声明该函数 C.函数的声明应使用函数原型 D.在一个源文件中,如果自定义函数调用在先,定义在后,则不必声明该函数 41. 若有int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*q)[4]=a;*q=a[0];则能够正确表 示数组元素a[1][2]的表达式是()。 A.*((*q+1)[2] B. *(*(q+5)) C. (*q+1)+2 D. *(*(q+1)+2) 42. 类是C++中的一种新的数据类型,下列有关类的说法不正确的是()。 A. 类是一种用户自定义的数据类型 B. 只有类中的成员函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所指的数据均为私有类型 D. 在类中,如果不做特别说明,所有的成员函数均为公有类型 43.设int x[]={1,3,5,7,9,11,13},*p=x;则不能正确引用数组元素的表达式是() A.*(p--) B. *(--p) C.*(p++) D.*(++p) 44. 执行下面程序段后,a的值为()。 int a,b; for(b=1,a=1;b<=50;b++) { if(a>=10) break; if (a%2= =1) { a+=5; continue;} a-=3; } A. 2 B. 6 C. 10 D. 8 45. 在下面的引用定义中,正确的是()。 A. int x,&y; y=x; B. int x,&y=x ; C. int &y=x,x; D. float z; int x,y=&z; 46.下面对模板的声明正确的是_( ). A. template B. Template C. Template D. Template 47. 已知一个类A的定义如下,则执行“ A x(3) ;”语句后,x.a和x.b的值分别为() class A { int a,b ; public: A(int aa=1,int bb=0) {a=aa;b=bb}; } A. 1和0 B. 3和0 C. 1和3 D. 3和0 48.C++源程序文件的扩展名为() A. .CPP B. .OBJ C. .C D..EXE 49. 下列变量名中,()是合法的。 A. double B. A+a C. CH INA D. 5S 50.下列符号能用作C++标识符是的()。 A. xyz/2 B. 2xsale C. x-sale D. x_sale 51.( )不是C++的基本数据类型。 A.字符类型B.数组类型C.整数类型D.布尔类型 52.下列运算符中优先级最高的是() A.% B.( )C. ! D./ 53.字符串常量“ME”的字符个数是()。 A.4 B.3C. 2 D.1 54.在C++语言中,080是() A.八进制数B.十进制数C.十六进制数D.非法数55.整型变量i定义后赋初值的结果是()。 int i=2.8*6 ; A.12 B.16C.17 D.18 56.如有int m=31;则表达式(m++*1/2)的值是() A.0 B.15 C.15.5 D.16 57.在C++语言中,自定义的标识符() A.能使用关键字并且不区分大小写 B.不能使用关键字并且不区分大小写 C.能使用关键字并且区分大小写 D.不能使用关键字并且区分大小写 58.下列C++标点符号中表示一条语句结束的是() A.# B.// C.} D. ; 59. 下列C++标点符号中表示一条预处理命令开始的是() A.#B./ C./* D.& 60.定义如下变量:int i=2 ;int j=3 ;则i/j的值是() A.0.7 B.0.66667C.0.66666.... D.0 61.已知int a=2,a+=a-=a*a的值是()。 A.-4 B.-2 C.0D.4 62.语句n1=2,n2=++n1,n1=n2++;执行后变量n1,n2的值分别为()A.3,4 B.3,3 C.2,3 D.2,4 63.下列程序段执行后输出结果为() char a=?a? ; cout<<”a=”< A.a=A B.a=33C.a=65D.a=A-32 64.f or(i=0,x=0; !x&&i<=3;i++)循环的次数为() A.4 B.5 C.1D.无限循环 65.若有如下程序段: { int a=2,b=-1,c=2; if (a if (b<0) c=0; else c+=1; cout<<”c=”< } 执行后输出结果是() A.2 B.1 C.3 D.0 66.有如下程序段: int i=10; switch(i) { case 9: i++; case 10: i++; case 11: i++; default: i++; } 执行后输出结果是() A.11 B.12 C.13 D.14 67.下列描述正确的是() A.break 语句与continue语句完全一样,可以相互代替。 B.用break语句可以提前终止整个循环 C.用continue语句可以提前终止整个循环 D.用break 语句与continue语句都不能提前终止整个循环 68.以下for循环的执行次数是() for (x=0,y=0; (y=123)&&(x<2); x++) A.执行1次B.执行2次C.执行3次D.无限次69.为了避免嵌套的if—else语句的二义性,C语言规定else总是与()A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 70.break语句的作用是() A.立即跳出包含该break 语句的所在层的循环语句和switch语句 B.立即跳出包含该break 语句的最小的各种循环语句 C.立即跳出包含该break 语句的switch语句 D.立即跳出包含该break 语句的各层循环语句和switch语句 71.下面程序段执行完后,x 的值是() x=0 ; for (i=0 ; i<90 ; i++) if (i) x++ ; A.0 B.30 C.89D.90 72.continue语句的作用是() A.结束包含该continue语句的最小的各种循环语句 B.结束包含该continue语句的各种循环语句 C.结束本次循环,直接进行循环条件的判断 D.循环执行完后,结束循环 73.下列程序段循环()次 int x=-10 ; while (++x) { } A.9 B.10 C.11 D.无限 74.有如下程序段: ……. for (int i=1; i<4; i++) { if (i%2==0) continue; cout< 执行以下程序段的输出结果是()。 A.1 B.1,3,4 C.1,3,D.2,4 75.用逻辑表达式表示“大于10而小于20的数”,正确的是() A.10 76.如果switch语句中的选择表达式是字符型变量code,下面哪一项case子句是合法的()A.case “3” : B.case …3?: C.case 3 : D.case=3: 77.设int a=10,b=11, c=12 ; (a+b) A.2 B.0 C.-2 D.1 78.在以下关于C++语言的叙述中,正确的是() A.if语句结构中必须有else语句 B.switch语句结构中必须有default语句 C.C++程序必须有return语句 D.C++中使用流来执行标准的输入输出操作 79.若m是一个值为10的int型变量,n是一个bool型变量,则表达式 !m||n>0的值为()。 A.true B.false C.与n的值相反D.与n的值相同 80.下列do while循环的循环次数是() int i=5 ; do { cout< i-- ; }while (i !=0) ; A.0 B.2 C.5 D.无限次 81.若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10};则下列()是对数组元素的正确使用。 A.a[10] B.a[a[3]-5] C.a[a[9]] D.a[a[4]+4] 82.对语句:int a[3][4]={0};描述正确的是()。 A.只有元素a[0][0] 可得到初值0 B.数组a中每个元素均可得到初值0 C.此说明语句不正确 D.数组a中各元素都可得到初值,但其值不一定为0 83.若有以下定义,则数组元素a[2][2]的值是() int a[][3]={{1,2},{3,2,4},{4,5,6},{1,2,3}}; A.4 B.5 C.2 D.6 84.在下面的一维数组定义中,不正确的是() A.int x[10][10] B.int x[][10]={{1,3},5,7}; C.i nt x[][] D.int x[10][10]={0}; 85.若定义了一个4行3列的数组,则第8个元素是() A.a[1][3] B.a[2][3] C.a[3][1] D.a[2][1] 86.判断两个字符串(分别用a,b表示)是否相等的操作为() A.a==b B.if (a==b) C.if(strcmp(a,b)) D.if (strcpy(a,b)) 87.定义一个一维数组,正确的语句是() A.ina a(10) B.int n=10; int a[n]; C.int n; cin>>n; int a[n] D.co nst int n=10;int a[n]; 88.下面数组定义错误的是() A.#define n 5 char a[n]={“good”} B.const int n=5; char a[n]={“good”} C.int n=5; ch ar a[n]={“good”}; D.const int n=5; char a[n+2]={“good”}; 89.执行下列语句:int c[4]={0,1,2,3}; for(int i=0;i<4;i++) c[i]=c[i]+i;则c[3]的值是( )。 A.0 B.4 C.6 D.8 90.数组int area[4]={1,2,3,4};执行程序 for (int i=1;i<=4;i++) area[i-1]=1; 那么area[4]的值是()。 A.4 B.3 C.1 D.不确定值 91.对字符数组进行初始化,下列语句正确的是() A.char a[]=”ab cd”; B.char a[][]=”abcd”; C.char a[4]=”abcd”; D.char a[2][2]={“ab”,”cd”}; 92.下列关于指针运算的描述错误的是() A.指针变量是用于存储变量地址的变量 B.指针变量是用于存储变量值的变量 C.在一定条件下,指针变量可以为空值 D.可以使用指针变量来访问数组 93.若已经定义了a为int 型变量,则对指针变量p的定义及初始化正确语句是()。 A.int *p=a; B.int p=a; C.int *p=*a; D.int *p=&a 94. 已知一运行正常的程序中有下面的语句,由此可知,变量a和b的类型分别是() int *p2=&x,*p1=a;*p2=*b; A.int和int B.int *和int C.int 和int* D.int *和int * 95.设有如下程序段,程序段运行后输出的结果是()。 { int a=1, b=3, c=5; int *p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); cout< } A.1 B.3 C.5 D.15 96.设有如下程序段: int x=8,*p=&x; cout<<*p++< 输出的值为() A.8 B.9 C.8的地址D.9的地址 97.设有定义语句: int *point,a=4 ;和 point=&a;下面均代表地址的一组选项是()A.a, point B.&a,*point C.point , &a D.a , *point 98.设有定义语句:int a[10],*p=a ;对数组元素正确使用的语句是() A.a[p] B.p[a] C.*(p+2) D.p+2 99. 设有定义语句:int a[10]={ 0,1,2,3,4,5,6,7,8,9} ,*p=a ;则数值不为3的表达式是() A.a[3] B.p[3] C.p+=2,*(p++) D.p+=2,*(++p) 100.设int x[]={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 101.设int x[10]={10,9,8,7,6,5,4,3,2,1} ; *p=x ;则数值为2的表达式是()A.a[9] B.*p[8] C.*(a+8) D.p+8 101.设有如下程序段: char *s="abcde"; s+=2; cout<<*s< A.cde B.c C.c的地址D.无确定的输出结果 102.设有定义语句:int *p[4];则标志符p是() A.一个指向整型变量的指针 B.一个指向整型的指针数组名 C.一个指针,它指向一个含有四个整型元素的一维数组 D.一个非法的定义语句 103.设有如下程序段:输出的值为() int a[3][3]={9,8,7,6,5,4,3,2,1}; int *p[3]; p[1]=a[1]; cout<<*(p[1]+2)< A.4B.5 C.6 D.7 104.C++中函数返回值的类型是由() A.return语句中的表达式类型所决定 B.调用该函数时的主调函数类型所决定 C.调用该函数时系统临时决定 D.在定义该函数时所指定的函数类型所决定 105.以下叙述中正确的是() A.构成C++程序的基本单位是函数 B.可以在一个函数中定义另一个函数 C.主函数必须放在其他函数之前 D.所有被调用的函数一定要在调用之前进行定义 106.以下正确的函数定义形式是() A.int fun(int x; int y) B.int fun(int x, int y) C.int fun(int x, y) D.int fun(int x ; ) 107.若有函数原型int sum(int x, int y) ; 则使用语句cout< A.指针传递B.引用传递C.值传递D.变量传递 108.要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能实现正确交换功能的函数是()。 A.void funa(int &x, int &y) { i nt p; p=x; x=y; y=p;} B.void funb(int x, int y) { int t; t=x; x=y; y=t;} C.void func(int *x, int *y) { *x=*y; *y=*;} D.void funb(int x, int y) { x=x+y ; y=x-y ; x=x-y ;} 109.关于引用下列说法正确的是() A.引用是一种特殊类型的变量,是另一个变量的别名B.引用在函数调用中传递的是变量的值 C.在声明引用时,要给它另开辟内存单元 D.在声明引用时,可以不进行初始化 110.在C++函数头定义中,若省略了返回值的数据类型,其默认的返回值的数据类型为()A.int B.void C.float D.double 111.下面描述中,不正确的是()。 A.在关键字private后面声明的成员,只允许本类中的函数访问 B.在类的外部只能访问类的公有成员 C.面向对象程序设计方法具有四个基本特征:抽象.封装.继承.多态性 D.函数的重载体现了面向对象程序设计的继承性 112.类Time的构造函数名是() A.class B.public C.private D.Time 113.类创建的对象称为() A.属性B.类的实例C.基类D.派生类 114.下面描述中,不正确的是() A.构造函数定义创建对象的方法,提供了初始化对象的一种简便手段 B.析构函数完成对象被删除前的一些清理工作 C.如果程序中未声明构造函数,则系统自动产生出一个缺省形式的构造函数 D.析构函数允许重载,但析构函数不得返回任何值,即使关键字void也不允许有。 115.以下哪项创建了名为dog的Animal对象() A.Animal “dog” ; B.A nimal dog; C.dog “Animal”D.dog Animal 116.类Animal的构造函数名是()。 A.Anim al B.AnimalConstructor C.ConstAnimal D.以上任何一项都可作为构造函数名 117.以下哪项表明displayBreed()函数是Animal类的成员函数() A.Anim al::displayBreed() B.Animal.displayBreed() C.displayBreed()::Animal D.displayBreed()&&Animal 118.为了使类中的某个成员不能被类的对象通过成员选择运算符访问,则不能把该成员的访问权限定义为() A.pub lic B.protected C.private D.static 119.类的构造函数的作用是() A.一般成员函数B.类的初始化C.对象的初始化D.删除对象 120.类具有哪四个基本特征() A.抽象隐藏继承多态B.抽象封装继承多态 C.抽象隐藏继承封装D.重装封装继承多态 121.由类创建的对象称为() A.属性B.类的实例C.基类D.派生类 122.类的析构函数的作用是()。 A.一般成员函数B.类的初始化C.对象的初始化D.删除对象 123.以下不正确的说法是()。 A.在C++中,一个程序中的函数名不一定是唯一的。 B.在C++中定义函数时,在返回值数据类型的前面加上关键字inline,这种函数称为内联函数。 C.在C++中不允许有两个及以上的函数使用同一个函数名 D.在定义函数时,还可以对形式参数进行初始化,即给该形式参数指定默认值。124.以下正确的说法是() A.全局变量如果没有指定初值,则其初值为0 B.静态变量如果没有指定初值,则其初值为0 C.局部变量如果没有指定初值,则其初值为0 D.函数中的静态变量在函数每次调用时都会重新设置初值 125. 若程序中定义了以下函数 double myadd(double a,double b) { return (a+b) ;} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是 A. double myadd(double a,b) ; B. double myadd(double,double); C. double myadd(double b,double a) ; D. double myadd(double x,double y); 126.若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是( ) int t[3][3],*pt[3],k; for(k=0;k<3;k++) pt[k]=&t[k][0]; A. t[2][0] B. t[2][2] C. t[1][2] D. t[2][1] 127.若有以下的说明: struct person {char name[20]; int age; char sex; }a={"li ning",20,'m'},*p=&a; 则对字符串li ning的引用方式不可以是( ) A. (*p).name B. https://www.doczj.com/doc/d213999143.html, C. https://www.doczj.com/doc/d213999143.html, D. p->name 128.执行下列程序段后,变量i的值为()。 #define MA(x,y) ((x)*(y)) int i=5; i=MA(i,i+1)-7; A. 30 B. 23 C. 19 D. 1 129.对以下结构定义: struct { int len; char *str; } *p; *p->str++中的++加在()。 A. 指针str上 B. 指针p上 C. str所指的内容 D.以上均不是130. 执行下面程序段后,a的值为()。 int a,b; for(b=1,a=1;b<=20;b++) { if(a>=10) break; if (a%2==1) { a+=5; continue;} a-=3; } A. 2 B. 6 C. 10 D. 8 131.以下选项中,()是合法的C++语言的长整型常量。 A.0L B.5712700 C.0.05483874 D.2.18159e+9 132.有如下函数 void sFun(int *p) { *(++p)=0; } 则执行以下程序段后,结果是( ) int a[2]={5,5}; sFun(a);