最新C++模拟题1答案
- 格式:docx
- 大小:33.07 KB
- 文档页数:16
一级c类考试模拟答案一、单项选择题(每题2分,共40分)1. 在C语言中,以下哪个关键字用于定义函数?A. classB. functionC. voidD. int答案:D2. 若有定义int a=5, b=8;,则表达式a+b的值是多少?A. 13B. 5C. 8D. 错误答案:A3. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[];B. char str[10];C. char str[10]="hello";D. 以上都是答案:D4. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. _variableD. variable!5. 在C语言中,以下哪个选项表示逻辑“与”操作?A. &&B. ||C. !D. =答案:A6. 若有定义int x=10;,则表达式x++的值是多少?A. 9B. 10C. 11D. 错误答案:B7. 在C语言中,以下哪个选项是正确的数组声明?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5];D. 以上都是答案:D8. 下列哪个选项是C语言中的合法浮点数?A. 3.14B. .14C. 3e2D. 以上都是答案:D9. 在C语言中,以下哪个选项表示逻辑“或”操作?B. ||C. !D. =答案:B10. 若有定义int a=5, b=8;,则表达式a*b的值是多少?A. 40B. 5C. 8D. 错误答案:A11. 在C语言中,以下哪个选项是正确的结构体声明?A. struct Student {int id; char name[20];};B. struct {int id; char name[20];} Student;C. struct Student {int id; char name;};D. 以上都是答案:A12. 下列哪个选项是C语言中的合法常量?A. 'A'B. "A"C. 100D. 以上都是答案:D13. 在C语言中,以下哪个选项表示逻辑“非”操作?A. &&B. ||C. !答案:C14. 若有定义int a=5, b=8;,则表达式a<b的值是多少?A. 1B. 0C. -1D. 错误答案:B15. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr[];C. int ptr[10];D. 以上都是答案:A16. 下列哪个选项是C语言中的合法变量名?A. _variableB. variable2C. 2variableD. variable!答案:B17. 在C语言中,以下哪个选项表示赋值操作?A. &&B. ||C. =D. !=答案:C18. 若有定义int a=5, b=8;,则表达式a>b的值是多少?A. 1B. 0C. -1D. 错误答案:B19. 在C语言中,以下哪个选项是正确的枚举声明?A. enum Color {Red, Green, Blue};B. enum {Red, Green, Blue} Color;C. enum Color {Red, Green, Blue} color;D. 以上都是答案:A20. 下列哪个选项是C语言中的合法函数声明?A. void function();B. int function(int a);C. void function(int a);D. 以上都是答案:D二、填空题(每题2分,共20分)1. 在C语言中,用于定义全局变量的关键字是________。
一级c类模拟考试答案一、单项选择题(每题2分,共20分)1. 在C语言中,下列哪个关键字用于定义一个结构体?A. intB. structC. charD. float答案:B2. 下列哪个选项不是C语言中的控制语句?A. ifB. switchC. whileD. function答案:D3. 在C语言中,哪个函数用于计算并返回一个浮点数的平方根?A. sqrt()B. pow()C. log()D. exp()答案:A4. C语言中,哪个运算符用于计算两个数的差?A. +B. -C. *D. /答案:B5. 下列哪个选项是C语言中的合法常量?A. 0x1AB. 1.2.3C. 0b1010D. 0777答案:A6. 在C语言中,哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:B7. C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A8. 在C语言中,哪个关键字用于声明一个全局变量?A. staticB. externC. constD. auto答案:B9. 下列哪个选项是C语言中的合法数组声明?A. int a[10];B. int a;C. int a[2.5];D. int a = 10;答案:A10. 在C语言中,哪个函数用于将整数转换为字符串?A. atoi()B. itoa()C. sprintf()D. printf()答案:B二、填空题(每题2分,共20分)1. 在C语言中,使用________运算符可以连接两个字符串。
答案:+2. C语言中,使用________函数可以打开一个文件。
答案:fopen()3. 若想在C语言中定义一个无限循环,可以使用________循环。
答案:while(1)4. 在C语言中,________关键字用于声明一个指针。
一、选择题(每题1分,共20分)1.以下叙述正确的是()。
A) C语言本身没有输入输出语句B) C程序每行中只能写一条语句C) 在对C程序进行编译的过程中,可发现注释中的拼写错误D) 在C程序中,main函数必须位于程序的最前面2.下列标识符中不符合C语法规则的是()。
A) a1 B) 1a C) _a1 D) a_13.若有int a=0,b=0; 则,执行语句“a&&(++b);”后,b的结果是()。
A) 0 B) 1 C) 2 D) 34. 以下for循环的执行次数是()。
for (x=0,y=0;(y=123)&&(x<4);x++);A)是无限循环 B)循环次数不定 C)执行4次 D)执行3次5. 以下程序段()。
x=-1;do{(x=x*x;}while(!x);A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误6.设m=5, n=4, 则,执行语句“m=m%n;”后,m的值为()。
A) 0 B) 1 C) 2 D) 37.C语言中,while 和do-while循环的主要区别是()。
A) while循环控制条件比do-while循环控制条件严格B) do-while循环体至少无条件执行一次C) do-while允许从外部转到循环体内12D) do-while 循环体不能是复合语句8. 若用数组名作为函数调用的实参,则传递给形参的是( )。
A) 数组中全部元素的值 B) 数组的第一个元素的值C) 数组的首地址 D) 数组元素的个数9. 若有字符数组a[80]和b[80],则正确的输出形式是( )。
A) puts(a,b); B)printf("%s,%s" ,a[ ],b[ ]);C) putchar(a,b); D)puts(a); puts(b);10. 若有定义:int a[][3]={1,2,3,4,5,6,7};,则数组a 第一维的大小是( B )。
一级c考试模拟答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个选项是合法的变量名?A. 2variableB. variable-nameC. variable_nameD. variable$name答案:C2. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. ||D. &&答案:A3. 若有定义 `int a[5] = {1, 2, 3, 4, 5};`,则以下哪个表达式的值是3?A. a[2]B. a[3]C. a[1]D. a[0]答案:A4. 在C语言中,哪个关键字用于声明一个函数?A. classB. functionC. voidD. int答案:D5. 下列哪个选项是正确的C语言数组初始化方式?A. int a[] = {1, 2, 3};B. int a[3] = {1, 2};C. int a[3] = {1, 2, 3, 4};D. int a = {1, 2, 3};答案:A6. 在C语言中,哪个函数用于计算字符串的长度?A. strlen()B. length()C. size()D. len()答案:A7. 下列哪个选项是C语言中的条件语句?A. ifB. whenC. switchD. case答案:A8. 在C语言中,以下哪个选项是正确的循环结构?A. do-whileB. do-untilC. repeat-untilD. for-ever答案:A9. 在C语言中,哪个关键字用于声明一个指针?A. pointerB. refC. ptrD. *答案:D10. 下列哪个选项是C语言中的文件操作函数?A. fopen()B. open()C. file()D. create()答案:A二、填空题(每题2分,共20分)1. 在C语言中,字符常量使用____来表示。
答案:单引号2. C语言中,用于定义一个结构体的关键字是____。
《C程序设计基础》模拟考试题(含答案)《C程序设计基础》模拟考试题⼀、选择题(每题2分。
共23道选择题)1、关于C程序的叙述,错误的说法是(B)A、C程序总是从主函数开始执⾏B、C程序中定义的第⼀个函数是主函数C、在主函数中可以调⽤其他函数D、⼀个C程序可以包括多个函数2、C语⾔的基本数据类型包括(A)A、charB、s tructC、s tringD、typedef3、C语⾔的关键字是(A)A、whileB、p rintfC、m ainD、FILE4、错误的C标识符是(D)A、e2B、n ame_C、A_BD、2e5、在下列运算中,优先级最低的运算符是(B)A、= =B、=C、&&D、+6、设a、b和c都是int型变量,且a=7,b=8,c=9,则表达式(a*b)/c + 6 - 14%c的值是(B)A、6B、7C、8D、97、下列⼀维数组说明中,错误的是(C)A、int a[]={1,2,3};B、int a[5];C、int n=5, a[n];D、int a[5]={1,2,3};8、执⾏语句:printf(“a\nb”)输出的结果是(C)A、a\nbB、abC、第⼀⾏输出a,第⼆⾏输出bD、不能输出9、要表⽰年龄(age)在18到25之间,正确的表达式是(B)A、18<=age<=25B、18<=age && age<=25C、18<=age || age<=25D、18<=age and age<=2510、设有定义int a,*p;下列赋值语句中,正确的是(B)A、p=a;B、p=&aC、p=*a;D、*p=&a11、若已经定义char a[10]={“abcd”}, *p=a;则表达式*(p+1)的值是(C)A、abcdB、bcdC、bD、语法错误12、若已经定义struct stu{int a,b; } student; ,则下列叙述中正确的是(B)A、stu 是结构变量B、student 是结构变量C、student 是结构类型D、a和b是结构型变量13、设有定义int a[10], *p=a; 下列对数组元素a[1]的引⽤中,错误的是(B)A、p[1]B、*(++a)C、*(++ p)D、*(a+1)14、下列叙述中,错误的是(D)A、不同函数中可以使⽤相同的变量名B、全局变量和局部变量可以同名C、形式参数是局部变量D、main() 函数中定义的变量在整个程序中都可15、设有函数定义:void p(int x){printf(“%d”, x);} 则正确的函数调⽤是(A)A、p(3);B、a=p(3);C、printf("%d"; p(3));D、p(int x);16、有如下程序段union u{int a; int b; float c;}vu; vu.a=1; vu.b=2; vu.c=3;则vu.a的值是(D)A、1B、2C、3D、以上都不对17、设有如下定义:int x=2 ,y; int fun(int *a){return *a+1;}下列函数调⽤中,实际参数正确的是(B)A、y=fun(x);B、y= fun (&x);C、y=fun(*x);D、y=fun(a);18、设有宏定义#define N 3+2,则语句printf(“%d”, N*N);的输出结果为(A)A、11B、25C、10D、3;519、执⾏scanf(“%d+%d”,&a,&b);时,正确的键盘输⼊是(C)A、3,5B、3 5C、3+5D、3;520、执⾏if(a<=b){a=b;b=a;}else{a++;++b;}语句后,正确的说法是(C)A、当条件满⾜时变量a和b的值对换B、当条件满⾜时变量a和b的值不变C、当条件不满⾜时变量a和b的值各增加1D、当条件不满⾜时变量b的值增加1,a不增加21、设已定义int a=3, b=4; 执⾏if(a=b)printf(“aaa\n”);else printf(“bbb\n”);语句后,正确的说A、输出aaaB、输出bbbC、编译时会出错D、运⾏时会出错22、设有说明语句int x=1, y=2; 则执⾏表达式x=y= = 3后,变量x的值是(A)A、0B、1C、2D、323、已定义float f=1.2;执⾏语句printf(“%d\n”,f);正确的说法是(D)A、输出 1.2B、输出 1C、语法错误D、可以输出,但不是1.2和1⼆、阅读题。
c模拟考试试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个是合法的变量名?A. 2variableB. variable2C. variable-twoD. variable_two答案:B2. 下列哪个选项不是C语言的基本数据类型?A. intB. floatC. stringD. double答案:C3. 以下代码段的输出结果是什么?```cint a = 10;printf("%d", a++);```A. 10B. 11C. 9D. 编译错误答案:A4. 在C语言中,以下哪个语句可以正确地实现数组元素的初始化?A. int arr[5] = {0, 1, 2};B. int arr[5] = {0, 1, 2, 3, 4};C. int arr[5] = {0};D. int arr[5] = {0, 1, 2, 3};答案:C5. 下列哪个是C语言中的控制语句?A. ifB. switchC. both A and BD. none of the above答案:C6. 在C语言中,以下哪个是正确的函数声明?A. void myFunction(int a, int b);B. int myFunction(int a, int b);C. Both A and BD. None of the above答案:C7. 以下哪个是C语言中的输入函数?A. printf()B. scanf()C. sprintf()D. fprintf()答案:B8. 以下代码段的输出结果是什么?```cfor (int i = 0; i < 5; i++) {printf("%d ", i);}```A. 0 1 2 3 4B. 4 3 2 1 0C. 1 2 3 4 5D. 编译错误答案:A9. 在C语言中,以下哪个是正确的字符串声明?A. char str[10] = "Hello";B. string str = "Hello";C. char str = "Hello";D. string str[10] = "Hello";答案:A10. 以下哪个选项是C语言中的逻辑运算符?A. &&B. ||C. Both A and BD. None of the above答案:C二、填空题(每空2分,共20分)1. 在C语言中,一个基本的数据类型可以是______、______或______。
模拟测试(一)一、填空题(20)1、 x+y>=10 && x+y<=30 、 sqrt(b*b-4*a*c)/(2*sin(3.14159/4) 、sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))2、 13、 10, 144、 24 245、按行的顺序6、 117、 68、 1 0 9、 110、 -1, 65535二、单项选择题(20)(把正确答案填入下表各对应的题号下)三、程序填空(15)1、 fabs(t)<=1.0E-6 、 t 、 n+22、 j<9 、 a[i]>a[i+1] 、 i++ 、 a[i]3、 int *n 、 k>=0 && x<v[k] 、 v[k+1]四、阅读程序并写出程序的输出结果(20)1、Max=12, row=2, colum=12、 3,2,5, 3,3,5 4,2,6, 3,4,63、 Max of array A=644、 755、 8五、程序设计(25分)1、用二重循环建立以下数组,并打印出来 1、 main()(不用scanf()函数和静态数组) {int a[5][5],i,j;/*定义数组和变量*/0 1 1 1 1 for(i=0;i<5;i++)/*用二重循环产生二维数组*/-1 0 1 1 1 for(j=0;j<5;j++)-1 -1 0 1 1 if (i<j) a[i][j]=1;-1 -1 -1 0 1 else if(j>j) a[j][j]=-1;-1 -1 -1 -1 0 else a[i][j]=0;2、编一程序打印输出如下图案 for(i=0;i<5;i++) /*打印输出*/A { for(j=0;j<5;j++)BBB printf("%d ",a[i][j]);CCCCC printf("\n");/*输出一行后换行*/ DDDDDDD }EEEEEEEEE }main(){ int i,j;char ch=' A ',space='';/*定义字符变量ch,space */for(i=1;i<6;i++) /*i循环控制打印行数,共 5*/{ for(j=1;j<40-i;j++) /* 输出39-i个空格,即将第一行打印在第40列上..*/printf("%c",space);for(j=0;k<2*i-1;k++) /* 打印2*i-1个字符,即第一行打印1个....*/printf("%c",ch);ch++; /* 输出一行后,让ch增加1,即变为相邻的下一字符 */printf("\n");/*输出一行后,换行*/}}3、编一个函数void fun( char *ss),它的功能是:把ss字符串中的字符按逆序存放。
C程序设计模拟试题1《C程序设计》模拟试题一一、选择题(每小题2分,共60分)1、以下标识符中,不合法的用户标识符是_B__。
A)INCLUDE B)a[10] C)_ABC D)_22、设n=10,i=4,则赋值运算n%=i+1执行后,n的值是_A__。
A) 0 B) 3 C) 2 D) 13、以下能正确表示C语言double类型常量的选项是_B__。
A)0.314´10 B)0.314e10 C)0.0314´102D)3.14L4、设有定义:int x=1,y=-1;则语句:printf("%d\n",(x--&++y);的输出结果是___ B ___。
A).1 B).0 C).-1 D).25、若变量已正确定义并赋值,以下不能构成赋值语句的是_A__。
A)i+j; B)k++; C)a=b=c; D)s/=i;6、若a、b、c为double型变量,要求通过scanf(“%lf%lf%lf”,&a,&b,&c);给a、b、c依次赋5.0、6.0、7.0,在键盘上正确的输入数据形式是_C__A)5.0,6.0,7.0 B)5,6,7 C)5回车> D)2.0+3.0 6.0 7.06回车>7回车>7、C语言中规定函数的返回的类型是由__D__。
A)return语句中的表达式类型所决定B)调用该函数时的主调用函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定8、以下程序的输出结果是__D__。
main( ){int x=10, y=10,i;for(i=0;x>8;y=++i)printf(" %d %d",x--,y);}A).10 1 9 2 B). 9 8 7 6 C).10 9 9 0 D).10 10 9 19、以下程序的输出结果是__C_。
C模拟题1答案C++程序设计模拟试卷(一)一、单项挑选题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中惟独一具是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1. 编写C++程序普通需通过的几个步骤依次是()A. 编辑、调试、编译、连接B. 编辑、编译、连接、运行C. 编译、调试、编辑、连接D. 编译、编辑、连接、运行答案:B解析:(P21)通过编辑、编译、连接和运行四个步骤。
编辑是将C++源程序输入计算机的过程,保存文件名为cpp。
编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为obj,由于没有得到系统分配的绝对地址,还别能直截了当运行。
连接是将目标文件obj转换为可执行程序的过程,结果为exe。
运行是执行exe,在屏幕上显示结果的过程。
2. 决定C++语言中函数的返回值类型的是()A. return语句中的表达式类型B. 调用该函数时系统随机产生的类型C. 调用该函数时的主调用函数类型D. 在定义该函数时所指定的数据类型答案:D解析:(P51)函数的返回值类型由定义函数时的指定的数据类型决定的。
A 项的表达式的值要转换成函数的定义时的返回类型。
3. 下面叙述别正确的是()A. 派生类普通都用公有派生B. 对基类成员的拜访必须是无二义性的C. 赋值兼容规则也适用于多重继承的组合D. 基类的公有成员在派生类中仍然是公有的答案:D解析:(P136)继承方式有三种:公有、私有和爱护。
多继承中,多个基类具有同名成员,在它们的子类中拜访这些成员,就产生了二义性,但举行拜访时,别能存在二义性。
赋值兼容规则是指派生类对象能够当作基类对象使用,只要存在继承关系,因此单继承或多继承都适用。
基类中的公有成员采纳私有继承时,在派生类中变成了私有成员,因此D项错误。
4. 所谓数据封装算是将一组数据和与这组数据有关操作组装在一起,形成一具实体,这实体也算是()A. 类B. 对象C. 函数体D. 数据块答案:A解析:(P39)类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。
c本科一模拟考试试题及答案**C本科一模拟考试试题及答案**一、单项选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于声明一个结构体类型?A. structB. unionC. enumD. typedef答案:A2. 在C语言中,以下哪个运算符用于求两个数的最小值?A. %B. &&C. ||D. <答案:B3. 下列哪个选项是合法的C语言变量名?A. 2variableB. variable2C. variable-nameD. variable$name答案:C4. C语言中,以下哪个函数用于计算并返回字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A5. 在C语言中,以下哪个关键字用于定义一个函数?A. defineB. functionC. defD. void答案:D6. C语言中,以下哪个关键字用于声明一个枚举类型?A. enumB. structC. unionD. typedef答案:A7. 在C语言中,以下哪个函数用于将一个字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A8. C语言中,以下哪个关键字用于声明一个联合体类型?A. structB. unionC. enumD. typedef答案:B9. 在C语言中,以下哪个运算符用于求两个数的乘积?A. *B. /C. %D. +答案:A10. C语言中,以下哪个函数用于将一个浮点数转换为字符串?A. sprintf()B. sscanf()C. atoi()D. atof()答案:A二、填空题(每题2分,共20分)11. C语言中,使用________关键字可以定义一个宏。
答案:#define12. 在C语言中,使用________函数可以将浮点数转换为整数。
C++程序设计模拟试卷(一)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1. 编写C++程序一般需经过的几个步骤依次是()A. 编辑、调试、编译、连接B. 编辑、编译、连接、运行C. 编译、调试、编辑、连接D. 编译、编辑、连接、运行答案:B解析:(P21)经过编辑、编译、连接和运行四个步骤。
编辑是将C++源程序输入计算机的过程,保存文件名为cpp。
编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为obj,由于没有得到系统分配的绝对地址,还不能直接运行。
连接是将目标文件obj转换为可执行程序的过程,结果为exe。
运行是执行exe,在屏幕上显示结果的过程。
2. 决定C++语言中函数的返回值类型的是()A. return语句中的表达式类型B. 调用该函数时系统随机产生的类型C. 调用该函数时的主调用函数类型D. 在定义该函数时所指定的数据类型答案:D解析:(P51)函数的返回值类型由定义函数时的指定的数据类型决定的。
A项的表达式的值要转换成函数的定义时的返回类型。
3. 下面叙述不正确的是()A. 派生类一般都用公有派生B. 对基类成员的访问必须是无二义性的C. 赋值兼容规则也适用于多重继承的组合D. 基类的公有成员在派生类中仍然是公有的答案:D解析:(P136)继承方式有三种:公有、私有和保护。
多继承中,多个基类具有同名成员,在它们的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。
赋值兼容规则是指派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。
基类中的公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。
4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()A. 类B. 对象C. 函数体D. 数据块答案:A解析:(P39)类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。
5. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()A. 私有成员B. 公有成员C. 保护成员D. 保护成员或私有成员答案:A解析:(P133)在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类的成员函数来访问。
所以选择A项。
6. 对基类和派生类的关系描述中,错误的是()A. 派生类是基类的具体化B. 基类继承了派生类的属性C. 派生类是基类定义的延续D. 派生类是基类的特殊化答案:B解析:(P129)派生类的成员一个是来自基类,一个来自本身,所以派生类是基类的扩展,也是基类的具体化和特殊化,派生类是对基类扩展。
B项基类不能继承派生类成员,所以错误。
7. 关于this指针使用说法正确的是()A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码B. 保证基类私有成员在子类中可以被访问。
C. 保证基类保护成员在子类中可以被访问。
D. 保证基类公有成员在子类中可以被访问。
答案:A解析:(P86)this指针是隐藏的,可以使用该指针来访问调用对象中的数据。
基类的成员在派生类中能否访问,与继承方式有关,与this没有关系。
所以选择A项。
8. 所谓多态性是指()A. 不同的对象调用不同名称的函数B. 不同的对象调用相同名称的函数C. 一个对象调用不同名称的函数D. 一个对象调用不同名称的对象答案:B解析:(P167)多态性有两种静态多态性和动态多态性,静态多态性是指调用同名函数,由于参数的不同调用不同的同名函数;动态多态性是指不同对象调用同名函数时,由于对象不同调用不同的同名函数。
多态性肯定具有相同的函数名,所以选择B项。
9. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()A. 内联函数B. 重载函数C. 递归函数D. 嵌套函数答案:A解析:(P59)内联函数特征代码少,频繁调用,执行效率高。
重载函数解决统一接口的问题;递归是子程序调用,程序调用要耗费很多空间和时间,循环/迭代都比递归有效率得多,递归只是从形式上,逻辑比较简洁。
嵌套函数即反复调用,速度较慢。
所以选择A项。
10. 下面函数模板定义中不正确的是()A. AB. BC. CD. D答案:A解析:(P147)A项中F是一个返回Q类型的值,而return中用返回类型作为返回值错误。
所以选择A项。
11. 假设ClassY:publicX,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为()A. X,Y;Y,XB. X,Y;X,YC. Y,X;X,YD. Y,X;Y,X答案:A解析:(P130)派生类构造函数必须对这三类成员进行初始化,其执行顺序:调用基类构造函数;调用子对象的构造函数;派生类的构造函数体。
析构函数在执行过程中也要对基类和成员对象进行操作,但它的执行过程与构造函数正好相反,即对派生类新增普通成员进行清理;调用成员对象析构函数,对派生类新增的成员对象进行清理;调用基类析构函数,对基类进行清理,所以选择A项。
12. 适宜采用inline定义函数情况是()A. 函数体含有循环语句B. 函数体含有递归语句C. 函数代码少、频繁调用D. 函数代码多、不常调用答案:C解析:(P59)内联函数具有程序代码少、频繁调用和执行效率高的特征,所以选择C项。
13. 假定一个类的构造函数为A(int aa,int bb) {a=aa--;b=a*bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为()A. 3和15B. 5和4C. 4和20D. 20和5答案:C解析:(P75)a=4,因为后减,b的值与a、bb相关,b=4*5=20,而与aa没有任何关系。
14. 在类中说明的成员可以使用关键字的是()A. publicB. externC. cpuD. register答案:A解析:extern用于声明外部变量的。
register声明寄存器类型变量。
无cpu类型。
它们都不能声明类成员。
public声明为公有访问权限,所以选择A项。
15. 下列不能作为类的成员的是()A. 自身类对象的指针B. 自身类对象C. 自身类对象的引用D. 另一个类的对象答案:B解析:类的定义,如果有自身类对象,使得循环定义,B项错误。
在类中具有自身类的指针,可以实现链表的操作,当然也可以使用对象的引用。
类中可以有另一个类的对象,即成员对象。
所以选择B选项。
16. 使用地址作为实参传给形参,下列说法正确的是()A. 实参是形参的备份B. 实参与形参无联系C. 形参是实参的备份D. 实参与形参是同一对象答案:D解析:(P51)地址作为实参,表示实参与形参代表同一个对象。
如果实参是数值,形参也是普通变量,此时形参是实参的备份。
所以选择D项。
17. 下列程序的输出结果是()#include <iostream.h>void main(){int n[][3]={10,20,30,40,50,60};int (*p)[3];p=n;cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl;}A. 10,30,50B. 10,20,30C. 20,40,60D. 10,30,60答案:B解析:如果数组元素都是相同类型的指针,则称这个数组为指针数组。
指针数组一般用于处理二维数组。
声明的格式为:<数据类型><(*变量名)><[元素个数]>。
p表示指向数组n的行指针。
如果将指针的初始化(*p)[3]=b;地址的等价形式:p+i p[i]*(p+i)都表示b数组第i+1行的第1个元素的首地址。
*(p+i)+jp[i]+j &p[i][j]都表示b数组第i+1行、第j+1列元素的地址。
值的等价形式:*(*(p+i)+j) *(p[i]+j) p[i][j]都表示b数组第i+1、第j+1列元素的值。
所以题目分别访问p[0][0],p[0][1],p[0][2]。
18. 在C++中,使用流进行输入输出,其中用于屏幕输入()A. cinB. cerrC. coutD. clog答案:A解析:(P193)(1)标准输入流cin:istream类的对象。
(2)标准输出流cout:ostream 类的对象。
(3)非缓冲型标准出错流cerr:ostream类的对象。
(4)缓冲型标准出错流clog:ostream类的对象19. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()A. x.aB. x.a()C. x->aD. (*x).a()答案:B解析:(P41)对象访问成员的方式为:对象名.成员。
指针可以有两种:(*对象指针).成员或者对象指针->成员。
A选项是访问数据成员,B项是访问成员函数。
20. 关于对象概念的描述中,说法错误的是()A. 对象就是C语言中的结构变量B. 对象代表着正在创建的系统中的一个实体C. 对象是类的一个变量D. 对象之间的信息传递是通过消息进行的答案:A解析:(P37)A对象在C++中才有,包括数据和操作两项,而C中的变量只有数据,没有操作。
所以A项错误。
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。
错填、不填均无分。
1. C++的流库预定义了4个流,它们是cin、cout、clog和___。
答案:(P193)cerr[解析]cin、cout、clog和cerr分别用于标准输入、输出、标准错误流(缓冲)和标准错误流(非缓冲)。
2. 每个对象都是所属类的一个___。
答案:(P69)实例[解析]类是对象的抽象,对象是类的一个实例。
3. 在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句___。
答案:(P78)int *ip=new int[10];[解析]new用来动态开辟空间。
常用来产生动态数组及对象构造函数。
4. 函数模板中紧随template之后尖括号内的类型参数都要冠以保留字___。
答案:(P145)class[解析]类模板的使用。
template <class T>,也可以引入多参数的如:template <classT1,class T2,...,class Tn>5. 定义类的动态对象数组时,系统只能够自动调用该类的___构造函数对其进行初始化。