C语言程序设计复习题.docx
- 文档编号:7324287
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:24
- 大小:37.54KB
C语言程序设计复习题.docx
《C语言程序设计复习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习题.docx(24页珍藏版)》请在冰点文库上搜索。
C语言程序设计复习题
C++语言程序设计复习题
一、单项选择题
1.下列表达式中不正确的是。
A、pxB、p=q=9
C、k/(p+3)D、23i+5
2.若w是一个bool型变量,则w&&!
w的值是。
A、trueB、false
C、与w的值相同D、与!
w的值相同
3.要定义一个int型数组A,并使其各元素具有初值9,0,3,0,0,不正确的定义语句是。
A、intA[]={9,0,3};B、intA[]={9,0,3,0,0};
B、intA[5]={9,0,3};D、intA[5]={9,0,3,0};
4.如果一个函数无返回值,则只能作为被调用。
A、表达式B、语句
C、有参函数D、无参函数
5.有关析构函数的说法中不正确的是。
A、析构函数有且只能有一个
B、析构函数无任何函数类型
C、析构函数和构造函数一样可以有参数
D、析构函数的作用是在对象被撤销时收回先前分配的内存空间
6.的功能是对对象进行初始化
A、析构函数B、数据成员
C、构造函数D、静态成员函数
7.下列for语句的循环次数为。
for(inti=0,x=0;!
x&&i<=5;i++)
A、5B、6
C、1D、无限
8.X>Y&&X<=Y的值为。
A、trueB、false
C、与X>Y的值相同D、与X<=Y的值相同
9.若对函数类型未加显式说明,则该函数的隐含类型是。
A、voidB、double
C、intD、char
10.有关类和对象的说法,下列不正确的是。
A、对象是类的一个实例B、任何一个对象只能属于一个具体的类
C、一个类只能有一个对象D、类与对象的关系和数据类型和变量的关系相似
11..不是构造函数的特征。
A、构造函数的函数名与类名相同B、构造函数可以重载
C、构造函数可以设置默认参数D、构造函数必须指定类型说明
12.是析构函数的特征。
A、一个类中只能定义一个析构函数B、析构函数与类名不同
C、析构函数的定义只能在类体内D、析构函数可以有一个或多个参数
13.类型修饰符unsigned修饰类型是错误的。
A、charB、intC、longintD、float
14.下列十六进制的整型常数表示中,是错误的
A、0xafB、0X1bC、2fxD、0XAE
15.下列运算符中,的结合性从左到右。
A、三目B、赋值C、比较D、单目
16.预处理命令在程序中都是以开头的。
A、*B、#C、:
D、/
17.将两个字符串连接成一个字符串时,选用函数。
A、strlenB、strcpyC、strcatD、strcmp
18.下述静态数据成员的特征中,是错误的。
A、说明静态数据成员时,前面要加修饰府static
B、静态数据成员要在类体外进行初始化
C、引用静态数据成员时,要在静态数据成员名加类名和作用域运算符
D、静态数据成员不是所有对象所公有的
19.类C是以多重继承的方式从类A和类B继承而来的,类A和类B无公共的基类,那么:
A.类C的继承方式只能采用public继承。
B.可改用单继承的方式实现类C的同样功能。
C.类A和类B至少有一个是抽象类。
D.类A和类B至少有一个是虚基类。
20.下列哪种用法不能体现类A和类B之间的组合关系:
A.类A中声明数据成员Bb;
B.类A中声明数据成员B*b;
C.类A中声明数据成员constB&b;
D.类A中声明成员函数Bfunc(B&obj);
21.执行boolOK=2!
=3;cout< A、trueB、false C、1D、0 22.若w是一个bool型变量,则w||5的值是。 A、trueB、false C、与w的值相同D、与! w的值相同 23.已知一正常运行的程序中有这样两个语句: int*p2=&x,*p1=d1; *p2=*d2; 由此可知,变量d1和d2的数据类型分别是。 A、int和intB、int*和int C、int*和int*D、int和int* 24.要使指针变量P指向一维数组A的第五个元素(下标为4的那个元素),正确的赋值表达式是。 A、P=&A或P=&A[4]B、P=A+4或A=&A[4] C、P=A+4或P=A[4]D、P=&A+4或P=A[4] 25.是给对象取一个别名。 A、指针B、引用 C、枚举D、结构 26.sizeof(double)是一个表达式。 A、整型B、双精度 C、不合法D、函数调用 27.要定义一个int型数组A,并使其各元素具有初值9,0,3,0,0,不正确的定义语句是。 A、intA[]={9,0,3};B、intA[]={9,0,3,0,0}; B、intA[5]={9,0,3};D、intA[5]={9,0,3,0}; 28.下列while循环的次数是。 While(inti=0)i――; A、0B、1 C、5D、无限 29.有关构造函数的说法不正确的是。 A、构造函数的名字和类的名字一样B、构造函数在声明对象时自动执行 C、构造函数无任何数据类型D、构造函数有且只有一个 30.以下类的说明中,指出有错误的地方。 classA { inta=1;//A doubleb;//B public: A();//C ~A();//D } 31.下列各函数中,不是类的成员函数。 A、构造函数B、析构函数 C、友员函数D、拷贝初始化构造函数 32.下列定义中,是定义指向数组的指针p。 A、int*p[5]B、int(*p)[5] C、(int*)p[5]D、int*p[] 33.下列double型常量表示中,是错误的。 A、E15B、.35C、3E5D、3E-5 34.对字符数组初始化时,是正确的。 A、chars1[]=“abcd“;B、chars2[3]=“xyz”; C、chars3[][3]={“abc”};D、chars4[2][3]={“xyz”,”mnp”}; 35.下述关于break语句的描述中,是不正确的。 A、break语句可以用在循环体内,它将退出该重循环 B、开关语句中每个语句序列中必须有break语句 C、开关语句中default子句只能放在最后 D、开关语句中case子句后面的表达式可以是整型表达式 36.下面关于条件语句的描述中,是错误的。 A、if语句中只有一个else子句B、if语句中可以有多个elseif子句 C、if语句中if体不能是开关语句D、if语句的if体可以是循环语句 37.派生类的对象对它的基类中是可以访问的。 A、公有继承的公有成员B、公有继承的私有成员 C、公有继承的保护成员D、私有继承的公有成员 38.关于虚函数的描述中,是正确的。 A、虚函数是一个static类型的成员函数 B、虚函数是一个非成员函数 C、基类中说明了虚函数后,派生类中将其对应的函数不必说明为虚函数 D、派生类的虚函数和基类的虚函数具有不同的参数个数和类型 39.类A有一个实例化的常量对象a,那么下面的说法中不正确的是: A.类A中的非静态数据成员一定都是常量成员。 B.通过a可以直接调用类A的常量成员函数。 C.a不能直接作为左值表达式使用。 D.a可以是静态常量对象。 40.在不考虑强制类型转换的情况下,关于类中常量成员函数的下列说法不正确的是 : A.常量成员函数中不能修改本类中的非静态数据成员。 B.常量成员函数中可以调用本类中的任何静态成员函数。 C.常量成员函数的返回值只能是void或常量。 D.若常量成员函数中调用虚函数f,那么函数f在本类中也一定是一个常量成员函数。 41.n>=0的等价条件是。 A、n<0B、! (n>=0) C、! (n<0)D、! (n>0) 42.与if(x>0)if(y<0)x+=y;elsex-=y;等效的语句有。 A、if(x>0||y<0)x+=y;elsex-=y;B、if(x<=0||y>=0)x+=y;elsex-=y; C、if(x>0)x=(y>=0? x-y: x+y);D、if(y>=0)if(x<=0)x-=y;elsex+=y; 43.要使语句p=newlong*;能够正确执行,p应定义为。 A、long***p;B、long**p; C、longp;D、long*p; 44.有关构造函数的说法中不正确的是。 A、构造函数的名字和类的名字一样B、构造函数在说明类变量时自动执行 C、构造函数无任何函数类型D、构造函数有且只能有一个 45.以下语句不正确的是。 (设有intp,q) A、p*=3B、p/=q C、p+=3D、p&&=q 46.以下程序段。 intx=-1; do{x=x*x;}while(! x); A、是死循环B、循环执行二次 C、循环执行一次D、有语法错误 47.当一个函数无返回值时,函数的类型应定义为类型。 A、voidB、任意 C、intD、无 48.C++语言中规定,函数的返回值的类型是由。 A、return语句中的表达式的类型决定B、调用该函数时的主调函数类型决定 C、调用该函数时系统临时决定D、在定义该函数时所指定的函数类型决定 49..的功能是对对象进行初始化。 A、构造函数B、数据成员 C、虚函数D、析构函数 50.如果一个函数无返回值,则只能作为被调用。 A、表达式B、语句 C、有参函数D、无参函数 51.下列说明中: constchar*ptr;ptr应该是。 A、指向字符常量的指针B、指向字符的常量指针 C、指向字符串常量的指针D、指向字符串的常量指针 52.为了避免嵌套的if-else语句的二义性,C语言规定else总是与组成配对关系。 A、缩排位置相同的ifB、在其之前未配对的if C、在其之前未配对的最近的ifD、同一行上的if 53.inta=3,*p=&a;其中p的值是。 A、变量a的地址值B、无意义 C、变量p的地址值D、3 54.下列运算符中,可以用于浮点数。 A、++B、%C、>>D、& 55.下列的是引用调用 A、形参参是指针,实参是地址值B、形参和实参都是变量 C、形参和实参都是数组名D、形参是引用,实参是变量 56.下列存储类标识符中,的可见性和存在性不一致。 A、外部类B、自定类C、内部静态类D、寄存器类 57.下面关于new和delete操作符的说法,哪个是不正确的: A.使用new操作符,可以动态分配全局堆中的内存资源。 B.若p的类型已由A*强制转换为void*,那么执行语句deletep;时,类A的析构函数不会被调用。 C.实现全局函数时,new和delete通常成对地出现在由一对匹配的花括号限定的语句块中。 D.执行语句A*p=newA[100];时,类A的构造函数只会被调用1次。 58.类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的: A.TM*a;B.TN&a;C.TMa;D.TNa; 59.类B是通过public继承方式从类A派生而来的,且类A和类B都有完整的实现代码,那么下列说法正确的是: A.类B中具有pubic可访问性的成员函数个数一定不少于类A中public成员函数的个数。 B.一个类B的实例对象占用的内存空间一定不少于一个类A的实例对象占用的内存空间。 C.只要类B中的构造函数都是public的,在main函数中就可以创建类B的实例对象。 D.类A和类B中的同名虚函数的返回值类型必须完全一致。 60.下列哪种函数可以是虚的: A.自定义的构造函数B.拷贝构造函数C.静态成员函数D.析构函数 二、多项选择题 1.下列对指针变量的操作中,正确的是() Achars[7];int*p=s=580;Bchars[6];int*p1=s;*p1=*p2; Cchara[7],*p;p=a;Dinta[6],*p;p=&a; Einta[8],*p=a; 2.下列一维数组的初始化语句中,正确的是() Afloatb[5]={0,3.2,4.3};Bfloatb[5]={0,3,4.5,6,7,1.2}; Cchara[3]={‘a’};Dinta[]={0}; Estaticintb[3]={1,5}; 3.若有说明inti=4,j=2,a[5][4],(*p)[4];和赋值语句p=a;则对数组元素 a[i][j]之值的正确引用是() A*(p+4*i+j)B*(p+i)[j]C*(*(p+i)+j)D*p[i][j] Ep[i][j] 4.以下叙述中正确的是() A.在不同的函数中可以使用相同名字的变量 B.函数中的形式参数是局部变量 C.在一个函数内定义的变量只在本函数范围内有效 D.在一个函数内的复合语句中定义的变量在本函数范围内有效 E.用static标识的变量是全局变量 5.设有如下定义: int(*ptr)();则以下叙述中不正确的是() A.ptr是指向一维数组的指针变量 B.ptr是指向int型数据的指针变量 C.ptr是指向函数的指针,该函数返回一个int型数据 D.ptr是一个函数名,该函数的返回值是指向int型数据的指针 E.ptr是一个指向二维数组的指针变量 6.以下标识符中不合法的是() A、pabB、a#bC、intD、2_and 7.已知: chara[20],b[20];则以下正确的输入语句是() A、gets(a,b);B、scanf(“%s%s”,a,b); C、scanf(“%s%s”,&a,&b);D、gets(a),gets(b); 8.已知: double*p[6];它的含义是() A.p是指针数组 B.p是数组指针 C.p是含有6个元素的一维数组,数组中每个元素都是指向double型变量的指针 D.p是double型数组 9.已知: inti,x[3][4];则能将x[1][1]的值赋给变量i的语句是() A、i=*(*(x+1)+1)B、i=x[1][1]C、i=*(*(x+1))D、i=*(x[1]+1) 10.设有以下说明语句: structstu {inta; floatb; }stutype; 则下面叙述中正确的是() A、struct是结构类型的关键字B、structstu是用户定义的结构类型 C、stutype是用户定义的结构类型变量名D、a和b都是结构成员名 11.若有说明: long*p,a;则能通过scanf语句正确给输入项读入数据的程序段是( ) (A)*p=&a;scanf(“%ld”,p);(B)p=(long*)malloc(4); (C)scanf(“%ld”,p=&a);(D)scanf(“%ld”,&a); (E)scanf(“%ld”,p);a=*p; 12.下列一维数组的初始化语句中,正确的是( ) (A)floatb[5]={0,3.2,4.3};(B)floatb[5]={0,3,4.5,6,7,1.2}; (C)chara[3]={‘a’};(D)inta[]={0}; (E)staticintb[3]={1,5}; 13.以下叙述中错误的是( ) A.定义函数时,形参的类型说明只能放在函数定义的第一行参数表中 B.return语句后边不能用表达式 C.如果函数的类型与返回值类型不一致,以函数类型为准 D.如果函数的类型与返回值类型不一致,以返回值类型为准 E.如果形参与实参的类型不一致,以实参类型为准 14.若有以下说明: inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; charc=’a’,d,g; 则数值为4的表达式是( ) (A)a[g-c](B)a[4](C)a[3](D)a[‘d’-‘c’](D)a[‘d’-c] 15.设有如下定义: int(*ptr)();则以下叙述中不正确的是( ) A.ptr是指向一维数组的指针变量 B.ptr是指向int型数据的指针变量 C.ptr是指向函数的指针,该函数返回一个int型数据 D.ptr是一个函数名,该函数的返回值是指向int型数据的指针 E.ptr是一个指向二维数组的指针变量 16.以下标识符中不合法的是( ) A、pabB、a#bC、intD、2_andE、abc 17.已知: chara[20],b[20];则以下正确的输入语句是( ) A、gets(a,b);B、scanf(“%s%s”,a,b); C、scanf(“%s%s”,&a,&b);D、gets(a),gets(b); E、getchar(a,b); 18.已知: double*p[6];它的含义是( ) a)p是指针数组 b)p是数组指针 c)p是含有6个元素的一维数组,数组中每个元素都是指向double型变量的指针 d)p是double型数组 e)p是一个指向数组的指针 19.已知: inti,x[3][4];则能将x[1][1]的值赋给变量i的语句是( ) A、i=*(*(x+1)+1)B、i=x[1][1]C、i=*(*(x+1))D、i=*(x[1]+1)E、i=x[1]+1 20.设有以下说明语句: structstu {inta; floatb; }stutype; 则下面叙述中正确的是( ) A、struct是结构类型的关键字B、structstu是用户定义的结构类型 C、stutype是用户定义的结构类型变量名D、a和b都是结构成员名 E、stutype是结构体类型名 21.若变量已正确定义并赋值,下面符合C语言语法的表达式是() Aa: =b+1Ba=b=c=2Ca+=b+3D*p++Ea=a+7=c+b 22.以下叙述中正确的是() A.在不同的函数中可以使用相同名字的变量 B.函数中的形式参数是局部变量 C.在一个函数内定义的变量只在本函数范围内有效 D.在一个函数内的复合语句中定义的变量在本函数范围内有效 E.用static标识的变量是全局变量 23.设有如下定义: int(*ptr)();则以下叙述中不正确的是() A.ptr是指向一维数组的指针变量 B.ptr是指向int型数据的指针变量 C.ptr是指向函数的指针,该函数返回一个int型数据 D.ptr是一个函数名,该函数的返回值是指向int型数据的指针 E.ptr是一个指向二维数组的指针变量 24.以下叙述正确的是() A.do-while语句构成的循环不能用其它语句构成的循环来代替 B.do-while语句构成的循环只能用break语句退出 C.由do-while语句构成的循环,其循环体至少执行一次 D.用do-while语句构成的循环,在while后的表达式为非零时结束循环 E.用do-while语句构成的循环,在while后的表达式为零时结束循环 25.若已定义: inta[9],*p=a;并在以后的语句中未改变p的值,能表示a[1]地址的表达式是() Ap+1Ba+1Ca++D++pE&a[1] 26.以下标识符中合法的是() AdayBE2CintDab_cd 27.已知: inta,*p=&a;则下列函数调用中正确的是() Ascanf(“%d”,&a);Bscanf(“%d,p”); Cprintf(“%d”,a);Dprintf(“%d”,*p); 28.设有说明int(*ptr)[M];其中的标识符ptr是() A.M个指向整型变量的指针 B.数组指针 C.具有M个指针元素的一维指针数组,每个元素都只能指向整型变量 D.一个指向具有M个整型元素的一维数组的指针 29.已知: staticinta[2][3]={2,4,6,8,10,12};正确表示数组元素的是() A*(a+1)B*(a[1]+2)C*(*(a+1)+1)Da[0][0] 30.若有以下说明和语句: structstudent {intage; intnum; }std,*p; p=&std; 则以下对结构变量std中成员age的引用方式正确的是() Astd.ageBp->ageC(*p).ageD*p.age 三、填空题: 1.字符串“Hello”的长度是个字节,存储时占有个字节的空间。 2.字符串“C: \\DOS\\DATA.DAT”所表示的全路径文件名是。 3.如果x的值为34,y的值为-7,则执行if(x>0)cout<<’A’;if(y<-8)cout<<’B’;屏幕上显示的是。 4.与if(READY)if(OK)y=-1;elsey=0;elsey=1;等效的赋值语句是。 5.执行inti,s; for(i=8,s=0;i>0;i--)s+=i; while(++i<5)s+=i; 后,s的值是。 6.字符串“ccut\nsoft”的长度是。 7.执行for(inti=23;i>0;i--)cout<<’*’;将输出个*号。 8.指针变量保存的不是一般的数据值,而是程序中另一个对象的。 9.一个类有个析构函数。 10.执行intx=5,y;y=++x-3;后,x的值是,y的值是。 11.利用操作符++,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计复习题 语言程序设计 复习题
![提示](https://static.bingdoc.com/images/bang_tan.gif)
文档标签
- C语言程序设计语言程序设计期末复习题
- 语言程序设计习题
- 沈工大语言程序设计复习题
- 语言程序设计复习题语言程序设计复习题
- C语言程序设计语言程序设计综合复习资料
- 语言程序设计复习
- 语言程序设计复习思考题
- 语言程序设计复习题库
- 高级语言程序设计复习题高级语言程序设计复习题
- 高级语言程序设计C++复习题
- 程序设计语言复习题
- 语言程序设计复习题选择题
- 语言程序设计复习题目1219103530
- C语言程序设计语言程序设计期末复习
- 语言程序设计复习题
- C#程序设计期末以及
- C++期末复习程序
- C程序设计程序设计期末复习
- C语言程序设计语言程序设计考试期末
- 期末复习程序分析
- 程序设计期末复习题程序
- C++期末复习程序
- 网络程序设计期末复习版