C++期末试卷

合集下载

程序设计C语言期末试卷

程序设计C语言期末试卷

制定具体的养护方案《程序设计(C语言)》期末考试卷(A)使用专业、班级学号姓名l 题数一二三四五总分得分一、选择题〖每题2分,共计40分〗1.下列变量合法的是(B)。

A.2a0 B._1a0 C.x>y D.b-a2.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(B)。

A.7 B.8 C.6 D.23.有以下程序:void main( ){int x=101,y=011;printf("%2d,%2d\n",x,y);}执行后输出结果是(C)。

A.10, 9 B.101,11 C.101, 9 D.01,114.若有说明语句:char c='\72';则变量c( A )。

A.包含1个字符 B.包含2个字符 C.包含3个字符D.说明不合法,c的值不确定5.阅读一下程序,当输入数据的形式为25,13,10<CR> 正确的输出结果为( D )。

void 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=48 B.x+y+z=35 C.x+z=35 D.不确定值江南大学考试卷专用纸1考试形式开卷()、闭卷(√),在选项上打(√)开课教研室命题教师统一命题时间使用学期6.定义如下变量和数组:int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果为()。

for(k=0;k<3;k++) printf("%d",a[k][2-k]);A.3 5 7 B.3 6 9 C.1 5 9 D.1 4 77.有以下程序:void main(){ int i,n=0;for(i=2;i<5;i++){ do{ if(i%3) continue;n++;} while(!i);n++;}printf("n=%d\n",n);}程序执行后的输出结果是()。

《C语言程序设计(第2版)》试题库 期末试卷二

《C语言程序设计(第2版)》试题库 期末试卷二

期末试卷二一、单项选择题(每题1分,共45分)1.下列变量名中,哪个是合法的()A.C&D B.string$C.char D._2132.C语言程序的基本单位是()A.程序行B.语句C.函数D.字符3.表达式a+b%3的值是()(设a=13.6,b=10)A.14.6 B.15C.15.9 D.16.64.保存一个C语言源程序的快捷键是()A.F1 B.F2 C.F3 D.F45.字符串”tc20\nlib\101\\\’”含有多少个字符( )A.10 B.11 C.12 D.136.Putchar()函数可以向终端输出一个()A. 整型变量或表达式值B. 实型变量值C. 字符串D. 字符或字符型变量值7.以下所列的C语言常量中,错误的是()A.0xFF B.2*5 C.2.5 D.04568.下列不合法的C语言赋值表达式是()A.a+=b-c B.a+b=cC.a=b=c=1 D.a*=++b+c9.下列程序运行后的输出结果是()main(){ int y=3,x=3;printf(“%d\n”,++x+y++);}A.5 B.8 C.7 D.610.若已正确定义x和y为double类型,则表达式x=1,y=x+3/2的值是()A.1 B.2 C.2.0 D.2.511.在C语言中运算对象必须是整型的运算符是()A.% B./ C.= D.*12.若有以下定义:char a; int b; float c;则表达式a*b-c值的类型为()A.int B.char C.double D.float13.下列正确的C语言赋值语句的是()A.x=3,y=5 B.a=b=1 C.i++; D.y=int(x)14.有如下程序段:int a1,a2;char c1,c2;scanf("%d%c%d%c",& a1,&c1,&a2,&c2);若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入是()(<CR>表示回车) A.10A 20B<CR> B.10 A 20 B<CR>C.10 A20B<CR> D.10A20 B<CR>15.有如下程序,输入数据:12345m678<CR>后,x的值是()#include <stdio.h>main( ){ int x; float y;scanf("%3d%f", &x,&y);}A.12345 B.123 C.45 D.34516.有如下程序,对应正确的数据输入是()main( ){ float a, b;scanf("%f%f", &a,&b);printf("a=%f,b=%f\n",a,b);}A.2.04<CR> B.2.04,5.67<CR>5.67<CR>C.a=2.04,b=5.67<CR> D.2.045.67<CR>17.有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,& c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式是()A.132<CR> B.1,3,2<CR>C.a=1,b=3,c=2<CR> D.a=1 b=3 c=2<CR>18.已知字母A的ASCII码是65,以下程序的执行结果是()main( ){char c1='A', c2='Y';printf("%d,%d\n", c1, c2);}A.A,Y B.65,65 C.65,90 D.65,8919.以下程序的执行结果是()main( ){ int a=2,b=5;printf("a=%d,b=%d\n", a, b);}A.a=%2,b=%5 B.a=2,b=5C.a=%%d,b=%%d D.a=%d,b=%d20.最适合解决选择结构“若x>0, 则y=1;否则y=0;”的语句是()A.switch B.嵌套的if-else C.if-else D.if21.设整型变量x,y和z的值依次为3,2和1,则下列程序段的输出结果是()if(x>y)x=y;if(x>z)x=z;printf(″%d,%d,%d\n″,x,y,z);A.1,1,1 B.1,2,1 C.1,2,3 D.3,2,122.执行下列程序段后,变量x的值是()int a=8,b=7,c=6,x=1;if(a>6) if(b>7) if(c>8) x=2;else x=3;A.0 B.1 C.2 D.323.运行下列程序的输出结果是()main(){ int a1=1,a2=1,a3=1,a4=1;if (a1>0) a3++;if (a1>a2) a3--;else if (a1= =a2) a3++;else a3--;printf(″%d,%d,%d,%d\n″,a4,a3,a2,a1);}A.1,1,1,1 B.1,2,3,4C.4,3,2,1 D.1,3,1,124.执行下列语句后,整型变量x的值是()switch (x=1) { case 0:x=10;break;case 1:switch (x=2) {case1:x=20;break;case2:x=30;}}A.30 B.20 C.10 D.125.以下说法中正确的是()A.continue和break只能用在循环体中B.continue只能用在循环体中C.break只能用在循环体中D.continue只能用在循环体外26.执行下列程序段的输出是()m=8;while (m>=5) m--,--m,n=m--- m;pritnf (″%d,%d″,m,n);A.2, 0 B.5,-1 C.5,0 D.5,127.设整型变量x的值为1,执行下列循环语句后,变量x 的值是()do x++; while (x++<2);A.2 B.3 C.4 D.528.执行下列语句后,变量k的值是()for (k=0;k<=5;k++) do k++;while (k<5);A.5 B.6 C.7 D.829.下列程序段中,不能使变量m的值等于10的程序段是()A.m=0; B.do m=0;while (m++<9); while (m++<10);C.for (m=8;m<10;m++); D.m=0;L:m++;if (m<10)goto L;30.下列语句中不正确的是()A.static int a[5]={1,2,3,4,5};B.static int a[5]={1,2,3};C.static int a[]={0,0,0,0,0};D.static int a[5]={0*5};31.说明:int a[10];则对a数组元素的正确引用是()A.a[10] B.a[3.5] C.a(5) D.a[10-5] 32.下面程序的运行结果是()main(){ int a[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printf(“%2d”,a[i]);}}A.-4 0 4 0 4 B.-4 0 4 0 3C.-4 0 4 4 3 D.-4 0 4 4 033.以下程序的输出结果是()main(){ int n[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf(“%d\n”,n[1]);}A.1 B.3 C.2 D.434.下面程序的输出结果是()main(){char s[]=”cat and mouse”;int j=0;while(s[j]!=’\0’) ++j;printf(“%d\n”,j);}A.11 B.0 C.12 D.1335.下面程序的运行结果是()#include <stdio.h>main(){char a[10]=”student”;char b[10]=”boy”;int n;n=strlen(a)+strlen(b);printf(“%d”,n);}A.7 B.10 C.12 D.2036.以下程序的输出结果是()void fun(int a,int b,int c){ a=456;b=567;c=678;}main(){ int x=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}A.30,20,10 B.10,20,30C.456,567,678 D.678,567,45637.以下说法中正确的是()A.C语言程序总是从第一个定义的函数开始执行。

清华大学“C语言程序设计”期末试卷

清华大学“C语言程序设计”期末试卷

样例: 输入 1 2 -4 0 32 1 -2 2 输出 3 -4+x^2
第三部分
综合问题 (任选一题完成,共 10 分)
3-A. 代数式处理 ( 3-A.cpp ) 读入一个仅含变量 x 的代数式和 x 的值, 输出该式在 x=x0 处的函数值和导函数的值。 表达式中除了字母 x 和+, -, *, /, (, )外没有其他字符
试卷说明: 考试形式为上机考试,考试时间总计 3 小时 请在 C 盘根目录下建立一个子目录,以自己的学号命名,并将所有的程序存入 此目录。如,学号为 010000 的同学,需要建立目录 C:\010000,并将程序存入 此目录。按照题目名称中指定文件名保存你的程序,并保存一个备份,以免程 序被意外破坏。例如,第一题应当保存一个叫做 1-1bak.cpp 的文件。 3-A 和 3-B 最多只能选择一道题目。如果同时存在 3-A.cpp 和 3-B.cpp,我们将 随机选择一道题目进行评分。 所有题目采用键盘输入和屏幕输出,你的程序不得访问任何文件。 评分时将查看源程序,请严格遵守题目中给出的限制。
输入: 先读入一个字符串,字符总数不超过 100 并且不会有格式错误的代数式。 然后读入一实数作为 x0 的值。
输出:
7
包含两个实数,分别是函数值和导函数值。把所得结果保留 2 位小数输出。如果出 现分母为 0 的情况则只输出一个字符串"error"。
样例: 输入 x*(x+x/x) 100 输出 10100.00 201.00
输入: 第 1 行为一个整数 t,表示任务的类型,t=1 表示做加法,t=2 表示做减法。 第 2 行为 1 个整数 n,表示需要计算的数的位数。 以后 n 行,每行为 2 个数字,分别是同一位上的被加数和加数(当 t=1 时);或被 减数和减数(当 t=2 时)。从第 3 行起,位数依次由高到低,第 3 行为最高位,第 n+2 行为最低位。

计算机c语言期末考试卷八

计算机c语言期末考试卷八

后,变量c 的数据类型是( D ).A .intB .charC .float D. double10.设n=10,i=4,则赋值运算“n%=i+1”执行后的n 值是( A ). A .0 B.1 C .2 D.3二.写程序运行结果(每题6,共18分)1.#include<stdio.h> main( ) {int s=0,i; i=1;while (i<=100) {s=s+i; i++;if (s>20) Break; }p rintf(“%d \n”,s); }运行结果: 212.#include<stdio.h> main(){int i=5,a=0; switch(i){case 1:a+=1;case 2:a+=2;break; case 3:a+=3; default:a+=4; }printf("%d\n",a);}运行结果:43.#include<stdio.h>main(){int i;i=1;while(i<=10){if(i%4==0)break;printf(“%d\n”,i);i++;}}运行结果:123三.程序填空(每题8分,共16分)1.我国1994年的人口是12亿,假设当时没有计划生育,按5%的年增长,那一年达到20亿?#include<stdio.h>main( ){int year;float s;year=1994;s=12;while (__s<20__) {year++;__s=s*1.05__;}printf(“year=%d\n”,year);}2.下面程序的功能是输出所有的水仙花数,填充程序空白处. #include<stdio.h>main(){int m,x,y,z;for(m=100;m<=999;m++){x=m/100;y=___m/10%10__;z=__m%10__;if(m==x*x*x+y*y*y+z*z*z)printf("%d\n",m);}}四.流程图(每题10分,共10分)1根据流程图写出对应的程序.#include<stdio.h> main() {int s,i; s=0; i=1; do{s=s+i; i++;} while(i<=100); printf(“s=%d\n ”,s);}五.编程题(每题12分,共36分)1.编写程序按公式c=2(a+b)求平行四边形周长. #include<stdio.h> main() {float a,b,c; printf(“a,b=”); scanf(“%f%f ”,&a,&b); c=2*(a+b);printf(“c=%f\n ”,c); }2.编写程序输入一个分数x(0--100)按下列情况输出其属于那个级别. x ≥80 优秀 60≤x<80 中等 x<60 不及格 #include<stdio.h> main() {float x; printf(“x=”);scanf(“%f ”,&x); if(x>=80)printf(“优秀”);else if(x>=60)printf(“中等”);else printf(“不及格”);}3.某班50人,编写程序输入该班级某门课程的成绩存入数组a,求该班级课程平均分.#include<stdio.h>main(){float a[50],sum,aver;int i;for(i=0;i<50;i++)scanf(“%f”,&a[i]);sum=0;for(i=0;i<50;i++)sum=sum+a[i];aver=sum/50;printf(“平均=%5.2f\n”,aver);}。

C语言程序设计期末考试卷及问题详解

C语言程序设计期末考试卷及问题详解

文案大全C 语言程序设计期末考试卷及答案一、单项选择题。

从A 、B 、C 、D 四个选项中,选择一个最佳答案填入括号内( 每小题1分,共计30分)。

1.一个C 语言程序的执行是从( )。

A )本程序文件的第一个函数开始,到本程序文件的最后一个函数结束B )本程序的main 函数开始,到main 函数结束C )本程序的main 函数开始,到本程序文件的最后一个函数结束D )本程序文件的第一个函数开始,到本程序的main 函数结束2.下列选项中不属于...C 语言关键字的是( )。

A )switch B )printf C )default D )case3.设有语句 int a = 4; ,则执行了语句 a += a -= a * a; 后,变量a 的值是( )。

A )24B ) -24C )4D )164.已知int i;float d;,则正确的表达式是( )。

A )(int d)B )int(d)%iC )(int)d%iD )int(d%i)5.已知int i,a;,执行语句i=(a=3*9,a/5),a+11; 后,变量i 的值是( )。

A )5B )16C )27D )386.下列选项中合法的字符型常量是( )。

A )"a"B )'\n'C )"\n"D )a7.下面程序的运行结果是( )。

#include <stdio.h> void main( ){ int k = 15;printf("k = %d,k = %o,k = %x\n",k,k,k); }A )k = 15,k = 15,k = 15B )k = 15,k = 17,k = 17C )k = 15,k = 017,k = 0xfD )k = 15,k = 17,k = f8.已知a,b,c 为int 类型,执行语句:scanf ("%d%d%d",&a,&b,&c );使得a 为10,b 为20,c 为30,以下不正确...的输入形式是( )。

陇东学院期末考试卷C语言

陇东学院期末考试卷C语言

陇东学院期末考试卷C语言一、填空题1、设有如下结构体说明:struct ST{int a;float b;struct ST*c;doublex[3];}st1;请填空,完成以下对数组s的定义,使其每个元素均为上述结构体类型。

2、一个C语言源程序由若干函数组成,其中至少应含有一个3、C语言源程序的基本单位是4、若有定义语句:int m=5,y=2;则执行表达式y+=y-=m*=y后的y 值是5、表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为。

6、若x=0123,则表达式(5+(int)(x))&(~2)的值是。

7、下面程序段是找出整数的所有因子。

请填空。

scanf("%d",&x);i=1;for(;;){if(x%i==0)printf("%3d",i);i++;}8、设有宏定义如下:#define MIN(x,y)(x)>(y)?(x):(y)#define T(x,y,r)x*r*y/4则执行以下语句后,s1的值为,s2的值为。

int a=1,b=3,c=5,s1,s2;s1=MIN(a=b,b-a);s2=T(a++,a*++b,a+b+c);9、在C语言中,二维数组元素在内存中的存放顺序是。

10、若有以下定义和语句,在程序中可通过指针数组p,用*(p[i]+j)等4种形式引用数组元素s[i][j],另3种形式分别是:、和。

(假设i、j已正确说明并赋值。

)int s[10][6],*p[10];for(i=0;i<10;i++)p[i]=s[i];二、选择题11、C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符( )A.必须为字母B.必须为下划线C.必须为字母或下划线D.可以是字母、数字和下划线中任一种字符12、在C语言中,char型数据在内存中的存储形式是()。

《C#程序设计》期末试卷

《C#程序设计》期末试卷

《C程序设计》期末试卷C程序设计期末试卷一:单选题(每题1分,共20分)1. 下列哪个是C的关键字?A. publicB. staticC. classD. new2. C中的结构体和类有什么区别?A. 结构体只能包含字段,类可以包含方法B. 结构体不能继承,类可以继承C. 结构体不能被实例化,类可以被实例化D. 结构体不能定义构造函数,类可以定义构造函数3. 在C中,什么是委托?A. 一种特殊的类,用于封装方法B. 一种特殊的变量,用于存储方法C. 一种特殊的数据类型,用于传递方法D. 一种特殊的属性,用于调用方法4. C中的Lambda表达式用于什么?A. 定义匿名方法B. 定义委托类型C. 定义事件处理程序D. 定义属性和索引器5. 下列哪个集合类型是有序的?A. List<T>B. HashSet<T>C. Dictionary<TKey, TValue>D. Stack<T>...二:填空题(每题2分,共10分)1. C中的基本数据类型有int、float、bool等,使用的是_______。

2. 在C中,我们可以使用_______语句来捕获异常。

3. 在C中,_______是一种数据类型,它表示一个逻辑值,只能是true或false。

4. C中的_______关键字用于指示一个方法不会返回任何值。

5. 在C中,_______语句用于处理多个备选项,并根据条件选择其中的一个执行。

...三:编程题(每题10分,共40分)1. 编写一个程序,计算斐波那契数列的第n项,并将结果打印出来。

2. 写一个C函数,输入一个整数n,输出n的阶乘。

3. 编写一个C程序,接收一个字符串,统计字符串中每个字符出现的次数,并将结果显示在控制台上。

4. ...附件:1. 附件1:C程序设计项目案例2. 附件2:C高级编程教程法律名词及注释:1. 版权法:一种法律制度,用于保护原创作品的独立权利。

2022上学期C语言期末试卷选择题

2022上学期C语言期末试卷选择题

2022上学期C语言期末试卷选择题1、下列叙述中,不正确的是()。

A、一个C源程序必须有且只有一个主函数B、一个C源程序可以包含零个或若干个子函数C、在C源程序中,注释说明必须位于语句之后D、C源程序的基本结构是函数2、下列叙述中,不正确的是()。

A.分号是C语句的必要组成部分B.C语句的注释可以写在语句的后面C.函数是C程序的基本单位D.主函数的名字不一定有main表示3、以下不是C语言的特点是()。

A、C语言简洁紧凑B、C语言可以直接对硬件进行操作C、C语言的可移植性好D、C语言编程容易4、构成C语言的基本单位是()。

A、过程B、函数C、子程序D、命令5、一个C程序的执行是从()A、main函数开始,直到main函数结束B、main函数开始,直到最后一个函数结束C、从第一个函数开始,直到最后一个函数结束D、第一条语句开始,直到最后一条语句结束6、在C语言中,main函数的位置A、必须作为第一个函数B、必须作为最后一个函数C、可以任意D、必须放在它所调用的函数之后7、C程序是由()构成的。

A、一个主程序与若干个子程序B、一个或多个函数C、若干过程D、若干子程序8、以下叙述不正确的是()。

A.在C程序中,注释说明只能位于一条语句的后面B.注释说明被计算机编译系统忽略C.注释说明必须括在“/某”和“某/”之间,注释符必须配对使用D.注释符“/”和“某”之间不能有空格9、下列符号串中,属于C语言合法标识符的是。

A.e某-1B.ifC._cookD.951a10、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是()。

A、K%2B、K%2==1C、(K%2)!=0D、!K%2==111、对于一个完整的可运行的C源程序,下列哪一个说法是正确的?A、C语言程序总是从第一个定义的函数开始执行。

B、在C语言程序中,要调用的函数必须在main()函数中定义。

C、C语言程序总是从main()函数开始执行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++程序设计模拟试卷(五)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1. 静态成员函数没有()A. 返回值B. this指针C. 指针参数D. 返回类型答案:B解析:(P107)静态成员函数是普通的函数前加入static,它具有函数的所有的特征:返回类型、形参,所以使用(P107)静态成员函数,指针可以作为形参,也具有返回值。

静态成员是类具有的属性,不是对象的特征,而this表示的是隐藏的对象的指针,因此静态成员函数没有this 指针。

静态成员函数当在类外定义时,要注意不能使用static关键字作为前缀。

由于静态成员函数在类中只有一个拷贝(副本),因此它访问对象的成员时要受到一些限制:静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员;若要访问非静态成员时,必须通过参数传递的方式得到相应的对象,再通过对象来访问。

2. 在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()A. 友元函数B. 虚函数C. 构造函数D. 析构函数答案:C解析:(P75)定义构造函数作用就是初始化对象,而析构函数释放对象空间。

虚函数用于完成多态性,友元增加访问方便性。

3. 所有在函数中定义的变量,都是()A. 全局变量B. 局部变量C. 静态变量D. 寄存器变量答案:B解析:(P136)变量存储类可分为两类:全局变量和局部变量。

(1)全局变量:在函数外部定义的变量称为全局变量,其作用域为:从定义变量的位置开始到源程序结束。

全局变量增加了函数之间数据联系的渠道,全局变量作用域内的函数,均可使用、修改该全局变量的值,但是使用全局变量降低了程序的可理解性,软件工程学提倡尽量避免使用全局变量。

(2)局部变量:在函数内部定义的变量称为局部变量,其作用域为:从定义变量的位置开始到函数结束。

局部变量包含自动变量(auto)静态变量(static)以及函数参数。

auto变量意味着变量的存储空间的分配与释放是自动进行的。

说明符auto可以省略。

函数中的局部变量存放在栈空间。

在函数开始运行时,局部变量被分配内存单元,函数结束时,局部变量释放内存单元。

因此,任两个函数中的局部变量可以同名,因其占有不同的内存单元而不影响使用。

这有利于实现软件开发的模块化。

static变量是定义在函数体内的变量,存放在静态存储区,不用栈空间存储,其值并不随存储空间的释放而消失。

4. 假定AB为一个类,则执行“AB a(2), b[3],*p[4];”语句时调用该类构造函数的次数为()A. 3B. 4C. 5D. 9答案:B解析:(P79)a(2)调用1次带参数的构造函数,b[3]调用3次无参数的构造函数,指针没有给它分配空间,没有调用构造函数。

所以共调用构造函数的次数为4。

5. 如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()A. a.operator++(1)B. operator++(a)C. operator++(a,1)D. a.operator++()答案:D解析:(P186)运算符的重载,前缀先让变量变化。

调用++a,等价为a.operator++(),注意无参的形式。

后缀的话a++,等价于a.operator(0),带形参,形参名可省。

6. 已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明()A. f1和f2都是静态函数B. f1不是静态函数,f2是静态函数C. f1是静态函数,f2不是静态函数D. f1和f2都不是静态函数答案:C解析:(P107)普通成员函数可以调用静态函数,相反静态函数不能调用普通成员函数,这与普通函数与常成员函数相同。

因此选择C项。

7. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()A. 内联函数B. 重载函数C. 递归函数D. 嵌套函数答案:A解析:(P59)内联函数特征代码少,频繁调用,执行效率高。

重载函数解决统一接口的问题;递归是子程序调用,程序调用要耗费很多空间和时间,循环/迭代都比递归有效率得多,递归只是从形式上,逻辑比较简洁。

嵌套函数即反复调用,速度较慢。

所以选择A项。

8. 解决定义二义性问题的方法有()A. 只能使用作用域分辨运算符B. 使用作用域分辨运算符或成员名限定C. 使用作用域分辨运算符或虚基类D. 使用成员名限定或赋值兼容规则答案:B解析:(P139)解决二义性问题主要要两种方法:(1)赋值兼容规则;(2)虚基类。

9. 在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中a是()A. 私有继承的公有成员B. 公有继承的私有成员C. 公有继承的保护成员D. 公有继承的公有成员答案:D解析:(P132)公有成员可以在类外访问,保护类型成员可以在派生类中访问,但不能在类外访问,在main函数中访问,说明a是公有成员。

只有公有继承时a才能是公有的,所以D项正确。

10. 在C++中不返回任何类型的函数应该说明为()A. intB. charC. voidD. double答案:C解析:无形参或无返回值都可以用void来声明,int char double分别是整型、字符型和实型。

11. 若Sample类中的一个成员函数说明如下:void set(Sample& a),则Sample& a的含义是()A. 指向类Sample的名为a的指针B. a是类Sample的对象引用,用来作函数Set()的形参C. 将a的地址赋给变量SetD. 变量Sample与a按位与的结果作为函数Set的参数答案:B解析:(P53)成员函数使用对象的引用作为形参。

该函数的功能是将已知对象的所有数据成员的值拷贝给相应对象的所有数据成员,不会建立临时对象,这里是对象的引用所以选择B。

12. 要实现动态联编必须()A. 通过成员名限定来调用虚函数B. 通过对象名来调用虚函数C. 通过派生类对象来调用虚函数D. 通过对象指针或引用来调用虚函数答案:D解析:(P170)通过基类指针或基类引用来调用虚函数实现动态多态性,静态多态性通过重载来实现的。

所以选择D项。

13. 在派生类中定义虚函数时,可以与基类中相应的虚函数不同的是()A. 参数类型B. 参数个数C. 函数名称D. 函数体答案:D解析:(P170)虚函数在基类和派生类,具有相同的返回类型、形参类型和形参个数,而函数体可以根据不同的派生类或基类实现不同的操作,即不同函数体。

14. 实现两个相同类型数加法的函数模板的声明是()A. add(T x,T y)B. T add(x,y)C. T add(T x,y)D. T add(T x,T y)答案:D解析:(P63)实现两个相同类型数加法结果应该和操作数具有相同类型。

进行加法运算后结果也是和参数具有相同类型,需要返回值。

A无返回值时要用void,B形参无类型,C形参y没有类型,所以选择D项。

15. 下列不是描述类的成员函数的是()A. 构造函数B. 析构函数C. 友元函数D. 拷贝构造函数答案:C解析:(P109)友元函数虽然不是成员函数但是可以访问类所有成员。

构造函数、析构函数和拷贝构造函数(复制构造函数)都是类的特殊函数用于对象的创建和撤销,所以选择C项。

16. 继承机制的作用是()A. 信息隐藏B. 数据封装C. 定义新类D. 数据抽象答案:C解析:(P40)面向对象设计中的类的特点:抽象、封装、继承和多态等,继承用于对类的扩展,所以选择C项。

17. 已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。

如果要给m赋值为5,正确的是()A. A1.p=5;B. A1->p=5;C. A1.*p=5;D. *A1.p=5;答案:C解析:(P118)A中p是指针即地址,错误;B选项中A1不是指针不能使用指向运算符->,错误;“*”比“.”级别要高,所以D选项*A1.p=5相当于(*A1).p=5;错误。

另外涉及到指向成员函数时注意以下几点:指向成员函数的指针必须于其赋值的函数类型匹配的三个方面:(1)参数类型和个数;(2)返回类型;(3)它所属的类类型。

成员函数指针的声明:指向short型的Screen类的成员的指针定义如下:short Screen::* ps_Screen;ps_Screen可以用_height的地址初始化如下:short Screen::*ps_Screen=&Screen::_height;类成员的指针必须总是通过特定的对象或指向改类型的对象的指针来访问。

是通过使用两个指向成员操作符的指针(针对类对象和引用的.*,以及针对指向类对象的指针的->*)。

18. 如果采用动态多态性,要调用虚函数的是()A. 基类对象指针B. 对象名C. 基类对象D. 派生类名答案:A解析:(P171)基类指针或者基类的引用调用虚函数都会产生动态多态性19. 若有以下定义,则说法错误的是()int a=100,*p=&a;A. 声明变量p,其中*表示p是一个指针变量B. 变量p经初始化,获得变量a的地址C. 变量p只可以指向一个整型变量D. 变量p的值为100答案:D解析:指针变量如同其他变量一样,在使用之前必须先声明。

声明指针变量的格式为:<类型名>*<变量名>;其中,<类型名>是指针变量所指向对象的类型,它可以是C++语言预定义的类型,也可以是用户自定义类型。

<变量名>是用户自定义的标识符。

符号*表示<变量>是指针变量。

而不是普通变量。

*表示指针,p是变量,p指向一个整型的变量,值为a的地址值,*p=100。

20. C++语言建立类族是通过()A. 类的嵌套B. 类的继承C. 虚函数D. 抽象类答案:B解析:(P174)类族即同一个类派生出来的类,各个类是兄弟或父子关系。

二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。

错填、不填均无分。

1. 假设int a=1,b=2;则表达式(++a/b)*b--的值为___。

答案:2[解析]前缀++或――表示先使变量值变化,再使用,这和后缀恰恰相反。

但是编译cout<<(++a/b)*b--时,先++a/b值为1,后1*b--,先取b=2,结果为2,再让b=1。

2. 复制构造函数使用___作为形式参数。

答案:(P80)对象的引用[解析]复制构造函数使用对象的引用来初始化一个新对象,避免临时产生对象。

相关文档
最新文档