一.选择题(每题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 int a; float b; cout<<”input 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) 第 1 页 共 31 页 ) { case 0: cout<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.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 void f(int m,int &n) 第 2 页 共 31 页 { m=m+2;n=n+2; } void main() { int n=5; f(m,n); cout<<”m=”< A.构造函数 B.析构函数 C.友元函数 D.拷贝初始化构造函数 19.作用域运算符的功能是( ) A.标识作用域的级别的 B.指出作用域的范围的 C.给定作用域的大小的 D.标识某个成员是属于哪个类的 20.假设person是一个类,p1是该类的一个对象,p2是指向p1的指针,getname是该类的一个成员函数,则以下表达式不正确的是( ) A.person.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 while (*p!='\\0') p++; return (p-s); } void main(){ cout< A.for循环只能用于循环次数已经确定的情况 B.for循环同do-while语句一样,先执行循环体再判断 C.不管哪种形式的循环语句,都可以从循环体内转到循环体外 D.for循环体内不可以出现while语句 25.使用( )可以设置数据输出的宽度。 A.setbase(int n) B.setw(int n) C.setfill(int n) D.setprecision(int n) 第 3 页 共 31 页 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 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.6710 31.执行下列语句后的输出结果是( )。 int hot=10; int &rad=hot; hot+=10; cout< 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< 34.将两个字符串连接起来组成一个字符串时,选用的函数是 。 A. strlen() B. strcap() C. strcat() D. strcmp() 35.若有以下程序段: int x[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’,d,g; 第 4 页 共 31 页 则数值为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 cout< 则程序中下划线处遗漏的操作符是______。 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;则不能正确引用数组元素的表达式是( ) 第 5 页 共 31 页 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 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. CHINA 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./ 第 6 页 共 31 页 ) 53.字符串常量“ME”的字符个数是( )。 A.4 B.3 C. 2 D. 1 .在C++语言中,080是( ) A.八进制数 B.十进制数 C.十六进制数 D.非法数 55.整型变量i定义后赋初值的结果是( )。 int i=2.8*6 ; A.12 B.16 C.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.66667 C. 0.66666.... D. 0 61.已知int a=2,a+=a-=a*a的值是( )。 A.-4 B.-2 C.0 D. 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.4 B.5 C.1 D. 无限循环 65.若有如下程序段: { int a=2,b=-1,c=2; if (aif (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++; 第 7 页 共 31 页 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. D. 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<执行以下程序段的输出结果是( )。 第 8 页 共 31 页 无限次 ) 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.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< 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.int 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.const int n=10;int a[n]; 88.下面数组定义错误的是( ) char a[n]={“good”} A.#define n 5 第 9 页 共 31 页 B. const int n=5; char a[n]={“good”} C. int n=5; D.const int n=5; char a[n]={“good”}; char a[n+2]={“good”}; .执行下列语句: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[]=”abcd”; 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< int x=8,*p=&x; cout<<*p++< 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 第 10 页 共 31 页 ) 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< 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.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< 108.要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能实现正确交换功能的函数是( )。 A.void funa(int &x, int &y) B.void funb(int x, int y) { int p; { int t; p=x; x=y; y=p;} t=x; x=y; y=t;} C. void func(int *x, int *y) D. void funb(int x, int y) { *x=*y; *y=*;} { x=x+y ; y=x-y ; x=x-y ;} 109.关于引用下列说法正确的是( ) A.引用是一种特殊类型的变量,是另一个变量的别名 B.引用在函数调用中传递的是变量的值 第 11 页 共 31 页 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.Animal dog; C.dog “Animal” D.dog Animal 116.类Animal的构造函数名是( )。 A.Animal B.AnimalConstructor C.ConstAnimal D.以上任何一项都可作为构造函数名 117.以下哪项表明displayBreed()函数是Animal类的成员函数( ) A.Animal::displayBreed() B.Animal.displayBreed() C.displayBreed()::Animal D.displayBreed()&&Animal 118.为了使类中的某个成员不能被类的对象通过成员选择运算符访问,则不能把该成员的访问权限定义为( ) A.public 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++中不允许有两个及以上的函数使用同一个函数名 第 12 页 共 31 页 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\ 则对字符串li ning的引用方式不可以是( ) A. (*p).name B. p.name C. a.name 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 129.对以下结构定义: struct { int len; char *str; } *p; *p->str++中的++加在( )。 第 13 页 共 31 页 D. 1 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.083874 D.2.18159e+9 132.有如下函数 void sFun(int *p) { *(++p)=0; } 则执行以下程序段后,结果是( ) int a[2]={5,5}; sFun(a); cout<A. 5 ,5 B. 0, 5 C. 5, 0 D. 0 ,0 133.有以下函数 char *fun(char *p) { return p; } 该函数的返回值是( ) A. 无确切的值 C. 形参p自身的地址值 B. 形参p中存放的地址值 D. 编译有错 134.下面程序的执行结果是( ) #include 第 14 页 共 31 页 void main() { char a[]={‘H’,’e’,’l’,’l’,’o’,’\\0’}; int i,j; i=sizeof(a)/sizeof(char); j=strlen(a); cout<A. 6 6 B. 5 6 C. 1 5 D. 6 5 135.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是 A. if((a>b) &&(b>c) ) k=1; B. if((a>b) ||(b>c) ) k=1 else k=0; C. if(a<=b) k=0; D. if(a>B) k=1; else if(b<=c) k=1; else if(b>C) k=1; else k=0; 136.下面各语句中,能正确进行赋字符串操作的语句是( ) A. char s[5]={\"ABCDE\B.char s[5]={'A','B','C','D','E'}; C. char *s; s=\"ABCDE\"; D.char *s; cout< x+=2;y+=x; cout<<\"x=\"< A. x=12 ,y=12 B.x=12,y=12 C.x=12;y=24 D.x=12,y=12 X=14 ,y=12 x=14,y=26 x=16,y=28 x=16,y=28 138. 下面程序段中正确的语句是( ) class AA{ int i; public: void ~AA(int); 第 15 页 共 31 页 void AA(); void AA(int x){i=x;}; }; A. int i; B.void ~AA(int); C.void AA(int); D.void AA(int x) {i=x;}; 说明:构造函数和析构函数不允许有参数和返回值,void也不行。 139.设int a=4,b=8;则++a*b的结果是( ) A.33 B.40 C.32 D.41 140. 有以下定义,则此数组的元素中不正确的一个赋值结果是( )。 static int a[10]={1,2,3,4,5}; A. a[10]=2 B. a[0]=1 C. a[3]=4 D.a[7]=0 141. 执行语句for(i=1;i++<4; ); 后变量i的值为( )。 A. 3 B. 4 C. 5 D. 1 142. 若变量a、i 已正确定义,且i已正确赋值,下列语句合法的是( )。 A. a==1; B. ++i; C. a=a+==5; D. a==int(i); 143. 类的构造函数是在( )调用的。 A. 类创建时 B. 创建对象时 C. 删除对象时 D. 不自动调用时 144. 设C++语言中,一个int型数据在内存中占2个字节,则unsigned int 数据的取值范围是( )。 A. 0~255 B. 0~32767 C. 0~65535 D. 0~127 145. 对中断语句break的说法不正确的是( )。 A.用户可以指定中断位置 B. 用户可以指定转移的位置 C.break语句可以跳出本循环 D. continue语句可以结束本次循环 146. 下面程序中说明的私有成员是( )。 class Location { int x; public: void init(int initX,int initY); private: int y; public: int SetX(); 第 16 页 共 31 页 int SetY() ; } A. x B. y C. SetX(),SetY() D. B和A都是 147. 下列各项中不符合函数重载必须满足的条件是( )。 A.必须有不同的参数个数 B. 对应的参数类型必须不相同 C. A和B必须同时满足 D. A和B只要满足一个即可 148. 有关类和对象的说法不正确的是( )。 A.对象是类的一个实例 B. 一个类只能有一个对象 C. 任何一个对象只能属于一个具体的类 D. 类与对象的关系与数据类型和变量的关系相似 149. 类的说明如下,请指出错误的地方( )。 class Myclass { int a=111; public: Myclass(int x,int y); Myclass(int val) ; ~Myclass() ; } ; A. int a=111; B. Myclass(int x,int y); C. Myclass(int val) ; D. ~Myclass() ; 150. ( )不是构造函数的特征。 A.构造函数的函数名与类名相同 B. 构造函数可以重载 C. 构造函数可以设置缺省参数 D. 构造函数必须指定类型说明 二.写出下列表达式的值(每题2分,共10分) 1.3.5*3+2*7-‘a’ -92.5 2. 45/2+(int)3.14159/2 23 3. int a=3;a=b=(c=a+=6) 9 第 17 页 共 31 页 4. (int)(a+6.5)%2+(a=b=5) 设a的初值为3 6 5. int a=12; a+=a-=a*=a 0 6.int e=1,f=4,g=2; double m=10.5,n=4.0,k; k=(e+f)/g+sqrt(n)*1.2/g+m 7.2 7.double x=2.5,y=4.7; int a=7; x+a%3*(int)(x+y)%2/4 2.5 8.int a,b; a=2,b=5,a++,b++,a+b; 9 9.int x=13,y=15; x++,y+=2,x/y; 0 10.float x; x=(float)(7/3); 2.0 三.填空题 1. 关系表达式x+y > 5的相反表达式为 x+y<=5 。 bb24ac2. 数学算式的C++表达式为 (b+sqrt(b*b-4*a*c))/(2*a) 。 2a3. 已知语句cout< 4. 在C++中存储字符串”a+b=c”至少需要 6 个字节。 5. 设有int a[4],pa是指向该数组的指针,则pa应初始化为____pa=a______。 6. 假定AA是一个类,“int abc();”是该类中一个成员函数的原型,则在类外定义时的函数头为 int AA:: abc() 。 7. 假定x是一个逻辑量,则x && true的值为 x 。 第 18 页 共 31 页 8. 定义一个函数模板要用到的第一个修饰符是 template 。 9.下面函数是求两个整型参数a和b的最小公倍数。 int f2(int a, int b) { int i=2, p=1; do { while(a%i==0 && b%i==0 ) { p*=i; a/=i; b/=i; } i++; } while(a>=i && b>=i); return p*a*b; }。 10.若x = 5, y = 10, 则计算y*=++x表达式后,x + y的值是 60 。 11.生存期与存储区域关系密切,一般存储区域分为代码区(code area).数据区(data area).栈区(stack area)和堆区(heap area)。代码区用来存放【1】 。与其它存储区相对应的生存期分别为 【2】. 【3】. 【4】。(静态生存期.局部生存期.动态生存期) 12.面向对象程序设计的特点是 【5】 .【6】 .【7】 和多态性 。抽象性.封装性.继承性 13.(3*3+2.5*4)/2, 则表达式的值是 【8】 。9.5 14.若a是一个字符数组,则cin>>a表示从键盘上读一个 【9】 到数组a 中。字符串 15.面向对象的模型中,最基本的概念是对象和 【10】 。类 16.可以赋给指针的唯一整数是 【11】 。 NULL 17. C++语言中的函数分为三种。一是主函数main(),二是系统提供的 【12】,又称库函数,三是用户 【13】 。自定义函数 18. 设a=3,b=4,c=5,(a*=!a)&&(b+=c)||(c++);则a= 0【14】,b= 4【15】,c= 6【16】。 19. 若a是int型变量,则计算表达式a=25/3%3后a的值是【17】。2 20.设x,y,z均为int型变量,且x=3,y=-4,z=5,请在下面对应的【】 中写出表达式的值。 ①(x&&y)= =(x||z) 【18】 1 ② !(x>y)+(y!=z)||(x+y)&&(y-z) 【19】 1 ③ x++ -y+(++z) 【20】 13 21.在C++中函数参数传递方式有值传递和 地址传递 .引用传递。 22.C++语言的标识符只能由___字母____.__数字__和_下划线__三种字符组成,且打头字符不能是__数字____。 23.C++程序的目标文件的扩展名是.OBJ。 24.在C++程序中,使用输入输出流需要包含的头文件是 iostream.h。 第 19 页 共 31 页 25.当执行cin时,从键盘上输入每个数据后必须输入一个空格,然后才可以接着输入下一个数据。 26.转义字符序列中的首字符是 \\ 字符。 27.空字符串在内存中的存储空间是 1 个字节。 28.以/*开始,*/结束,在/*和*/之间的部分即为 注释。 29.C++语言的基本数据类型有 int .float.double.char.bool五种。 30.功能:将若干个数按从小到大顺序排序。 #include cout<<\"输入需排序的10个数:\"< for( 1 ) if( 2 ) { temp=a[i]; 3 ;} cout<<\"排序后的10个数为:\"< (3) a[i]=a[j];a[j]=temp 31.声明类的成员为私有类型的关键字是 private 。 32.对象通过成员运算符只能调用类的 公有(public)成员。 33.通过类定义对象时,对象会自动调用类的 构造 函数 。 34.对象消亡时,类的 析构 函数会被自动调用。 35.在类A的基础上,通过增加成员可以产生新的类B。由类A产生类B的过程称为 派生 ,此时通过称类A为了 基 类 ,类B为 派生 类。 36.继承方式关键字为private时,基类的公有成员在派生类中是 私有 成员。 37.下列程序是用递归的方法计算fun(5)*10的值。其中fun(k)=fun(k-1)*k,当k=0时,fun(0)=3。请填空完成程序。 #include void main() { 【1】 int fun(int); cout< 第 20 页 共 31 页 if(k==0) 【3】 3 else return fun(k-1)*k; } 38. 设a的初值为3,则表达式 (int)(a+6.5)%2+(a=b=5) 的值是 6【7】 。 四.阅读程序,写出程序运行结果。(每题5分,共25分) 1.#include void main() { int m,n=4,k; long int t,s=0; for(m=1;m<=n;m++) { for(t=1,k=1;k<=m;k++) t*=m; s+=t; } cout<<”s=”< 2.以下程序的执行结果是: #include void fun(int *s,int n1,int n2) { int i,j,t; i=n1; j=n2; while (i void main() { int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a; fun(p,0,3); fun(p,4,9); fun(p,0,9); for(i=0;i<10;i++) cout<<*(a+i); 第 21 页 共 31 页 cout< #include cout<<(x==y)<<” “; cout<<(&x==&y)< double *p=a; while (*p!=0) p++; return (p-a); } void main() { double a[]={1.0,2.0,8.0,3.0,0.0,4.0,7.0}; cout< private: int a,b; public: A() { a=b=0; cout<<”con1 called.\\n”; } A(int m) 第 22 页 共 31 页 { a=b=m; cout<<”con2 called.\\n”; } A(int m,int n) { a=m;b=n; cout<<”con3 called.\\n”; } void print() { cout<<”a=”<void main() { A a1,a2(10),a3(10,20); a1.print(); a2.print(); a3.print(); } 6. 写出下列程序的结果 #define M 1.5 #define A(a) M*a void main() { int x=5,y=6; cout<} 7. 写出以下程序的运行结果。 #include char a[]=”abcdabcabfgacd”; int i1=0,i2=0,i=0; while(a[i]) { if (a[i]==’a’) i1++; if (a[i]==’b’) i2++; 第 23 页 共 31 页 i++; } cout << i1 << ‘ ’<< i2 << endl; } 8.写出以下程序的功能。 #include } return v; } 9. 以下程序的输出结果是( #include static int i=0; a+=i; i++; return a; } void main(){ int i,s=0; for(i=0;i<4;i++) s+=f(); cout< #include 14 第 24 页共 31 页 ) int func(char s[]){ int length=0; while (*(s+length)) length++; return length; } void main(){ char a[10],*ptr=a; cin>>ptr; cout< 11. 以下程序的输出结果是( ) #include Teample(int x,int y) { a=x;b=y;} void disp() { cout<<\"a=\"<void main() { Teample s(1,2); s.disp(); } a=1,b=2 12. 有以下程序执行后结果是( 2041 2044 ) struct STU { char name[10]; int num; }; void f1(struct STU c) { struct STU b={\"LiSiGuo\ c=b; } void f2(struct STU *c) { struct STU b={\"SunDan\ *c=b; } main( ) { struct STU a={\"YangSan\ 第 25 页 共 31 页 f1(a) ;f2(&b) ; cout< { int a[4],i,j,k; for(i=0;i<4;i++) a[i]=1; k=3; for(i=0;i 14.#include { int s[3][3],i,j,k; for(i=0;i<3;i++) for(j=0;j<3;j++) s[i][j]=i-j; for(i=0;i<2;i++) for(j=i+1;j<3;j++) { k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} for(i=0;i<3;i++) { for(j=0;j<3;j++) cout< 15.#include 第 26 页 共 31 页 void main() { int a[2][3],j,k; for(k=0;k<3;k++) for(j=0;j<2;j++) a[j][k]=(j+1)*(k+1); for(j=0;j<2;j++) { for(k=0;k<3;k++) cout<<\"**\"<**1**2**3 **4**5**6 16.比较难 #include using namespace std; void main() {int a[10],i,j,pos=1; for(i=0;i<10;i++) cin>>a[i]; for(i=1;i<10;i++) { for(j=0; jif ( i==j ) { a[pos]=a[i];pos++;} /*pos记录在数组中重新填数的位置*/ } for(i=0;i k=a; *a=b; b=*k;} void main() { int a=3, *x=&a; int y=5; fun(x, y); cout<第 27 页 共 31 页 5 5int x,y; x=10;y=0; do {ple 。”写出该程序求解的表达式(3分)及结果(2分)。10. 有下列程序:
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务