二级C++-34

合集下载

计算机等级考试二级C

计算机等级考试二级C

计算机等级考试二级C++模拟题及解析12上机部分一、改错题使用VC6打开考生文件夹下的工程kt17_1,此工程包含一个源程序文件kt17_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:0149162536496481源程序文件kt17_1.cpp清单如下:#include<iostream.h>template<classT,intN=100>classVector{ Tvec[N];public:voidset(intpos,Tval);Tget(intpos);/*****************found*****************/ }template<classT,intN>voidVector<T,N>::set(intpos,Tval){ vec[pos]=val; }/*****************found*****************/template<classT,intN>Vector<T,N>::get(intpos){ returnvec[pos]; }intmain(){ Vector<double,10>v;inti=0;doubled=0.0;for(i=0;i<10;i++)v.set(i,double(i*i));for(i=0;i<10;i++)cout<<v.get(i)<<"";cout<<endl;/*****************found*****************/ }【参考答案】(1)在“}”后添加分号。

(2)将template <class T, int N> Vector<T, N>::get(int pos)改为:template <class T, int N> T Vector<T, N>::get(int pos)(3)将缺少返回值改为:加入return 0;【试题解析】(1)主要考查对于类定义的理解,即使使用了类模板,在类定义的结尾仍然需要使用分号,这是C++的规定;(2)主要考查是模板类的定义,template是关键字,在<>中间是类型的定义,题目中Vector是一个类的名称,前面应该有该模板的名称,即T,这样才是完整的定义;(3)主要考查对函数返回值的掌握,任何返回值类型不为int型的函数最后都必须使用returen语句返回对应类型的值,就算是main函数也不例外。

计算机二级c语言题库及答案

计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案一、选择题(每小题1分,共40小题,共40分)1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。

现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。

A.20B.0或35C.15D.162.下列关于栈的叙述中,正确的是( )。

A.栈底元素一定是最后入栈的元素B.栈操作遵循先进后出的原则C.栈顶元素一定是最先入栈的元素D.以上三种说法都不对3.下列链表中,其逻辑结构属于非线性结构的是( )0、A.双向链表B.带链的栈C.二叉链表D.循环链表4.在关系数据库中,用来表示实体间联系的是( )。

A.网状结构B.树状结构C.属性D.二维表5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。

则实体部门和职员间的联系是( )。

A.1:m联系B.m:n联系C.1:1联系D.m:l联系6.右两个关系R和S如下:则由关系R得到关系S的操作是( )。

A.自然连接B.并C.选择D.投影7.数据字典(DD)所定义的对象都包含于( )。

A.软件结构图B.方框图C.数据流图(DFD图)D.程序流程图8.软件需求规格说明书的作用不包括( )。

A.软件设计的依据B.软件可行性研究的依据C.软件验收的依据D.用户与开发人员对软件要做什么的共同理解9.下面属于黑盒测试方法的是( )。

A.边界值分析B.路径覆盖C.语句覆盖D.逻辑覆盖10.下面不属于软件设计阶段任务的是( )。

A.制订软件确认测试计划B.数据库设计C.软件总体设计D.算法设计11.以下叙述中正确的是( )。

A.在C语言程序中,main函数必须放在其他函数的最前面B.每个后缀为C的C语言源程序都可以单独进行编译C.在C语言程序中,只有main函数才可单独进行编译D.每个后缀为.C的C语言源程序都应该包含一个main函数12.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是( )。

历届国家二级c语言考试真题及其答案,word版

历届国家二级c语言考试真题及其答案,word版

B)操作系统C)教务管理系统D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。

下列叙述中正确的是A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为A)选择 B)投影 C)插入 D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性 B)键 C)关系 D)域(11)以下选项中合法的标识符是A) 1-1 B)1—1 C)-11 D)1--(12)若函数中有定义语句:int k;,则A)系统将自动给k赋初值0B)这时k中值无定义C)系统将自动给k赋初值-1D)这时k中无任何值(13)以下选项中,能用作数据常量的是A)o115 B) 0118 C)1.5e1.5 D) 115L(14)设有定义:int x=2;,以下表达式中,值不为6的是A) x*=x+1B) x++,2*xC)x*=(1+x)D)2*x,x+=2(15)程序段:int x=12;double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是A)123.141593B)123.141593C)12,3.141593D)123.141593(16)若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是A)scanf(“%f%f”,x,y);B) scanf(“%f%f”,&x,&y);C) scanf(“%lf%le”,px,py);D) scanf(“%lf%lf”,x,y);(17)以下是if语句的基本形式:if(表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#include <stdio.h>main(){int x;scanf(“%d”,&x);if(x<=3); elseif(x!=10)printf(“%d\n”,x);}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)大于3或等于10的整数D)小于3的整数(19)有以下程序#include<stdio.h> Main(){int a=1,b=2,c=3,d=0;if(a= =1 &&b++= =2)if(b!=2 || c--!=3)printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);}程序运行后的输出结果是A)1,2,3B)1,3,2C)1,3,3D)3,2,1(20)以下程序中的变量已正确定义for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(*”);程序段的输出结果是A)********B)****C)**D)*(21)有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。

计算机二级c语言试题及答案

计算机二级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 )。

B、a[i]C、a2_iD、int t5~8题为相同类型题考点:标识符的命名规则只能由字母、数字、下划线构成数字不能作为标识符的开头关键字不能作为标识符选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B )。

A、3axB、xC、caseD、-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是( C )。

A、 %xB、a+bC、a123选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。

A、print _3d db8 aBcB、Iam 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语言讲义 第二讲 运算符和表达式

计算机等级考试 二级C语言讲义 第二讲 运算符和表达式

第二讲主要内容运算符表达式一.运算符1.算术运算符和算术表达式C语言的运算符具有不同的优先级,而且还有一个特点,就是它的结合性。

在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。

这种结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。

C运算符简介C语言的运算符可分为以下几类:1.算术运算符:用于各类数值运算。

包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。

2.关系运算符:用于比较运算。

包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六种。

3.逻辑运算符:用于逻辑运算。

包括与(&&)、或(||)、非(!)三种。

4.赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。

5.逗号运算符:用于把若干表达式组合成一个表达式(,)。

6.指针运算符:用于取内容(*)和取地址(&)二种运算。

7.求字节数运算符:用于计算数据类型所占的字节数(sizeof)。

8.特殊运算符:有括号(),下标[],成员(→,.)等几种。

9.条件运算符:这是一个三目运算符,用于条件求值(?:)。

10.位操作运算符:参与运算的量,按二进制位进行运算。

包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

1.1算术运算符和算术表达式1.基本的算术运算符●加法运算符“+”:加法运算符为双目运算符,即应有两个量参与加法运算。

如a+b,4+8等。

具有左结合性。

●减法运算符“-”:减法运算符为双目运算符。

国家二级ACCESS机试(选择题)-试卷34

国家二级ACCESS机试(选择题)-试卷34

国家二级ACCESS机试(选择题)-试卷34(总分:80.00,做题时间:90分钟)一、选择题(总题数:40,分数:80.00)1.算法的时间复杂度是指( )。

(分数:2.00)A.算法所处理的数据量B.算法的执行时间C.算法在执行过程中所需要的基本运算次数√D.算法程序中的语句或指令条数解析:解析:一个算法的时间复杂度是指执行这个算法所需的极端工作量。

2.数据的存储结构是指( )。

(分数:2.00)A.存储在外存中的数据B.数据所占的存储空间C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示√解析:解析:数据的存储结构也称为数据的物理结构,是数据的逻辑结构在计算机存储空间中的存放形式。

3.下列对队列的叙述正确的是( )。

(分数:2.00)A.队列按"先进后出"原则组织数据B.队列属于非线性表C.队列在队尾删除数据D.队列按"先进先出"原则组织数据√解析:解析:队列是一种操作受限的线性表。

它只允许在线性表的一端进行插入操作,另一端进行删除操作。

其中,允许插入的一端称为队尾(rear),允许删除的一端称为队首(front)。

队列具有先进先出的特点,它是按"先进先出"的原则组织数据的。

4.对长度为n的线性表排序,在最坏情况下,比较次数是nlog2n的排序方法是( )。

(分数:2.00)A.快速排序B.冒泡排序C.堆排序D.堆排序√解析:解析:在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n-1)/2,堆排序需要比较的次数为nlog2n。

5.下列描述中正确的是( )。

(分数:2.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则√D.软件工程只是解决软件开发中的技术问题解析:解析:软件工程的目标是在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。

国家二级ACCESS机试(操作题)-试卷34

国家二级ACCESS机试(操作题)-试卷34

国家二级ACCESS机试(操作题)-试卷34(总分:6.00,做题时间:90分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)在考生文件夹下,“sampl.accdb”数据库文件中建立表“tTeacher”,表结构如下:(2)判断并设置“tTeacher”的主键。

(3)设置“工作时间”字段的默认值属性为本年度的4月1日(规定:本年度年号必须由函数获取)。

(4)设置“年龄”字段的有效性规则为非空且非负。

(5)在“tTeacher”表中输注意,教师李丽的“照片”字段数据设置为考生文件夹下的“李丽.bmp”图像文件。

(6)设置“编号”字段的输入掩码为只能输入5位,规定前2位为字母或数字、后3位为数字。

(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:(1)步骤1:打开“sampl.accdb”数据库,在【创建】功能区中单击“表设计”按钮。

步骤2:输入“编号”字段名,在对应的数据类型选择“文本”,在字段属性中的“字段大小”行单击鼠标修改成:5。

按照题目要求,依次建立其他各个字段。

步骤3:单击快速访问工具栏中的“保存”按钮,输入表名称“tTeacher”,单击“确定”按钮。

(2)步骤1:在设计视图中单击“编号”字段所在行,然后单击【工具】分组中的“主键”按钮。

步骤2:单击快速访问工具栏中的“保存”按钮进行保存。

(3)步骤1:在设计视图中选择“工作时间”字段,在“字段属性”对应的“默认值”属性中的文本框或表达式生成器中编辑输入:DateSefial(Year(DateO),4,1)。

步骤2:单击快速访问工具栏中的“保存”按钮进行保存。

(4)步骤1:在设计视图中选择“年龄”字段,在对应的“有效性规则”属性中的文本框或表达式生成器中编辑输入:Is Not Null And>=0。

国家计算机二级C语言历年真题及答案

国家计算机二级C语言历年真题及答案

全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是A)循环队列B) 带链队列C) 二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A) 循环队列B) 栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A) 低内聚低耦合B) 高内聚低耦合C) 低内聚高耦合D) 高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A) 可封装D) 自顶向下C) 模块化D) 逐步求精(7)软件详细设计产生的图如下:该图是A) N-S图B) PAD图C) 程序流程图D) E-R图(8)数据库管理系统是A)操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统D) 一种操作系统(9)在E-R图中,用来表示实体联系的图形是A) 椭圆图B) 矩形C) 菱形D) 三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A) 选择B) 投影C) 交D) 并(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A)0,0C)3,2D)1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b) c=a,a=b,b=c;B)if(a>b) {c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c;D)if(a>b) {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,c);}程序运行后的输出结果是A)3B)5C)7D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c)) k=1;else k=0;B)if((a>b)||(b>c) k=1;else k=0;C)if(a<=b) k=0;else if(b<=c) k=1;D)if(a>b) k=1;else if(b>c) k=1;else k=0;20)有以下程序#include{ char s[]={“012xy”};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++;printf(“%d\n”,n);}程序运行后的输出结果是A)0B)2C)3D)5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是A)0 2B)1 3C)5 7D)1 2(22)有以下定义语句,编译时会出现编译错误的是A)char a=’a’;B)char a=’\n’;C)char a=’aa’;D)char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A)E,68C)E,DD)输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是A)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i<N;I++)< p="" />{ max=MIN;if(maxreturn max;}造成错误的原因是A)定义语句int i,max;中max未赋初值B)赋值语句max=MIN;中,不应给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);}A)3 3 4 4B)2 0 5 0C)3 0 4 0D)0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A)void (*pf)(); pf=fun;B)viod *pf(); pf=fun;C)void *pf(); *pf=fun;D)void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A)7B)8C)9D)10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是A)char str[ ]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

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

二级C++-34
(总分:71.00,做题时间:90分钟)
一、{{B}}1.改错题{{/B}}(总题数:1,分数:30.00)
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果:
(4,5)
7,8
(4,8)
注意:错误的语句在//******error******的下面,修改该语句即可。

试题程序:
#include<iostream.h>
class TC0
{
public:
TC0(int i,int j)
{
x=i;
y=j;
}
//******error******
virtual void move(int a;int b)
{
X+=a;
y+=b;
}
void print()
{
cout<<"("<<x<<","<<y<<")"<<end1;
}
public:
int x,y;
};
class TC1:public TC0
{
public:
//******error******
TC1(int i,int j,int k):(i,j)
{
m=k;
n=1;
}
void print()
{
cout<<m<<","<<n<<end1;
}
void func()
{
move(3,5);
}
void display()
{
//******error******
print();
}
private:
int m,n;
};
void main()
{
TC0 obj(4,5);
obj.print();
TC1 obj1(1,3,7,8);
obj1.func();
obj1.print();
obj1.display();
}(分数:30.00)
填空项1:__________________ (正确答案:应改为“virtual void move(int a,int b)”。


解析:
填空项1:__________________ (正确答案:应改为“TCl(int i,int j,int k,int l):TC0(i,j)”。

)解析:
填空项1:__________________ (正确答案:应改为“TCO::print();”。


解析:[解析] 由题可知第1处是声明虚函数,虚函数的声明方式为“virtual<类型说明符><函数名>(<参数表>)”,参数表中各参数之间应该用“,”隔开,因此第1处的语句应改为“virtual void move(int a,int b)”。

在主函数的语句“TC1 obj1(1,3,7,8);”中,可知构造函数TC1有4个参数,完成变量m、n、x和y的初始化,k和1赋值给m和n,i和j赋值给x和y,x和y的初始化可通过基类构造函数来
完成对X和Y的初始化、第2处的语句应改为“TC1(int i,int j,int k,int l):TC0(i,j)”,第3处调用的是基类的print函数,而“print();”是调用的派生类的print函数,因此此时只能通过类名来直接调用print函数,即第3处应改为“TC0::print();”。

二、{{B}}2.简单应用题{{/B}}(总题数:1,分数:40.00)
1.使用VC++6.0打开考生文件夹下的源程序文件
2.cpp。

阅读下列函数说明和代码。

函数func(int d[],int n)的功能是将长度为num的数组d中的奇数扩大1倍,并存储到数组d中。

例如:2,15,6,-3,8,-11,9,24,50 返回4,30,12,-6,16,-22,18,48,100 将func(int d[],int num)函数补充完整。

注意:请勿改动主函数。

试题程序:#include<iostream.h>void func(int d[],int hum) { } int main() { int Data[]={2,15,6,-3,8,-11,9,24,50};func(Data,9);for(int i=0;i<sizeof(Data)/sizeof(int);i++) { cout<<Data[i]<<''; } cout<<end1; return 0; }
(分数:40.00)
__________________________________________________________________________________________
正确答案:(for(int i=0;i(num;i++) if(d[i]%2!=0) d[i]=2*d[i];)
解析:[解析] 由审题分析可知,利用循环来逐个判断d[]中的元素,d[]中元素个数为num,因此循环变量从0变化至num。

在循环内,用if语句判断该元素是不是奇数,即if(d[i]%2!=0),将满足条件的d[i]扩大一倍。

三、{{B}}3.综合应用题{{/B}}(总题数:1,分数:1.00)
2.使用VC6打开考生文件夹下的工程MyProj4。

此工程包含一个源程序文件 MyMain4.cpp,该程序将通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。

但程序中定义的类并不完整。

请按要求完成下列操作,把类的定义补充完整。

①把类Distance定义为类Point的友元类。

请在注释
“//**1**”之后添加适当的语句。

②定义类Point的构造函数,完成给私有数据成员x和y的赋值,并且两个参数的默认值都为0。

请在注释“//**2**”之后添加适当的语句。

③完成类Distance的成员函数Dis(Point &p,Point &q)的定义,并在其中计算点p、q之间的距离,并且返回结果。

假设两点之间的距离distance=sqrt((p.x-q.x)* (p.x-q.x)+(p.y-q.y)*(p.y-q.y))。

请在注释“//**3**”之后添加适当的语句。

源程序文件MyMain4.cpp中的程序清单如下: //MyMain4. cpp #include<iostream> #include<cmath> using namespace std; class Point { public: / /* * 1 * * / /定义类 Point 的构造函数 / /* * 2 * * void pint() { cout<<"x="<<x<<end1; cout<<"y="<<y<<end1; } private: float x,y; }; class Distance { public: float Dis(Point &p, Point &q); }; float Distance :: Dis(Point &p, Point &q) { //* * 3 * * } int main ( ) { Point p(10,10),q(20,20); Distance d; cout<<d.Dis(p,q)<<end1; return 0; }
(分数:1.00)
__________________________________________________________________________________________
正确答案:(类Point的定义如下: class Point { public: friend class Distance; Point (float a=0, float b=0) { x=a; y=b; } void pint() { cout<<"x="<<x<<end1; cout<<"y="<<y<<end1; } private: float x,y; };)
解析:[解析] 此道综合应用题主要考核友元类的定义与使用。

①第1处是完成友元类的声明,根据友元类的声明格式已知此处可填入: friend class Distance;②第2处是完成类Point的构造函数,此处还要注意类Point的构造函数中还应该有参数默认值。

此处应填入:Point(float a=0,float b=0){x=a;y=b} ③第3处是完成类Distance成员函数Dis()的定义,函数Dis()的功能是计算两点之间的距离。

根据题目给出的计算公式,已知第3处应填入: float result;
result=sqrt((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y));return result;。

相关文档
最新文档