




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
说明:为方便大家复习,在此把课程网站的自测题整理成了文档,并且对部分有错误的题目做了改正,虽然有答案,对不清楚的题目一定弄懂相关知识点!有解决不了的问题主动来问我!第1次测试(12章)1.如果 a=1,b=2,c=3,d=4, 则条件表达式 ab?a:cd?c:d 的值为_D_。 A.2 B.3 C.4 D.1 解答:条件运算符的结合方向为“自右向左” ab?a:cd?c:d相当于ab?a:(c=y=z B.(x=y) AND (y=z) C.x=y&y=z D. (x=y)&(y=z)17. 关系运算符对两侧的运算对象的要求是B 。A.只能是0或非0值 B.可以是任意合法的表达式,两者类型不一定相同 C.只能是0或1 D.两个运算对象必须属于同一种数据类型18. 下列哪一个不是面向对象方法的特征 B 。A.继承性 B.开放性 C.封装性 D.多态性19. 在 C +语言中int, long, unsigned 和 char这四种类型数据的转换规律是_B_。 A.char-int-long-unsigned B. char-int- unsigned-long C. int-unsigned-long-char D. char- unsigned-long-int在C中,数据之间的运算必须是同类型的才能进行运算。如果类型不一致,就必须先转换成相同的类型,由低级别 高级别转换。本题中,数据类型级别由低到高分别为:charintunsignedlong。转换时由低级别向高级别转换。比如,有两个数的数据类型分别为:char型跟long型。 就要先char转换为long型(因为long级别比char高),再进行运算。但是不能理解为:先将char转换成int,再转换成unsigned,再转换成long。20. 以下选项中可作为C+语言合法整数的是_A_。 A.0xafb B.0583 C.11010B D.x2b2B项表示八进制,但出现了8,为不合法的数第2次测试(第3章)1.若int i=10; 执行下列程序后,变量i的正确结果是_D_。 switch( i )case 9:i+; case 10:i+; case 11:i+;break; default:i+; A.11 B. 10 C.13 D.12 2. 有语句定义:int x,y;则以下程序段中内循环体的执行次数是_D_。 for (i=5; i; i-) for (j=0;jb) k=0; else k=1;”和_A_等价。 A. k=a=b; B. k=ab; D.k=(ab)?1:0;7. 以下 for 循环是_B_。 for(x=0,y=0;(y!=123)&(x4);x+) y+=x; A.循环次数不定 B.执行4次 C.无限循环 D.执行3次8. 下列错误的语句是_C_。 A.if(1) couta; B. if(a) coutb) couta;9. 设所有的变量均为整型,下列循环执行结束后,变量m的值为_B_。 for(i=a;i=0;j-) m+=(i-100)*j; A.0 B.16 C.1 D.1510. 以下程序段_C_。 x=-1; do x=x*x; while(!x); A.有语法错误 B.是死循环 C.循环执行一次 D.循环执行二次11. 有以下程序段,while 循环执行的次数是_D_。 int k=0;while(k!=1) k+; A.有语法错误,不能执行 B.执行0次 C.无限次 D.执行1次12. 在while (x)语句中的x与下面的表达式等价的是_A_。 A.x!=0 B.x!=1 C.x=1 D.x=013. 为了避免嵌套的 if-else 语义的二义性,C +语言规定 else 总是与_C_。 A.在其之前未配对的if B.缩排位置相同的if C.在其之前未配对的最近的if D.同一行上的if14. 已知:int a = 0 , b = 2;对于下列if语句正确的是_D_。if (a = b) cout =+y;x+); B.for (;x=0); C.while(x=1) x=1; D.for(y=0;x=1;+y);17. C+语言支持结构化程序设计,下列哪一个不属于结构化程序的3种基本结构_A_。 A.嵌套结构 B.顺序结构 C.分支结构 D.循环结构18. 下列循环的执行结果是_D_。 int i,sum=0; for(i=1;i=2) if(a!=2) b=3; else b=2; else b=1; A.3 B.2 C.0 D.120. 假设 i 已定义为整型变量 , 以下程序段中 , while 循环的循环次数是 _D_ 。 i=0; while(in;int an; D.#define size 10 int asize;解答:D选项是两条语句,第一条:#define size 10 ,define是预处理的,编译时SIZE会被替换成10这个内容我们还未学到。6. 若有说明:int *p1,*p2,m=5,n; 以下均是正确赋值语句的选项是_A_。A.p1=&m;p2=p1 B.p1=&m;p2=&p1; C.p1=&m;*p1=*p2 D.p1=&m;*p2=*p1;7. 若有说明:int a =15,12,-9, 28,5, 3 ,*p=a, 则下列哪一种表达错误_C_。A.*(P=P+3) B. *(a+*(a+5) C. *(a=a+3) D. pp48. 以下对二维数组a进行正确初始化的是 A 。A. int array 3=1*6; B. int array23= , 1;C. int array23=1,2,3,4,5,6; D. int array2 =1,2,3,4,5,6;9. 设char str100;int i = 5;则下列哪一个能正确表示数组的某一个元素 C 。A. *(str+)+i) B. stri+95 C. *(str+i-1) D. (str+i)10. 下面判断字符串str1是否大于str2,正确的表达式是 C 。A. if ( str1str2) B. if (strcmp (str1,str2) C. if (strcmp (str1,str2)0) D. if (strcmp (str2,str1)0)11. 假设已定义char a10; char *p; 下面的赋值语句中,正确的是 D 。A. *p = ”abcdef”; B. p = *a; C. a = ”abcdef”; D. p = a;12. 下列正确的一维数组初始化是 A 。A. int a5=1,2 ; B. int *a=1,2,3,4,5;C. int a2=1,2,3,4,5; D. int a5= , ,1,2 ;13. 设变量定义为 “int x, *p=&x;” ,则 &*p 相当于 C 。 A. x B. *p C. &x D. *&x14. 设 int *p,i; 以下正确的语句是 C 。A. i=*p; B. i=p; C. p=&i; D. *p=10;15. 以下程序给数组所有元素输入数据, 填入 B 能完成该功能。 (网站上答案全都错了,下面已改)#include using namespace std; int main ( ) int array5,i=0;while(i _;return 0;A. array+i B. *(array+(i+) ) C. &array+i D. &arrayi+116.设int x=1,2,3,4,5,6,*p=x;则值为3的表达式是 _D_。A. p+=2; *+p; B. p+=2; +*p; C. p+=3; *p; D. p+=2; *p+17. 设int *ptr, x, array5= 5,2,4,3,1 ;ptr=array; 能使x的值为2的语句是 A 。A. x=*(array+1) ; B. array+;x=*array; C. x=*(ptr+2); D. x=array2;18. 下列程序段运行后,i的正确结果为 B 。int i=0 ; char *s=“a041#041b”; while( *s+ ) i+;A. 12 B. 8 C. 5 D. 1119. 执行下面的程序段后,ab的值为 C 。 int *var, ab; ab = 100; var = &ab; *var += 10; ab+=10;A.0 B.110 C.120 D.10020. 以下不能正确进行字符串初始化的语句是 A 。A. char str5=good!; B. char *str=good!;C. char str6= g, o, o, d,!,0; D. char str=good!;21. strlen(”a012bxabbcdn”)的值为 B 。A.11 B.9 C.13 D.1022. 以下二维数组a的正确说明是 D 。A. int a3 B. float a(3)(4) C. float a(3,4) D. double a2423. 若有以下定义和语句,则选项中错误的语句是 C 。int a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;A. w=p; B. *p=b; C. *q=0; D. *p=*w;24. 设int *p, x, a5=1,2,3,4,5; p=a; 能使x的值为2的语句是 D 。A. a+;x=*a; B. x=a2; C. x=*(p+2); D. x=*(a+1);25. 下列对指针p的操作,正确的是 A 。A. int a,*p=&a; B. float a5; int *p=a; C. int *p ; *p=2 ; D. int a5= 1,2 ,3,4,5,*p=&a; *p=5 ;第4次测试(第5章)1. A 是析构函数的特征。A. 一个类中只能定义一个析构函数 B. 析构函数名与类名完全相同C. 析构函数的定义只能在类体内 D. 析构函数可以有一个或多个参数2. 下列各类函数中, B 不是类的成员函数。A. 析构函数 B. 友元函数 C. 构造函数 D. 拷贝构造函数3. 若有声明 “long fun(int *x,int n,long *s);int a4=1,2,3,4; long b,c;” ,则以下函数调用形式中正确的是 C 。 A. c=fun(a,4,b); B. c=fun(a,4,&b); C. c=fun(a,4,&b); D. c=fun(a4,4,b);4. 有以下函数定义: void fun ( int n , double x ) ,若以下选项中的变量都已正确定义并赋值,则对函数 fun 的正确调用语句是 D 。A. void fun(n,x) B. k=fun(10,12.5) C. fun(int x,double y) D. fun(x,n)5. 对于 C+ 语言的函数,下列叙述中正确的是 B 。A. 函数的定义可以嵌套,但函数调用不能嵌套 B. 函数的定义不能嵌套,但函数调用可以嵌套C. 函数的定义和调用都不能嵌套 D. 函数的定义和调用都可以嵌套6. 下面是关于一个类的友元的说法,其中不正确的是 C 。A. 友元的声明必须放在类的内部 B. 友元函数可以访问该类的私有数据成员 C. 若X类是Y类的友元,Y类就是X类的友元 D. 友元函数可以是另一个类的成员函数 7. 下列有关类和对象的说法不正确的是 B 。A. 对象是类的一个实例 B. 一个类只能有一个对象C. 类与对象的关系类似于数据类型与变量的关系 D. 任何一个对象只能属于一个具体的类8. 若有以下程序 : #include using namespace std; void f(int n); int main() void f(int n); f(5); return 0; void f(int n) cout n; 则以下叙述中不正确的是 C 。 A. 函数f无返回值,所以可用void将其类型定义为无类型B. 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fC. 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明D. 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f10. 设A为test类的对象且赋有初值,则语句test BA;表示 D 。 A. 仅说明B和A属于同一个类 B. 为对象A定义一个别名C. 语法错 D. 调用拷贝构造函数,将对象A复制给对象B11. 设有函数 f 的定义如下,若在 main 函数中调用 f 函数,则正确的调用语句是 A 。 void f(int x, int *y) *y=x*x*x; int main ( ) int i, c4=1,2,3,4, s4=0; for(i=0; i4; i+) _ _ /* 调用 f 函数 */ cout si Get_x ( ) ; B. A1.Get_X(); C. X=A1.X; D. A1.init(5,3);17. 已知类A是类B的友元,类B是类C的友元,则 B 。A. 类C一定是类A的友元 B. 类A的成员函数可以访问类B的任何成员C. A一定是类C的友元 D. 以上说法都不对18. 以下不属于类的访问权限的是 B 。 A. public B. static C. protected D. private19. 下面正确的引用定义是 C 。 A. int &a4; B. int &*p; C. int i,&p=i; D. int &q20. 通常类的拷贝构造函数的参数是 B 。A. 某个对象的指针名 B. 某个对象的引用名 C. 某个对象的成员名 D. 某个对象名21. 已知函数原型声明为: float *pp ( char a , double b ) ; 该函数的返回值类型为 D 。 A. 字符型 B. 指向整型的指针 C. 整型 D. 指向浮点型的指针22. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 B 。 (本题答案有问题,修改了B答案,函数参数的传递方式要看形参的定义)A. 由实参传给形参,再由形参传回实参 B. 单向值传递,或者 引用传递,都有可能C. 地址传递 D. 传递方式由用户指定23. 以下关于构造函数的叙述不正确的是 C A. 构造函数名必须和类名一致 B. 构造函数在定义对象时自动执行C. 在一个类中构造函数有且仅有一个 D. 构造函数无任何函数类型24. 对于任意一个类,析构函数的个数为 C 。 A.0 B.2 C.1 D.3 25. 对应 main 函数中的 fun 函数调用语句,则下列 fun 函数定义首部中,错误的是 A 。main() int a50,n; fun(n,&a9); A.void fun(int n,int a) B. void fun(int s,int h41) C. void fun(int p,int *s) D. void fun(int m,int x) 第5次测试(第7章)1、在文件包含预处理语句(#include)的使用形式中,当之后的文件名用 (双括号)括起时,寻找被包含文件的方式是 A 。a. 先在源程序所在目录搜索,再按系统设定的标准方式搜索 b. 仅仅搜索源程序所在目录 c. 仅仅搜索当前目录 d. 直接按系统设定的标准方式搜索目录2、对于以下宏定义:#define M(x) x*x #define N(x,y) M(x)+M(y) 宏调用N(2,2+5)执行后,值为 A 。A. 21 B. 19 C. 53 D. 51 解答: 1 N(2,2+5)- M(2)+M(2+5) - 2*2+2+5*2+5 3、如果一个函数定义后不希望别的文件使用,则在该函数首部前增加一个关键字 D 。a. extern b. const c. auto d. static4、以下 for 语句构成的循环执行了 D 次。#include using namespace std;#define N 2 #define M N+1 #define NUM (M+1)*M/2int main() int i,n=0;for (i=1;i=NUM;i+)n+; cout n ; coutendl; return 0; A. 5 B. 9 C. 6 D. 85、以下不正确的叙述是 A 。A. C +程序在执行过程中对预处理命令进行处理 B. 在程序中凡是以 # 开始的语句行都是预处理命令行 C. 预处理命令行都必须以 # 开始 D. #define ABCD 是正确的宏定义6、关于外部变量的下列说法错误的是_C_ a. 函数外定义的变量,其前若用static修饰,则不能作为外部变量 b. 外部变量只需要在一个文件中定义一次,但可以其他文件中多次声明 c. 只要在主函数外面定义的变量就一定是外部变量 d. 外部变量在其他文件中被使用时需要用extern进行事先声明7、下列哪一个不是模块化程序设计应具有的特点_A_。 A. 鼓励多使用外部变量,以减少模块之间的相互参数传递 B. 开发一个模块不需要知道系统其他模块的内部结构和编程细节 C. 具有可修改性。对系统的一次修改只涉及少数几个模块 D. 模块之间的接口尽可能简明8、在文件包含预处理语句( #include )的使用形式中,当之后的文件名用 (尖括号)括起时,寻找被包含文件的方式是_B_。 A. 仅仅搜索源程序所在目录 B. 直接按系统设定的标准方式搜索目录 C. 仅仅搜索当前目录 D. 先在源程序所在目录搜索,再按系统设定的标准方式搜索 9、关于编译预处理,下列说法正确的是_A_。 A. 用户自定义头文件时前后加条件编译指令可以避免重复包含。 B. #include “头文件名”这种格式的包含,预处理程序最后到当前目录查找文件 C. #include 这种格式的包含,预处理程序直接到标准目录查找文件 D. 含有函数原型的头文件可以出现在任何模块中,函数定义可出现在多个模块中。10、以下不正确的叙述是_A_。 A. 宏名必须用大写字母表示 B. 宏名无类型 C. 宏替换不占用运行时间 D. 宏替换只是字符替换第6次测试(第8章)1、C+语言建立类族是通过_D_A. 抽象类 B. 类的嵌套 C. 虚函数 D. 类的继承2、只有公有派生类才可以认为是基类的子类型,二者之间才存在赋值兼容规则。()赋值兼容规则指的是:在所有需要使用基类对象的地方都可以使用公有派生类对象来代替。3、对基类和派生类的关系描述中,不正确的是_D_。 A. 派生类是基类的特殊化 B. 派生类是基类的具体化 C. 派生类是基类定义的延续 D. 派生类继承了基类的一切属性,且不能重新定义基类的成员4、下面叙述不正确的是_A_。 A. 基类公有成员在派生类中属性不变 B. 对基类成员的访问必须无二义性 C. 赋值兼容规则也适用于多重公有继承中 D. 派生类默认继承方式为private继承A选项的错误在于:私有继承与保护继承的情况下5、在多重继承中,如果多个基类都有非私有属性的同名成员,在派生类引用该同名成员时为了消除二义性,通常可以在该同名成员前增加_C_加以区分。A. 基类名; B. 基类名. C. 基类名: D. 基类名 6、派生类的构造函数初始化列表中必须包含直接基类的构造函数。( )初始化列表中不写基类的构造函数,表示调用基类默认构造函数。7、下面关于基类和派生类的描述中,错误的是_D_。A. 一个基类可以生成多个派生类 B. 派生类中除了继承的基类成员之外还可以有自己新增成员 C. 基类中除构造函数与析构函数之外的所有的成员都是它的派生类中的成员 D. 基类中成员的访问权限继承到派生类中保持不变 D选项的错误在于:私有继承与保护继承的情况下8、 在main ( ) 函数中定义的派生类对象d可以用d.x的形式访问基类的成员x,则x是_D_。A. 公有派生的私有成员 B. 私有派生的公有成员 C. 私有派生的保护成员 D. 公有派生的公有成员 9、如果基类的构造函数不带参数,则定义一个派生类的对象时,不一定要调用基类的构造函数。( ) 不带参数,调用默认构造函数10、派生类中只包含直接基类的成员,不包含间接基类中的成员。( )11、下面有关基类与公有派生类的,正确的是_B_。A. 公有派生类对象不能赋给基类对象 B. 基类对象不能赋给公有派生类对象 C. 公有派生类对象地址不能赋给基类指针变量 D. 基类对象能赋给其公有派生类的引用12、多重继承的多个平行基类中如果有同名成员,则在派生类中访问该成员时可以通过类名限定的方法避免二义性。( ) 13、下列说法正确的是_D_。A. 一个派生类不能再作为其他派生类的基类 B. 派生类对基类默认的继承方式是public继承 C. 基类中所有成员函数都能被派生类继承 D. 派生类中可以定义和基类同名的函数 C选项错误在于:基类的构造函数和析构函数不能被派生类继承14、下列关于派生类的描述中,正确的是_B_。A. 派生类的构造函数初始化列表中必须包含对基类构造函数的调用 B. 派生类可以继承多个基类 C. 派生类对基类默认的继承方式为public D. 派生类不可以作为其他类的基类 15、派生类内新增加的成员函数对其父类成员中_B_是不可直接访问的。A. 私有继承的公有成员 B. 私有继承的私有成员 C. 公有继承的公有成员 D. 保护继承的保护成员不管是何种继承方式,基类的私有成员,在派生类中不能直接访问。16、下列在多重继承中关于同名成员的二义性问题描述中,错误的是_C_A. 一个派生类有多个基类,而这些基类又有一个共同的基类,派生类访问此公共基类成员时,可能出现二义性 B. 一个派生类的多个基类中出现了同名成员,派生类对该同名成员的访问可能出现二义性 C. 若某一个基类和派生类中存在同名成员时,派生类对该同名成员的访问可能出现二义性 D.解决二义性的方法是采用类名限定,即在同名成员前加上“基类名:”17、在公有派生方式下,基类非私有成员在派生类中的访问权限_D_A. 不可直接访问 B. 均为private属性 C. 均为public属性 D. 保持不变18、根据赋值兼容规则,公有派生类对象可以赋值给基类的引用,这时,通过引用可以调用在派生类中新增加的公有成员函数。( )19、设类B是基类A的派生类,并有语句:A aa, * pa=&aa; B bb, * pb=&bb; 则正确的语句是_B_。A. pb=pa; B. aa=bb; C. bb=aa; D. *pb=*pa;20、下列定义派生类正确的形式是_A_。A. class Y :X ; B. class Y public :X ; C. class public:Y X D. class public Y:X ;第7次测试(第9章)1、下列关于全局变量的说法,错误的是_B_。 A. 在函数之外定义的变量是全局变量 B. 全局变量的作用域一定是其所在的整个文件 C. 全局变量存在于静态存储区,生命期为整个程序 D. 在同名局部变量所在的作用域内,通过:同名全局变量名的形式使全局变量在此同名局部量作用域内可见 2、下面关于复合语句的描述,不正确的是_D_。A. 复合语句的变量和函数的局部变量可以同名 B. 复合语句可以定义自己的变量 C. 复合语句是由大括号包含起来的一组语句 D. 复合语句之内定义的变量在复合语句之外的本函数内仍然可以使用3、下列关于静态数据成员的说法中,错误的是_A_。A. 静态数据成员一定可以用类名:静态数据成员名的形式在主函数中被访问 B. 静态数据成员的初始化只能放在类外进行 C. 静态数据成员为一个类的所有对象所共享 D. 静态数据成员可以被静态成员函数所访问A的错误在于,公有的静态成员才可以这样被访问4、下面关于实参与形参的描述,不正确的是_D_。a. 与指针形式参数对应的实参必须是一个类型完全一致的地址值 b. 与值形式参数对应的实参可以是常量、变量或表达式 c. 形式参数一定是函数的自动局部变量 d. 指针形式参数不需要在函数被调用时分配空间 5、下面是关于静态成员的说法,其中不正确的是_D_。A. 静态成员有类作用域,但与普通非静态成员有所不同 B. 静态函数没有this指针,同一个类的不同对象拥有相同的静态变量 C. 静态数据成员的初始化必须在类外进行 D. 静态成员函数可以直接访问非静态数据成员 6、下面关于静态局部变量的描述,不正确的是_A_。 A. 静态局部变量全局可见 B. 静态局部变量局部可见 C. 静态局部变量只会被初始化一次 D. 静态局部变量存储在静态存储区 7、关于成员函数特征的下列描述中,_C_是错误的。 A. 成员函数可以设置缺省参数值 B. 成员函数可以重载 C. 成员函数一定是内联函数 D. 成员函数可以是静态的本题不严谨:析构函数也是成员函数,不可以重载,也没有参数8、设有下列程序段: static char b=2; void Y ( ) static float d=4;. int a=1; void X ( ) int c=3; . 关于程序段中各变量的属性,以下叙述中错误的是 _D_ 。 A. a是全局变量,函数X可以访问,函数Y不能访问 B. c是动态变量,函数X可访问,函数Y不可访问 C. b是全局变量,函数X和函数Y都可以访问 D. d是静态变量,函数X和函数Y都可以访问9、下列关于静态成员函数的说法中,错误的是_B_。 A. 静态成员函数一般专门用来访问静态数据成员 B. 非静态成员函数不能访问静态数据成员 C. 静态成员函数也只有一份拷贝 D. 静态成员函数不能访问非静态数据成员本题网站答案有误,应该选B但是本题不严谨:B的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程电梯销售合同范本
- 大型合同范本
- 房屋转卖装修合同范本
- 多人承包鱼塘合同范本
- 校外配餐机构合同范本
- 铲车司机雇佣 合同范本
- 购车定金电子合同范本
- 街区商业招商合同范本
- 特殊空调租赁合同范本
- 养老机构常用合同范本
- 厨房消防安全培训
- 小陈 税务风险应对常见指标与答复思路
- 2025年《中华人民共和国档案法》知识培训试题及答案
- 2026年高考政治一轮复习:必修2《经济与社会》知识点背诵提纲
- 2025至2030年中国建筑膜行业市场调查研究及发展趋势预测报告
- 2025年急诊急救试题(附答案)
- 变电站新员工培训课件
- 会所会议室管理制度
- 2025年北京市中考语文试卷(含答案与解析)
- 中科海光:2025年深算智能:海光DCU行业实战手册
- 信息服务费 合同
评论
0/150
提交评论