(完整版)C++期末复习题库
C语言期末考试复习题及答案3

C语言期末考试复习题及答案一、选择题:下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确的选项涂写在答案纸上.答在试卷上不得分。
(1)C语言规定:在一个源程序中,main函数的位置.A)必须在最后B)必须在系统调用的库函数的后面。
C)必须在最开始.。
D)可以任意(2) C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符。
A)必须为字母或下划线.。
B)必须为下划线。
C)必须为字母D)可以是字母、数字和下划线中的任一种字符。
(3)下面四个选项中,均是正确的八进制数或十六进制数的选项是。
A)—10 0x8f —011 B) 010 -0x11 0xf1C) 0abc —017 0xc D) 0a12 —0x123 -0xa(4) C语言中int型数据在内存中占两个字节,则unsegned int取值范围是.A)0 ~ 65535 B)0 ~ 32767C)—32767 ~ 32768 D)—32768 ~ 327687(5) 若有定义:int a = 7; floa x = 2。
5 , y = 4.7 ;则表达式x + a % 3 * (int)(x + y)% 2/4 的值是.A)2。
750000 B)0.00000 C)3。
500000 D)2。
500000 (6)已知ch是字符型变量,下面不正确的赋值语句是。
A)ch = 5 + 9 ; B) ch= ' a + b ';C) ch = ' \ 0 ’;D)ch= ’7’ + ’6';(7) 设x ,y和z是int型变量,且x = 3, y = 4 , z = 5 则下面表达式中值为0的是。
A)!((x < y )&&!z || 1)B)' x ' &&’ y ’C)x || y+z && y — z D)x 〈= y(8)设有程序段int k = 10 ;while ( k = 0 ) k = k — 1 ;以下描述正确的是.A)循环体语句一次也不执行。
C语言程序设计期末复习题及答案(1)

5. n为整型,表达式n=1,n+2,n*5 的值是__5_______。
6. 已知:float x=8.53; 整形变量i=(int)x;则i=__8_____。
7. 已知:int x=5;语句y=x++*x++;执行完成后x=___7__,y=_25____。
int i, k, num;
gets(str1); gets(str2);
i=strlen(str1);
k=strlen(str2);
num=______? ____: ____;
printf("%d\n", num);
}
2. 下面程序是计算字符串中实际字符的个数,即实现和字符串处理函数strlen相同的功能,补充空白处的程序。
for (j=0;j<n-1-i;j++)
if (a[j]>a[j+1])
{c=a[j];a[j]=a[j+1];a[j+1]=c;}
}
2. 本题20分.总体程序完整性3分,结构体定义正确3分,结构体数组定义以及初始化正确6分,指针定义正确3分,输出判断正确3分,输出姓名地址2分。以下代码为参考代码,答案不唯一。
(B)在指针操作中,运算符“&”是取指针指向的对象的值。
(C)在指针操作中,运算符“*”的操作对象是一个地址。
(D)语句int *ip;定义了指针变量只能存放整型变量的地址。
14.判断字符串str1是否大于字符串str2,应当使用___d________。
(A)if (str1>str2)
C期末考试复习题(答案)

C期末考试复习题(答案)C语言复习题一、单项选择题1、C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。
A).c B).obj C).exe D).bas2、)完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B )A)连接、编译B)编译、连接 C)连接、运行D)运行3、关于C语言的叙述中,不正确的是(D)A)C程序可由一个或多个函数组成B)C程序必须包含一个main ()函数C)C程序的基本组成单位是函数D)注释说明只能位于一条语句的后面4、一个C程序的执行是从(A )。
A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序的main函数开始,到本程序文件的最后一个函数结束D) 本程序文件的第一个函数开始,到本程序main函数结束5、以下正确的叙述是(C )A) 在C语言中,main函数必须位于文件的开头B) C语言每行中只能写一条语句C) C语言本身没有输入、输出语句D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误6、下列选项中,不能用作标识符的是( D)。
A) _1234_ B) _1_2 C) int_2_ D) 2_int_7、常数的书写格式决定了常数的类型和值,0x1011是( C )A)8进制整型常量B)字符常量 C)16进制整型常数D)2进制整型常数8、以下4组用户定义标识符中,全部合法的一组是( A )A)_total clu_1 sum B)if -max turbC)txt REAL 3COM D)int k_2 _0019、_( D )是合法的用户自定义标识符。
A) b-b B)float C)123a D) _isw10、以下选项中不正确的整型常量是( C )。
A) 12L B) -10 C) 1,900 D) 123U11、表达式( C )的值是0。
(完整版)C语言题库(带详解答案)

(完整版)C语⾔题库(带详解答案)⼀单项选择题1.(A)是构成C语⾔程序的基本单位。
A、函数B、过程C、⼦程序D、⼦例程2.C语⾔程序从 C开始执⾏。
A) 程序中第⼀条可执⾏语句 B) 程序中第⼀个函数C) 程序中的main函数 D) 包含⽂件中的第⼀个函数3、以下说法中正确的是(C)。
A、C语⾔程序总是从第⼀个定义的函数开始执⾏B、在C语⾔程序中,要调⽤的函数必须在main( )函数中定义C、C语⾔程序总是从main( )函数开始执⾏D、C语⾔程序中的main( )函数必须放在程序的开始部分4.下列关于C语⾔的说法错误的是(B)。
A) C程序的⼯作过程是编辑、编译、连接、运⾏B) C语⾔不区分⼤⼩写。
C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执⾏5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满⾜(1);选项D中的int为关键字,不满⾜(3)6.下列C语⾔⽤户标识符中合法的是( B)。
A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满⾜(2);选项C,E均为为关键字,不满⾜(3);选项D中的“-”不满⾜(1);7.下列四组选项中,正确的C语⾔标识符是(C)。
A) %x B) a+b C) a123 D) 123选项A中的“%” ,选项B中“+”不满⾜(1);选项D中的标识符以数字开头不满⾜(2)8、下列四组字符串中都可以⽤作C语⾔程序中的标识符的是(A)。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满⾜(1);选项C中的while 为关键字,不满⾜(3)9.C语⾔中的简单数据类型包括(D)。
C语言题库数组(2021年整理精品文档)

(完整版)C语言题库数组编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)C语言题库数组)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)C语言题库数组的全部内容。
数组一、选择题1、假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组X在内存中所占字节数是(B).A 3B 6C 10D 202、执行下面的程序段后,变量k 中的值为(A).int k=3, s[2];s[0]=k; k=s[1]*10;A 不定值B 33C 30D 103、设有数组定义: char array []="China”; 则数组array 所占的空间为(C)。
A 4 个字节B 5 个字节C 6 个字节有0/的结束标志D 7 个字节4、下列描述中不正确的是 CA 字符型数组中可以存放字符串B 可以对字符型数组进行整体输入、输出C 可以对整型数组进行整体输入、输出D 不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值5、给出以下定义char x[]=”abcdefg”;char y[ ]={’a’,'b’,’c','d’,'e','f’,’g'};则正确的叙述为 CA 数组X 和数组Y 等价B 数组x 和数组Y 的长度相同C 数组X 的长度大于数组Y 的长度D 数组X 的长度小于数组Y 的长度6、下述对C 语言字符数组的描术中错误的是 CA 字符数组可以存放字符串B 字符数组中的字符串可以整体输入、输出C 可以在赋值语句中通过赋值运算符”=”对字符数组整体赋值D 不可以用关系运算符对字符数组中的字符串进行比较7、定义如下变量和数组int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是 Cfor(i=0;i<3;i++) printf(”%d",x[i][2—i]);A 1 5 9B 1 4 7C 3 5 7D 3 6 98、以下一维数组a 的正确定义是(D)A int a(10);B float n=10,a[n];C int n;scanf(”%d”,&n);float a[n];D #define size 10; long a[size];9、合法的数组定义是 DA int a[]="string";B int a[5]={0,1,2,3,4,5};C vhst s="string";D char a[]={0,1,2,3,4,5};10、以下关于数组的描述正确的是CA 数组的大小是固定的,但可以有不同的类型的数组元素;B 数组的大小是可变的,但所有数组元素的类型必须相同;C 数组的大小是固定的,但所有数组元素的类型必须相同;D 数组的大小是可变的,但可以有不同的类型的数组元素;11、在定义int a[10];之后,对a 的引用正确的是 AA a[9]B a[6.3]C a(6)D a[10]12、以下对一维数组a 进行不正确初始化的是 AA int a[10]=(0,0,0,0);B int a[10]={};C int a[]={0};D int a[10]={10*2};13、以下对二维数组a 进行正确初始化的是 BA int a[2][3]={{1,2},{3,4},{5,6}};B int a[][3]={1,2,3,4,5,6};C int a[2][]={1,2,3,4,5,6};D int a[2][]={{1,2},{3,4}};14、以下对字符数组进行不正确初始化的是 AA static char word[]=’cool\0’;B static char word[]={‘c’,’o’,’o’,’l’};C static char word[]={“cool\0”};D static char word[]="cool\0”;15、在定义int a[5][4];之后,对数组元素的引用正确的是 CA a[2][4]B a[5][0]C a[0][0]D a[0,0]16、下列选项中,能正确定义数组的语句是 DA int num[0。
c语言期末考试题库

习题一一、选择题1.C语言是一种(C )。
A。
低级语言 B. 汇编语言C。
高级语言 D. 机器语言2.以下不是C语言的特点的是( D )。
A. 语言简洁紧凑B. 可以直接对硬件进行操作C. 数据类型丰富D。
是面向对象的程序设计语言3.一个C程序的执行是从( A )。
A。
本程序的main函数开始,到main函数结束B。
本函数的第一个数开始,到本程序文件的最后一个函数结束C。
本程序的main函数开始,到本程序文件的最后一个函数结束D。
本函数的第一个数开始,到本程序main函数结束4.以下叙述正确的是(C )。
A。
在C程序中,main函数必须位于程序的最前面B。
C程序的每行只能写一条语句C。
C语言的本身没有输入输出语句D. 在对一个C程序进行编译的过程中,可以发现注释中的拼写错误5.以下叙述不正确的是(D )。
A. 一个C源程序可由一个或多个函数组成B. 一个C源程序必须包括一个main函数C。
C程序的基本组成单位是函数D。
在C程序中,注释说明只能位于一条语句的后面6.C语言规定:在一个源程序中,main函数的位置( C ).A。
必须在最开始B。
必须在系统调用的库函数的后面C。
可以任意D。
必须在最后7.一个C语言程序是由( B )。
A. 一个主程序和若干子程序组成B。
函数组成C. 若干过程组成D. 若干子程序组成8.以下叙述中正确的是( C )。
A. C程序的基本组成单位是语句B。
C程序中的每一行只能写一条语句C。
C语句必须以分号结束D。
C语言必须在一行内写完9.以下叙述中正确的是( C )。
A。
C程序中的注释只能出现在程序的开始位置和语句的后面B。
C程序书写格式严格,要求一行内只能写一个语句C。
C程序书写格式自由,一个语句可以写在多行上D. 用C语言编写的程序只能放在一个程序文件中10.以下叙述中正确的是( C )。
A. C语言程序将从源程序中第一个函数开始执行B. 可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C。
[新]C语言期末复习,经典练习题+知识点总结+模拟考题。三位一体,完胜c语言!!!!{考期必备神器}
C语言期末复习(平时练习答案)[特别适用于千千万北航学子]考试重点:(编程题)排序,选择与冒泡排序,,各种进制转换。
]第二次大作业—前驱、后继字符1. 【问题描述】从键盘输入一个字符,求出它的前驱和后继字符(按照ASCII码值排序),并按照从小到大的顺序输出这三个字符和对应的ASCII值。
【输入形式】从键盘输入一个字符【输出形式】按两行输出:第一行按照从小到大的顺序输出这三个字符,并以一个空格隔开;第二行按照从小到大的顺序输出三个字符对应的ASCII 值,并以一个空格隔开。
【输入样例】 b 【输出样例】 a b c 97 98 99 【样例说明】输入字符b,b的前驱字符是a,后继字符是c,第一行按照从小到大的顺序输出a b c;第二行输出对应的ASCII值97 98 99 【评分标准】结果完全正确得20分,每个测试点4分。
提交程序名为:c0103.c。
//*从键盘输入一个字符,求出它的前驱和后继字符(按照ASCII码值排序),并按照从小到大的顺序输出这三个字符和对应的ASCII值。
*//#include<stdio.h>int main(){char c=" ";printf("Input a number:");scanf("%c",&c); //*从键盘输入一个字符*//printf(" %c %c %c\n",c-1,c,c+1);//*第一行按照从小到大的顺序输出这三个字符,并以一个空格隔开*//printf(" %d %d %d", c-1,c,c+1);//*第二行按照从小到大的顺序输出三个字符对应的ASCII值,并以一个空格隔开。
*//return 0;}当前编程题:第二次大作业---数值变换2. 【问题描述】编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出-1。
大学C++期末考试题库及答案--完整版
2014年大学C++期末考试题库一、单选题:1. 能作为C++程序的基本单位是( C )。
A. 字符B. 语句C. 函数D. 源程序文件2. 程序中主函数的名字为( A )。
A. mainB. MAINC. MainD. 任意标识符3. 关于C++与C语言的关系的描述中,(D)是错误的。
A. C语言是C++的一个子集;B. C语言与C++是兼容的;C. C++对C语言进行了一些改进;D. C++和C语言都是面向对象的4. 可用作C++语言用户标识符的一组标识符是( B)。
A. void define +WORDB. a3_b3 _123 YNC. for -abc CaseD. 2a DO sizeof5. 存储以下数据,占用存储字节最多的是( D)。
A. 0B. ‘0’C. “0”D. 0.06. 设int a=12;则执行完语句a+=a*a;后,a的值是( C )。
A. 12B. 144C. 156D. 2881 7. 假设在程序中a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc 的表达式是( D )。
A. 1.0/a*b*cB. 1/(a*b*c)C. 1/a/b/(float)cD. 1.0/a/b/c8. 以下说法中正确的是(B)。
A. C++程序总是从第一个定义的函数开始执行B. C++程序总是从main函数开始执行C. C++函数必须有返回值,否则不能使用函数D. C++程序中有调用关系的所有函数必须放在同一个程序文件中9. 下面有关构造函数的描述中,正确的是(B )。
A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数必须带有参数D. 构造函数必须定义,不能缺省10.10.在声明类时,下面的说法正确的是()。
A. 可以在类的声明中给数据成员赋初值B. 数据成员的数据类型可以是registerC. private,public,protected可以按任意顺序出现D. 没有用private,public,protected定义的数据成员是公有成员11.在下面有关析构函数特征的描述中,正确的是( A )。
C语言试题库[完整版]
C语言试题库一、单项选择第一章C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束。
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C、本程序的MAIN函数开始,到本程序的最后一个函数结束。
D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。
(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。
B、C程序的每行中只能写一条语句。
C、C语言本身没有输入输出语句。
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
(3)C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。
B、必须在系统调用的库函数的后面C、可以在任意位置。
D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=(i=4, j=16, k=32)A、4B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、i f, struct, type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4)以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5)若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#incl ude “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”);else printf(“$ $ $\n”);}以上程序。
2015C语言程序设计(2)期末复习题(1)
C语言程序设计(2)复习题判断题:●C程序是由函数构成的,每一个函数完成相对独立的功能。
()●被main函数调用的函数只能是库函数。
()●定义函数时,必须要有形参和返回值。
()●在C程序中,main函数和自定义的函数都可以有多个。
()●函数必须有return语句。
()●语句return(a,b);则函数可以返回两个值。
()●传值调用时,在函数中形参变量值改变后,不改变实参变量的值。
()●函数的递归调用不过是一个函数直接或间接地调用它自身。
()●在 C 程序中 , 函数既可以嵌套定义,也可以嵌套调用。
()●传值调用的形参只有在被调用时,才被创建(分配存储单元)。
()●自定义函数中若缺省函数值类型,则隐含的类型是int。
()●定义为void类型的函数,其含义是调用函数后,函数的返回值为任意的类型。
()●C语言程序中,若实参是变量,当调用函数时实参和形参各占一个独立的存储单元。
()●在C语言中,所有函数之间都可以相互调用。
()●void类型的函数一定无形参。
()●C语言规定,实参应与其对应的形参类型一致。
()●构成数组的各个元素的数据类型不一定要相同。
()●数组元素的下标必须是整数,不能用实数。
()●系统判断字符串结束的标志是’\n’。
()●定义数组后,可通过赋值运算符=对该数组名直接赋值。
例如:int a[5]; a={1,2,3,4,5};()●若有定义语句“int a[10];”则a[10-9/2] 是合法的数组元素。
()●若有定义:double a[10]={1.1,2.5},i=1;则a[i]为2.5。
()●语句int N=10; int a[N];可以正确定义数组a。
()●有定义:int a[10]={1,2,3,4,5};则a[5]为0。
()●有数组定义int a[3][3]={{1},{2,3}};,则a[3][3]的值为0。
()●若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维大小是3。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++程序设计试题一、单项选择题1.对C++语言和C语言的兼容性,描述正确的是( A )A.C++兼容C B.C++部分兼容CC.C++不兼容C D.C兼容C++2.在C++中使用流进行输入输出,其中用于屏幕输出的对象是( C )A.cerr B.cin C.cout D.cfilecerr:标准错误输出;cin:标准输入3.对使用关键字new所开辟的动态存储空间,释放时必须使用( C )A.free B.create C.delete D.release4.如没有使用private关键字定义类的数据成员,则默认为( A )A.Private B.public C.protected D.friend5.使用值传递方式将实参传给形参,下列说法正确的是( A )A.形参是实参的备份B.实参是形参的备份C.形参和实参是同一对象D.形参和实参无联系6.在函数调用时,如某一默认参数要指明一个特定值,则有( A )A.其之前所有参数都必须赋值B.其之后所有参数都必须赋值C.其前、后所有参数都必须赋值D.其前、后所有参数都不必赋值7.设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是( C )A.int m = max(22,max(59,70));B.int m = max(max(22,59),70);C.int m = max(22,59,70);D.int m = max(59,max(22,70));8.下列哪个类型函数不适合声明为内联函数( A )A.函数体语句较多B.函数体语句较少C.函数执行时间较短D.函数执行时间过长9.int Func(int,int);不可与下列哪个函数构成重载( B )A.int Func(int,int,int);B.double Func(int,int);C.double Func(double,double);D.double Func(int,double);说明:不能以形参名来区分函数;不能以函数返回值来区分函数。
必须是形参的个数或者类型不同才能构成函数重载。
10.对类中声明的变量,下列描述中正确的是( C )A.属于全局变量B.只属于该类C.属于该类,某些情况下也可被该类不同实例所共享D.任何情况下都可被该类所有实例共享11.类的私有成员可在何处访问( D )A.通过子类的对象访问B.本类及子类的成员函数中C.通过该类对象访问D.本类的成员函数中12.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是( A )A.编译器总是自动创建一个不带参数的构造函数B.这个类没有构造函数C.这个类不需要构造函数D.该类不能通过编译13.一个类可包含析构函数的个数是( B )A.0个B.1个C.至少一个D.0个或多个只有一个,多了编译器都不知道调用哪个好。
而构造函数可以有多个,因为构造函数调用时编译器可以根据变量的类型和数量来确定调用哪个构造函数,而析构函数是系统调用的,不能做到这种效果。
14.this指针存在的目的是( B )A.保证基类公有成员在子类中可以被访问B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C.保证基类保护成员在子类中可以被访问D.保证基类私有成员在子类中可以被访问15.下列关于类的权限的描述错误的是( A )A.类本身的成员函数只能访问自身的私有成员B.类的对象只能访问该类的公有成员C.普通函数不能直接访问类的公有成员,必须通过对象访问D.一个类可以将另一个类的对象作为成员16.在编译指令中,宏定义使用哪个指令( B )A.#include B.#define C.#if D.#else17.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是( B )A.A类构造函数先执行B.成员构造函数先执行C.两者并行执行D.不能确定类的组合,描述的是一个类内嵌其他类的对象作为成员的情况,它们之间的关系是一种包含与被包含的关系。
在声明一个组合类的对象时,不仅它自身的构造函数将被调用,而且还将调用其内嵌对象的构造函数。
这时构造函数的调用顺序是:(1)按照内嵌对象在组合类的声明中出现的次序,依次调用内嵌对象的构造函数;(2)执行本类构造函数的函数体,析构函数的调用执行顺序与构造函数刚好相反。
18.下列描述错误的是( A )A.在创建对象前,静态成员不存在B.静态成员是类的成员C.静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员说明:静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态成员,必须通过参数传递方式得到对象名,然后通过对象名来访问。
19.对于友元描述正确的是( B )A.友元是本类的成员函数B.友元不是本类的成员函数C.友元不是函数D.友元不能访问本类私有成员20.在哪种派生方式中,派生类可以访问基类中的protected成员( B )A.public和private B.public和protected C.protected和private D.仅protected二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。
错填、不填均无分。
21.设要把一个文件输出流对象myFile与文件“f:\myText.txt 相关联,所用的C++语句是:_____ myFile.open(“f:\\myText.txt”);_____。
22.C++中ostream类的直接基类是___ ios类_____。
23.运算符[ ]只能用_____成员___运算符来重载,不能用友元运算符来重载。
24.定义虚函数所用的关键字是___ virtual _____。
25.vector类中用于返回向量中第1个对象的方法是___ front( ) _____。
26.在C++中,利用向量类模板定义一个具有20个char的向量E,其元素均被置为字符‘t’,实现此操作的语句是___ vector<char>E(20,‘t’) ____。
27.类的继承是指子类继承基类的___数据成员_____和成员函数。
28.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为____多态性或(类的多态性)____。
29.___ #include _____指令指示编译器将一个源文件嵌入到带该指令的源文件之中。
30.设类A有成员函数void Fun(void);若要定义一个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句是:____ void(A::*pafn)(void);____。
31.设在程序中使用如下语句申请了一个对象数组:Point * ptr = new Point[2];则在需要释放ptr指向的动态数组对象时,所使用的语句是__ delete[ ]ptr; ______。
32.在保护派生中,基类权限为Private的成员在派生类中__不可访问_____。
33.类A有如下成员函数int A::fun(double x){return (int) x/2;}int A::fun(int x){return x*2;}设a为类A的对象,在主函数中有int s=a.fun(6.0)+a.fun(2),则执行该语句后,s的值为_____7___。
34.对象传送的消息一般由3部分组成:接收对象名、调用操作名和____必要的参数____。
35.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的____地址值____。
36.在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是____ -1____。
37.在C++中,声明布尔类型变量所用的关键字是____ bool ____。
38.执行下列代码int a=29,b=100;cout <<setw (3) << a << b << endl;程序的输出结果是:____ 29100__。
(2前面有个空格)39.执行下列代码cout <<″Hex:″<< hex << 255;程序的输出结果为___ Hex:ff _____。
40.C++语言中可以实现输出一个换行符并刷新流功能的操控符是____ endl ____。
三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。
41.#include<iostream.h>void main( ) {int x=5,y=6;const int * p=&x;*p=y;cout<<*p<<endl;} *p=y; 指针p所指向的为一常量,不能进行左值操作42.#include<iostream.h>class f{private:int x,y;public:f1( ){x=0;y=0;}print( ){cout<<x<<″<<y<<endl;}};void main( ){f a;a.f1(1,1);a.print( );} a.f1(1,1); f1( )调用时实参与形参数量不一致43.#include<iostream.h>class f{private:int x=0,y=0;public:void f1(int a,int b){x=a;y=b;}void get( ){cout<<x<<’<<y<<endl;}};void main( ){f a;a.f1(1,3);a.get ( );} private:int x=0,y=0; 数据成员声明时不允许直接赋值44.#include<iostream.h>class point{private:float x;public:void f(float a){x=a;}void f( ){x=0;}friend float max(point& a,point& b);};float max(point& a,point& b){return(a.x>b.x)? a.x:b.x;}void main( ){point a,b;a.f(2.2);b.f(3.3);cout<<a.max(a,b);} cout<<a.max(a,b); max()不是类的成员函数,不能用a.max( )方式调用45.#include<iostream.h>template<class T>class f{private:T x,y;public:void f1(T a,T b){x=a;y=b;}T max( ){retum(x>y)?x:y;}};void main( ){f a;a.f1(1.5,3.8);cout<<a.x<<a.y<<a.max( )<<endl;} cout<<a.x<<a.y<<a.max()<<endl; x,y是私有类型,不能在主函数中直接使用四、完成程序题(本大题共5小题,每小题4分,共20分) 46.完成下面类中的成员函数的定义。