1、 贵州云端科技发展有限公司Guizhou Above Cloud Technology Development Ltd.C/C+程序员笔试题姓 名: _ _姓 别: _ _联系电话: _笔试时间: _ _年_月_日1.一个最简单的C+程序,可以只有一个( )。(a) 库函数(b) 自定义函数(c) main函数(d) 空函数2.用C+语言编制的源程序要变为目标程序必须要经过( )。(a) 解释(b) 汇编(c) 编辑(d) 编译3. C+程序中的简单语句必须以( )结束。(a) 冒号(b) 分号(c) 空格(d)花括号4.有说明 int a=0; double x=5.16; 以下语句中,(
2、)属于编译错误。(a) x=a/x;(b) x=x/a;(c) a=a%x;(d) x=x*a;5. 执行C+程序时出现的“溢出”错误属于( )错误。(a) 编译 (b) 连接 (c) 运行 (d) 逻辑6.下列选项中,全部都是C+关键字的选项为( )。(a) while IF Static(b) break char go(c) sizeof case extern(d) switch float integer7. 按C+标识符的语法规定,合法的标识符是( )。(a) _abc(b) new(c) (d) “age“8C+语句中,两个标识符之间( )不能作为C+的分隔符。(a) 数字(b)
3、 ;(c) :(d) +9下列正确的八进制整型常量表示是( )。(a) 0a0(b) 015(c) 080(d) 0x1010下列错误的十六进制整型常量表示是( )。(a) 0x11(b) 0xaf(c) 0xg(d) 0x1f11 在下列选项中,全部都合法的浮点型数据的选项为( )。(a) -1e3.5 15. 2e-4(b) 12.34 -1e+5 0.1E-12(c) 0.2e-2 -12345. e-5(d) 5.0e(1+4) 0.1 8e+212下列正确的字符常量为( )。(a) “a”(b) name(c) a(d) 10113下列选项中,( )不能交换变量a和b的值。(a) t
4、=b; b=a; a=t;(b) a=a+b; b=a-b; a=ab;(c) t=a; a=b; b=t;(d) a=b; b=a; 14关于下列语句叙述错误的是( )。int i=10, *p=&i;(a) p的值为10(b) p指向整型变量i(c) *p表示变量i的值(d) p的值是变量i的地址15有以下变量说明,下面不正确的赋值语句是( )。int a=5, b=10, c; int *p1 = &a, *p2 = &b; (a) *p2 = b ;(b) p1 = a ;(c) p2 = p1 ;(d) c = *p1 *( *p2 ) ;16有以下变量说明,下面正确的语句是( )。
5、 int a=10, b; int &pa=a, &pb=b; (a) &pb = a;(b) pb = pa;(c) pb = &pa;(d) *pb = *pa;17执行下面语句序列后,a和b的值分别为( )。int a = 5 , b = 3 , t ;int &ra = a ;int &rb = b ;t = ra ; ra = rb ; rb = t ;(a) 3和3(b) 3和5(c) 5和3(d) 5和518. 在下列运算符中,( )优先级最高。(a) =(b) *=(c) +(d) *19.在下列运算符中,( )优先级最低。(a) ! (b) &(c) !=(d) ? :20设
6、 int i=1, j=2; 则表达式 i+j 的值为( )。(a) 1(b) 2(c) 3(d) 421设 int i=1, j=2; 则表达式 +i+j 的值为( )。(a) 1(b) 2(c) 3(d) 422在下列表达式选项中,( )是正确。(a) +(a+)(b) a+b(c) a+b(d) a+b23已知 int i=0, j=1, k=2; 则逻辑表达式 +i|-j&+k 的值为( )。(a) 0(b) 1(c) 2(d) 324. 执行下列语句后,x的值是( d ),y的值是( )。 int x, y ; x = y = 1; + x | + y ;(a) 不确定(b) 0(c
7、) 1(d) 225.设x为整型变量,不能正确表达数学关系 1x5 的C+逻辑表达式是( )。(a) 1 x 5(b) x=2|x=3|x=4(c) 1x & x5(d) !(x=5)26. 已知 int x=5; 执行下列语句后,x的值为( )。x += x -= x * x; (a) 25(b) 40(c) 40(d) 2027. 设 int a=1, b=2, c=3, d=4; 则以下条件表达式的值为( )。a b ? a : c = 0 ) if( x != 0 )if( x = 0 ) y = 0 ; if( x 0 ) y = 1 ;else y = -1; else y = 0
8、;(c) if( x = 0 ) (d) y = -1 ; if( x 0 ) y = -1 ; if( x = 0 ) else y = 0 ; if( x 0 ) y = -1 ; else y = 1 ; else y = 1 ;31假设i=2,执行下列语句后i的值为( )。switch( i ) case 1 : i + ; case 2 : i - ; case 3 : + i ; break ; case 4 : - i ; default : i + ;(a) 1(b) 2(c) 3(d) 432已知int i=0,x=0; 下面while语句执行时循环次数为( )。while(
9、 !x & i 3 ) x+ ; i+ ; (a) 4(b) 3(c) 2(d) 133已知int i=3;下面do_while 语句执行时循环次数为( )。do i-; coutiendl;while( i!= 1 );(a) 1(b) 2(c) 3(d) 无限34下面for语句执行时循环次数为( )。 int i;for ( i=0,j=5;i=j; ) cout i j endl;i+; j-;(a) 0(b) 5(c) 10(d) 无限35以下死循环的程序段是( )。(a) int x; for( int x=0 ; x=0 ) ;(c) int a=5 ; while( a ) a-
10、 ; ;(d) int i=3 ; for( ; i ; i - ) ;36以下正确的函数原型为( )。(a) f1( int x; int y ); (b) void f1( x, y );(c) void f1( int x, y ); (d) void f1( int, int );37有函数原型 void fun2( int ); 下面选项中,不正确的调用是( )。(a) int a = 21; fun2( a );(b) int a = 15; fun2( a*3 ); (c) int b = 100; fun2( &b );(d) fun2( 256 );38有函数原型 void
11、fun3( int * ); 下面选项中,正确的调用是( )。(a) double x = 2.17; fun3( &x );(b) int a = 15 ; fun3( a*3.14 ); (c) int b = 100; fun3( &b );(d) fun3( 256 );39有函数原型 void fun4( int & ); 下面选项中,正确的调用是( )。(a) int a = 2.17; fun4( &a );(b) int a = 15; fun4( a*3.14 );(c) int b = 100; fun4( b );(d) fun4( 256 ) ;40有声明 void f
12、un5( int * & ); int a , *p = &a;下面选项中,正确的调用是( )。(a) fun5( &a );(b) fun5( p );(c) fun5( *a );(d) fun5( *p ) ;41有声明 int fun6( int ),(*pf)(int) = fun6; 下面选项中,正确的调用是( )。(a) int a=15; int n=fun6(&a); (b) int a = 15; cout(&pf)(a);(c) cout(*pf)( 256 ); (d) cout n; int an;47下列数组定义语句中,不合法的是( )。(a) int a3 = 0
13、, 1, 2, 3 ;(b) int a = 0, 1, 2 ;(c) int a3 = 0, 1, 2 ;(d) int a3 = 0 ;48已知 int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , *p = a ;则不能表示数组 a 中元素的式子是( )。(a) *a(b) *p(c) a(d) a p-a 49已知 int a = 0,2,4,6,8,10 , *p = a+1; 其值等于0的表达式是( )。(a) *(p+)(b) *(+p)(c) *(p-)(d) *(-p)50以下不能对二维数组a进行正确初始化的语句是( )。(a) int a23 =
14、 0 ;(b) int a3 = 0,1 , 0 ;(c) int a23 = 0, 1 , 2, 3 , 4, 5 ;(d) int a3 = 0, 1, 2, 3, 4, 5 ;51已知int a3 = 0, 1 , 2, 3, 4 , 5, 6 , 7 ; 则 a21的值是( )。(a) 0 (b) 2 (c) 6 (d) 752已知int a33 = 1, 2, 3, 4, 5, 6, 7, 8, 9 ; 则不能表示数组元素a21的地址是( )。(a) &a21(b) *(a2+1) (c) a2+1 (d) *(a+2)+153已知char *a= fortran, basic, p
15、ascal, java, c+ ; 则 couts2(b) strcmp(s1,s2)=0(c) strcmp(s1,s2)0(d) strcmp(s2,s1)058有说明struct point int x; int y; p;正确的赋值语句是( )。 (a) point.x = 1; point.y = 2; (b) point= 1, 2 ; (c) p.x = 1; p.y = 2; (d) p = 1, 2 ;59已知有职工情况结构变量emp定义为:struct Date int year;int month; int day;strnct Employee char name20
16、;long code ;Date birth;Employee emp ;下列对emp的birth的正确赋值方法是( )。(a) year=1980; month=5; day=1;(b) birth.year=1980; birth.month=5; birth.day=1;(c) emp.year=1980; emp.month=5; emp.day=1;(d) emp.birth.year=1980; emp.birth.month=5; emp.birth.day=1;60假定有以下说明语句,则下面引用形式错误的是( )。struct Student int num ;double s
17、core ;Student stu3=1001,80, 1002,75, 1003,91, *p=stu ;(a) p-num(b) (p+).num(c) (p+)-num(d) (*p).num61若有以下说明语句,则下列错误的引用是( )。struct Worker int no;char name20;Worker w, *p &w ;(a) w.no(b) p-no(c) (*p).no(d) *p.no62s1和s2是两个结构类型变量,若要赋值s1=s2合法,则它们的说明应该是( )。 (a) s1只能接受相同类型的数据成员 (b) 结构中的成员相同 (c) 同一结构类型的变量 (
18、d) 存储字节长度一样的变量63若有以下说明,在类外使用对象objX成员的正确语句是( )。class X int a;void fun1(); public:void fun2();X objX ;(a) objX.a=0;(b) objX.fun1();(c) objX.fun2();(d) X:fun1();64若有以下说明,对n的正确访问语句是( )。class Y / ; public:static int n;int Y:n;Y objY;(a) n=1;(b) Y:n=1;(c) objY:n=1;(d) Y-n65若有以下类Z说明,函数fStatic中访问数据a错误的是( )。
19、class Z static int a;public:static void fStatic();int Z:a = 0 ;Z objZ ;(a) void Z:fStatic() objZ.a = 1; (b) void Z:fStatic() a = 1; (c) void Z:fStatic() this-a = 0 ; (d) void Z:fStatic() Z:a = 0 ; 66若有以下类W说明,函数fConst的正确定义是( )。class W int a;public:void fConst(int) const ;(a) void W:fConst(int k)const
20、 k=a; (b) void W:fConst(int k)const k=a+; (c) void W:fConst(int k)const cina; (d) void W:fConst(int k)const a=k; 67若有以下类T说明,函数fFriend的错误定义是( )。class T int i; friend void fFriend(T&,int) ;(a) void fFriend(T &objT, int k) objT.i = k; (b) void fFriend(T &objT, int k) k = objT.i; (c) void T:fFriend(T &o
21、bjT, int k) k += objT.i; (d) void fFriend(T &objT, int k) objT.i += k; 68在类定义的外部,可以被访问的成员有( )。(a) 所有类成员(b) private或protected的类成员(c) public的类成员(d) public或private的类成员69关于this指针的说法正确的是( )。(a) this指针必须显式说明(b) 定义一个类后,this指针就指向该类(c) 成员函数拥有this指针(d) 静态成员函数拥有this指针70说明一个类的对象时,系统自动调用( );撤消对象时,系统自动调用( )。(a) 成
22、员函数(b) 构造函数(c) 析构函数(d) 友员函数71下面对构造函数的不正确描述是( )。(a) 系统提供默认的构造函数(b) 构造函数可以有参数,所以也可以有返回值(c) 构造函数可以重载(d) 构造函数可以设置默认参数72下面对析构函数的正确描述是( )。(a) 系统不提供默认的析构函数(b) 析构函数必须由用户定义(c) 析构函数没有参数,也没有返回值(d) 析构函数可以设置默认参数73关于类的静态成员的不正确描述是( )。(a) 静态成员不属于某个对象,是类的共享成员(b) 静态数据成员要在类外定义和初始化(c) 静态成员函数不拥有this指针,需要通过类参数访问对象成员(d) 只
23、有静态成员函数可以操作静态数据成员74下面选项中,( )不是类的成员函数。(a) 构造函数(b) 析构函数(c) 友元函数(d) 复制构造函数75下面对友员的错误叙述是( )。(a) 关键字friend用于声明友员(b) 一个类中的成员函数可以是另一个类的友员(c) 友员函数访问对象的成员不受访问特性影响(d) 友员函数通过this指针访问对象成员76若class B中定义了一个class A的类成员A a,关于类成员的正确叙述是( )。(a) 在类B的成员函数中可以访问A类的私有数据成员 (b) 在类B的成员函数中可以访问A类的保护数据成员(c) 类B的构造函数可以调用类A的构造函数做数据成
24、员初始化(d) 类A的构造函数可以调用类B的构造函数做数据成员初始化77在下列运算符中,不能重载的是( )。(a) !(b) sizeof(c) new(d) delete78下列关于运算符重载的描述中,( d )是正确的。(a) 可以改变参与运算的操作数个数(b) 可以改变运算符原来的优先级(c) 可以改变运算符原来的结合性 (d) 不能改变原运算符的语义79下列函数中,不能重载运算符的函数是( )。(a) 成员函数 (b) 构造函数(c) 普通函数 (d) 友员函数80要求用成员函数重载的运算符是( )。(a) = (b) = (c) =(d) +81要求用友员函数重载的运算符是( )。(
25、a) = (b) (c) (d) ()82 下面关于类型转换的描述中,错误的是( )。(a) 任何形式的构造函数都可以实现数据类型转换。(b) 带非默认参数的构造函数可以把基本类型数据转换成类类型对象。(c) 类型转换函数可以把类类型对象转换为其他指定类型对象。(d) 类型转换函数只能定义为一个类的成员函数,不能定义为类的友员函数。83在c+中,类之间的继承关系具有( )。(a) 自反性 (b) 对称性 (c) 传递性 (d) 反对称性84下列关于类的继承描述中,( )是正确的。(a) 派生类公有继承基类时,可以访问基类的所有数据成员,调用所有成员函数。(b) 派生类也是基类,所以它们是等价的
26、。(c) 派生类对象不会建立基类的私有数据成员,所以不能访问基类的私有数据成员。(d) 一个基类可以有多个派生类,一个派生类可以有多个基类。85当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( )。(a) public成员(b) private成员(c) protected成员(d) 友员86当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。(a) public成员(b) private成员(c) protected成员(d) 友员87当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。(a) public成员(b
27、) private成员(c) protected成员(d)友员88不论派生类以何种方式继承基类,都不能直接使用基类的( )。(a) public 成员(b) private成员(c) protected成员(d) 所有成员89下面描述中,错误的是( )。(a) 在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问。(b) 在基类定义的protected成员在私有继承的派生类中可见。(c) 在基类定义的公有静态成员在私有继承的派生类中可见。(d) 访问声明可以在公有继承派生类中把基类的public成员声明为private成员。90在c+中,可以被派生类继承的函数是( )。(a)
28、 成员函数(b)构造函数(c) 析构函数(d)友员函数91在创建派生类对象时,构造函数的执行顺序是( )。(a) 对象成员构造函数基类构造函数派生类本身的构造函数(b) 派生类本身的构造函数基类构造函数对象成员构造函数(c) 基类构造函数派生类本身的构造函数对象成员构造函数(d) 基类构造函数对象成员构造函数派生类本身的构造函数92当不同的类具有相同的间接基类时,( )。(a) 各派生类无法按继承路线产生自己的基类版本(b) 为了建立惟一的间接基类版本,应该声明间接基类为虚基类(c) 为了建立惟一的间接基类版本,应该声明派生类虚继承基类(d) 一旦声明虚继承,基类的性质就改变了,不能再定义新的
29、派生类93在C+中,要实现动态联编,必须使用( )调用虚函数。(a) 类名(b) 派生类指针(c) 对象名(d) 基类指针94下列函数中,不能说明为虚函数的是( )。(a) 私有成员函数(b) 公有成员函数(c) 构造函数(d) 析构函数95在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( )。(a) 相同(b)不同(c) 相容(d) 部分相同96C+中,根据( )识别类层次中不同类定义的虚函数版本。(a) 参数个数(b) 参数类型(c) 函数名(d) this指针类型97虚析构函数的作用是( )。(a) 虚基类必须定义虚析构函数(b) 类对象作用域
30、结束时释放资源(c)delete动态对象时释放资源(d) 无意义98下面函数原型中,( )声明了fun为纯虚函数。(a) void fun()=0; (b) virtual void fun()=0;(c) virtual void fun(); (d) virtual void fun() ;99若一个类中含有纯虚函数,则该类称为( )。(a) 基类(b)纯基类(c) 抽象类(d) 派生类 100假设 Aclass为抽象类,下列正确的说明语句是( )。(a) Aclass fun( int ) ; (b) Aclass * p ;(c) int fun( Aclass ) ; (d) Acl
31、ass Obj ; 贵州云端科技发展有限公司Guizhou Above Cloud Technology Development Ltd.C/C+程序员笔试题答案0110:C D B C CC A A B C1120: B D D A BB B D D C2130: D C B (DC) A C A D C C3140:B D B B B D C C C B4150:C C C A B C A C D C5160:C B C A D D C C D B6170:D C C D C A C C C (B,C)7180:B C D C D C B D B A8190:C A C D A B C B D A91100:D D D C A D C B C B11