历年全国计算机等级考试二级C++试卷及模拟试卷真题及答案2006~_第1页
历年全国计算机等级考试二级C++试卷及模拟试卷真题及答案2006~_第2页
历年全国计算机等级考试二级C++试卷及模拟试卷真题及答案2006~_第3页
历年全国计算机等级考试二级C++试卷及模拟试卷真题及答案2006~_第4页
历年全国计算机等级考试二级C++试卷及模拟试卷真题及答案2006~_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2006年4月全国计算机等级考试二级c+试卷及答案公共基础知识 一、选择题 ()下列关于栈的叙述正确的是 a)栈是非线性结构b)栈是一种树状结构 c)栈具有先进先出的特征d)栈具有后进先出的特征 ()结构化程序设计所规定的三种基本控制结构是 a)输入、处理、输出b)树形、网形、环形c)顺序、选择、循环d)主程序、子程序、函数 ()结构化程序设计的一种基本方法是 a)筛选法b)递归法c)归纳法d)逐步求精法 ()如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是:a)选择b)投影c)连接d)并 二、填空题 .对于输入为n个

2、数进行快速排序算法的平均时间复杂度是() .在面向对象方法学中,直接反映了用户对目标系统的要求的模型是() .软件测试方法中,黑盒测试个白盒测试法是常用的方法,其中黑盒测试法主要是用于测试() .关系型数据库管理系统中存储与管理数据的基本形式是() c+语言程序设计 一、选择题 ()c+语言是从早期的c语言逐渐发展演变而来的.与c语言相比,它在求解问题方法上进行的最大改进是() a)面向过程b)面向对象c)安全性d)复用性 ()c+语言的跳转语句中,对于break和continue说法正确的是() a)break语句只应用与循环体中 b)continue语句只应用与循环体中 c)break是无

3、条件跳转语句,continue不是 d)break和continue的跳转范围不够明确,容易产生问题 ()for(intx=,y=o;!x&y=5;y+)语句执行循环的次数是() a)b)c)d)无次数 ()考虑函数原型voidtest(inta,int b=7,char=*),下面的函数调用中,属于不合法调用的是() a)test(5);b)test(5,8);c)test(6,#)d)test(0,0.*); (5)下面有关重载函数的说法中正确的是() a)重载函数必须具有不同的返回值类型;b)重载函数形参个数必须不同; c)重载函数必须有不同的形参列表d)重载函数名可以不同; ()下列关

4、于构造函数的描述中,错误的是() a)构造函数可以设置默认参数;b)构造函数在定义类对象时自动执行 c)构造函数可以是内联函数;d)构造函数不可以重载 ()下面描述中,表达错误的是() a)公有继承时基类中的public成员在派生类中仍是public的 b)公有继承是基类中的private成员在派生类中仍是private的 c)公有继承时基类中的protected成员在派生类中仍是protected的 d)私有继承时基类中的public成员在派生类中是private的 ()应在下列程序划线处填入的正确语句是() #include classbase public: voidfun()coutb

5、ase:funendl; ; classderived:publicbase voidfun() _/显示调用基类的函数fun() coutderived:funfun();(9)有如下程序: include classbase charc; public: base(charn):c(n) virtualbase()coutc; ; classderived:publicbase charc; public: derived(charn):base(n+1),c(n) derived()coutc; ; intmain() derived(x); return0; 执行上面的程序将输出()

6、a)xyb)yxc)xd)y (10)在进行完任何c+流的操作后,都可以用c+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是() a)failb)eofc)badd)good二、填空题 (1)下面程序的打印结果是1 #incude intf(int); intmain() inti; for(i=0;i5;i+) coutf(i)0;i-) k+=i; returnk; (2)在用class定义一个类时,数据成员和成员函数的默认访问权限是2 (3)含有纯虚函数的类称为3 (4)已知intdbl(intn)returnn+n;和longdbl(longn)returnn

7、 +n;是一个函数模板的两个实例,则该函数模板的定义是4 (5)在下面程序的横线处填上适当的语句,使该程序执行结果为10. #include classmyclass public: myclass(inta)x=a; 5/取x值 private intx; ; intmain() myclassmy(10); coutmy.getnum()endl; return0; 三、上机操作题(改错题1道,简单应用1道,综合应用1道) 1.使用vc6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果为: memb

8、er=0 member=5 menber=10 源程序文件main.cpp清单如下: #include classmyclass public: myclass(inti)member=i; voidsetmember(intm)member=m; intgetmember()constreturnmenber; voidprint()contcoutmember=endl; private: intmember; ; voedmain() /*found*/ myclassobj1; obj1.print(); myclassobj2(3); /*found*/ obj1.member=5;

9、 /*found*/ myclass.setmember(10); obj1.print(); obj2.print(); 2.请编写一个函数intfind(chars,char t),该函数在字符串s中查找字符串t,如果找到,则返回字符串t在字符串s中的位置(整数值);否则返回-1.注意:用数组方式及两重循环来实现该函数. 注意:部分源文件程序已存在文件proc2,cpp中. 请勿修改主函数main和其他函数中的任何内容,仅在函数find的花括号中填写若干语句. 文件proc2.cpp的内容如下: #include intfind(chars,chart); constintmaxline=

10、256; intmain() charsourcemaxline,rargetmaxline; ; coutpleaseinputastringforsearching:; cin.getline(source,maxline); cout=0 coutfindingit.thetargetstringisatindex ofstring?; else coutnotfindingit.; return0; ) intfind(chars,chart) 3.使用vc6打开考生文件夹下的工程proj3.此工程包含一个源程序文件main.cpp.其中定义了用于表示日期的类date,但类date的定

11、义并不完整.请按要求完成下列操作,将类date的定义补充完整: (1)定义私有数据成员year,month和day分别用于表示年,月,日,它们都是int型的数据.请在注释/*2 *之后添加适当的语句. (2)完成默认构造函数date的定义,使date对象的默认值为:year=1,month=1,day=1,请在注释/* *2*之后添加适当的语句 ()完成重载构造函数date(inty,intm,int d)的定义,把数据成员year,month和day分别初始化为参数y,m,d的值,请在注释* *之后添加适当的语句 ()完成成员函数print的类外定义,使其以年月日的格式将date对象的值输出

12、到屏幕上请在注释* *之后添加适当的语句 注意:除在指定位置添加语句之外,请不要改动程序中的其他内源程序文件main.cpp清单如下: main.cpp #include classdate public: /*2* date(inty,intm,intd) /*3* voidprint()const; private: /datemembers /*1* ; voiddate:print()const /*4* intmain() ; datenational_day(1949,10,1); national_day.print(); return0; 参考答案: 公共基础知识: 一:选择题

13、: (1)d(2)c(3)d(4)b 二:填空题: (1)1:o(nlog2n) (2)2:功能模型 (3)3:软件外部功能 (4)4:二维表 c+程序设计 一:选择题 1-5:bbccc 6-10:dbcab 二:填空题 (1)1:1251121 (2)2:private或私有 (3)3:抽象类 (4)4:templatetdbl(tn)returnn+n; (5)5:intgetnum()returnx;或intgetnum()constreturnx;05年4月计算机等级考试二级c+笔试试卷及答案一、 选择题(1)-(10)每小题2分,(11)-(50)每小题1分,共60分)下列各题a)

14、、b)、c)、d)四个选项中,只有一个选项是正确的。请将正确选项真涂在答题卡相应位置上,答在试卷上不得分。(1)数据的存储结构是指 da)存储在外存中的数据b)数据所占的存储空间量c)数据在计算机中的顺序存储方式d)数据的逻辑结构中计算机中的表示(2)下列关于栈的描述中错误的是 ba)栈是先进后出的线性表b)栈只能顺序存储c)栈具有记忆作用d)对栈的插入与删除操作中,不需要改变栈底指针(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 da)冒泡排序为n/2b)冒泡排序为nc)快速排序为nd)快速排序为n(n-1)/2(4)对长度为n的线性表进行顺序查找,在最坏情

15、况下所需要的比较次数为 ca)log2n b) n/2c) n d) n+1(5)下列对于线性链表的描述中正确的是 aa)存储空间不一定是连续,且各元素的存储顺序是任意的b)存储空间不一定是连续,且前件元素一定存储在后件元素的前面c)存储空间必须连续,且前件元素一定存储在后件元素的前面d)存储空间必须连续,且各元素的存储顺序是任意的(6)下列对于软件的描述中正确的是 ca)软件测试的目的是证明程序是否正确b)软件测试的目的是使程序运行结果正确c)软件测试的目的是尽可能多地发现程序中的错误d)软件测试的目的是使程序符合结构化原则 (7)为了使模块尽可能独立,要求 ba)模块的内聚程序要尽量高,且

16、各模块间的耦合程序要尽量强b)模块的内聚程序要尽量高,且各模块间的耦合程序要尽量弱c)模块的内聚程序要尽量低,且各模块间的耦合程序要尽量弱d)模块的内聚程序要尽量低,且各模块间的耦合程序要尽量强(8)下列描述中正确的是 da)程序就是软件b)软件开发不受计算机系统的限制c)软件既是逻辑实体,又是物理实体d)软件是程序、数据与相关文档的集合(9)数据独立性是数据库技术的重要特点之一。所谓数据独立性是指 da)数据与程序独立存放b)不同的数据被存放在不同的文件中c)不同的数据只能被对应的应用程序所使用d)以上三种说法都不对(10)用树形结构表示实体之间联系的模型是 ca)关系模型b)网状模型c)层

17、次模型d)以上三个都是(11)算法具有五个特性,以下选项中不属于算法特性的是 ba)有穷性b)简洁性c)可行性d)确定性(12)以下选项中可作为c语言合法常量的是 aa)-80.b)-080c)-8e1.0d)-80.0e( 13)以下叙述中正确的是 ca)用c程序实现的算法必须要有输入和输出操作b)用c程序实现的算法可以没有输出但必须要有输入c)用c程序实现的算法可以没有输入但必须要有输出d)用c程序实现的算法可以既没有输入也没有输出1414)以下不能定义为用户标识符的是 da)mainb)_0c)_intd)sizeof1515)以下选项中,不能作为合法常量的是 ba)1.234e04b)

18、1.234e0.4c)1.234e+4d)1.234e0(16)数字字符0的ascii值为48,若有以下程序main() char a=1,b=2; printf(%c,b+); printf(%dn,b-a);程序运行后的输出结果是 ca)3,2b)50,2c)2,2d)2,50(17)有以下程序main() int m=12,n=34; printf(%d%d,m+,+n); printf(%d%dn,n+,+m);程序运行后的输出结果是 aa)12353514b)12353513c)12343514d)12343513(18)有定义语句:int b;char c10; ,则正确的输入语句

19、是 ba)scanf(%d%s,&b,&c);b)scanf(%d%s,&b,c);c)scanf(%d%s,b,c);d)scanf(%d%s,b,&c);(19)有以下程序main() int m,n,p; scanf(m=%dn=%dp=%d,&m,&n,&p); printf(%d%d%dn,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是 aa)m=123n=456p=789b)m=123 n=456 p=789c)m=123,n=456,p=789d)123 456 789(20)有以下程序main() int a,b,

20、d=25; a=d/10%9; b=a&(-1); printf(%d,%dn,a,b);程序运行后的输出结果是 ba)6,1b)2,1c)6,0d)2,0 (21)有以下程序 main() inti=1,j=2,k=3; if(i+=1&(+j=3|k+=3) printf(%d%d%dn,i,j,k); 程序运行后的输出结果是d a)123 b)234 c)223 d)233 (22)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式ab?a:cd?c:d的值    a a)1 b)2 c)3 d)4 (23)有以下程序 main()

21、 intp8=11,12,13,14,15,16,17,18,i=0,j=0; while(i+y?x:y; intf2(intx,inty)returnxy?y:x; main() inta=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(c,d); g=a+b+c+d-e-f; printf(%d,%d%dn,e,f,g); 程序运行后的输出结果是a a)4,3,7 b)3,4,7 c)5,2,7 d)2,5,7 (27)已有定义:chara=xyz,b=x,y,z;,以下叙述中正确的是c a)数组a和b的长度相同 b)

22、a数组长度小于b数组长度 c)a数组长度大于b数组长度 d)上述说法都不对 (28)有以下程序 voidf(int*x,int*y) intt; t=*x;*x=*y;*y=t; main() inta8=1,2,3,4,5,6,7,8,i,*p,*q; p=a;q=&a7; while(p f(p,q); p+; q-; for(i=0;i8;i+) printf(%d,ai); ) 程序运行后的输出结果是d a8,2,3,4,5,6,7,1, b5,6,7,8,1,2,3,4, c1,2,3,4,5,6,7,8, d8,7,6,5,4,3,2,1, (29)有以下程序 main() int

23、a33,*p,i; p=&a00; for(i=0;i9;i+) pi=i; for(i=0;i=n;i-) ai+1=ai;main() int i,an=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;i5;i+) printf(%d,ai);程序运行后的输出结果是 ca)10234b)12344c)12334d)12234(32)有以下程序main() int a32=0,(*ptr)2,i,j; for(i=0;i2;i+) ptr=a+i; scanf(%d,ptr); ptr+; for(i=0;i3;i+) for(j=0;j2;j+) pri

24、ntf(-,aij); printf(n); 若运行时输入:1 2 3,则输出结果为 ba)产生错误信息b)1 0 2 0 0 0c)1 2 3 0 0 0d)1 0 2 0 3 0(33)有以下程序prt(int *m,int n) int i; for(i=0;in;i+) mi+;main() int a=1,2,3,4,5,i; prt(a,5); for(i=0;i5;i+) printf(%d,ai);程序运行后的输出结果是: ba)1,2,3,4,5,b)2,3,4,5,6,c)3,4,5,6,7,d)2,3,4,5,1,(34)有以下程序main() int a=1,2,3,4

25、,5,6,7,8,9,0,*p; for(p=a;pa+10;p+) printf(%d,*p);程序运行后的输出结果是 aa)1,2,3,4,5,6,7,8,9,0,b)2,3,4,5,6,7,8,9,10,1,c)0,1,2,3,4,5,6,7,8,9,d)1,1,1,1,1,1,1,1,1,1,(35)有以下程序#define p 3#define f(int x) return (p*x*x);main() printf(%dn,f(3+5);程序运行后的输出结果是 da)192b)29c)25d)编译出错(36)有以下程序 main() intc=35;printf(%dn,c&c)

26、; 程序运行后的输出结果是c a)0 b)70 c)35 d)1 (37)以下叙述中正确的是d a)预处理命令行必须位于源文件的开头 b)在源文件的一行上可以有多条预处理命令 c)宏名必须用大写字母表示 d)宏替换不占用程序的运行时间 (38)若有以下说明和定义 uniondt inta;charb;doublec; data; 以下叙述中错误的是c a)data的每个成员起始地址都相同 b)变量data所占内存字节数与成员c所占字节数相等 c)程序段:data.a=5;printf(%fn,data.c);输出结果为5.000000 d)data可以作为函数的实参 (39)以下语句或语句组中

27、,能正确进行字符串赋值的是d a)char*sp;*sp=right!; b)chars10;s=right!; c)chars10;*s=right!; d)char*sp=right!; (40)设有如下说明 typedefstructst longa; intb; charc2; new; 则下面叙述中正确的是c a)以上的说明形式非法 b)st是一个结构体类型 c)new是一个结构体类型 d)new是一个结构体变量 (41)有以下程序 main() inta=1,b; for(b=1;b=8)break; if(a%2=1)a+=5;continue; a-=3; printf(%dn

28、,b); 程序运行后的输出结果是b a)3 b)4 c)5 d)6 (42)有以下程序 main() chars=159,*p; p=s; printf(%c,*p+); printf(%c,*p+); 程序运行后的输出结果是a a)15 b)16 c)12 d)59 (43)有以下函数 fun(char*a,char*b) while(*a!=0)&(*b!=0)&(*a=*b) a+;b+; return(*a-*b); 该函数的功能是d a)计算a和b所指字符串的长度之差 b)将b所指字符串复制到a所指字符串中 c)将b所指字符串连接到a所指字符串后面 d)比较a和b所指字符串的大小 (

29、44)有以下程序 main() intnum44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j; for(i=0;i4;i+) for(j=1;j=i;j+)printf(%c,); for(j=jnext=q-next; b)p-next=p-next-next; c)p-next=r; d)p=q-next; (48)以下对结构体类型变量td的定义中,错误的是c a)typedefstructaa intn; floatm; aa; aatd; b)structaa intn; floatm; td; structaatd; c)struct int

30、n; floatm; aa; structaatd; d)struct intn; floatm; td; (49)以下与函数fseek(fp,0l,seek_set)有相同作用的是d a)feof(fp) b)ftell(fp) c)fgetc(fp) d)rewind(fp) (50)有以下程序 #includestdio.h voidwritestr(char*fn,char*str) file*fp; fp=fopen(fn,w); fputs(str,fp); fclose(fp); main() writestr(t1.dat,start); writestr(t1.dat,end

31、); 程序运行后,文件t1.dat中的内容是b a)start b)end c)startend d)endrt 填空题(每空2分,共40分)(1)某二*树中,度为2的结点有18个,则该二*树中有 19 个叶子结点。(2)在面向对象的方法中,类的实例称为 对象 。(3)诊断和改正程序中错误的工作通常称为 程序调试 。(4)在关系数据库中,把数据表示成二维表,每一个二维表称为 关系 。(5)问题处理方案的正确而完整的描述称为 算法 .(6)以下程序运行时若从键盘输入:10 20 30。输出结果是 10 30 0 .#include main() int i=0,j=0,k=0; scanf(%d

32、%*d%d,&i,&j,&k); printf(%d%d%dn,i,j,k);(7)以下程序运行后的输出结果是 81 .#define s(x) 4*x*x+1main() int i=6,j=8; printf(%dn,s(i+j);(8)以下程序运行后的输出结果是 4599main() int a=3,b=4,c=5,t=99; if(ba&ac)   t=a;a=c;c=t; if(ac&bc)   t=b;b=a;a=t; printf(%d%d%dn,a,b,c);(9)以下程序运行后的输出结果是 10 20 0main() int a,b,c

33、 a=10;b=20;c=(a%b1); printf(%d %d %dn,a,b,c);(10)以下程序运行后的输出结果是0918273645main() char c1,c2; for(c1=0,c2=9;c1c2;c1+,c2-) printf(%c%c,c1,c2); printf(n);(11)已知字符a的ascii代码值为65,以下程序运行时若从键盘输入:b33.输出结果是1b #include stdio.hmain() char a,b; a=getchar(); scanf(%d,&b); a=a-a+0; b=b*2; printf(%c %cn,a,b);(12)以下程序

34、中,fun函数的功能是求3行4列二维数组每行元素中的最大值.请填空. brivoid fun(int, int, int (*)4,int *)main() int a34=12,41,36,28,19,33,15,27,3,27,19,1,b3,i; fun(3,4,a,b); for(i=0;i3;i+) printf(m,bi); printf(n);void fun(int m,int n,int ar4,int *br) int i,j,x; for(i=0;im;i+) x=ari0; for(j=0;jn;j+) if(xarij)  x=arij; 【12】 =x;(

35、13)以下程序运行后的输出结果是 4 3 3 4void swap(int x,int y) int t; t=x;x=y;y=t; printf(%d %d ,x,y);main() int a=3,b=4; swap(a,b); printf(%d %dn,a,b);(14)以下程序运行后的输出结果是 abcfg#include string.hvoid fun(char *s,int p,int k) int i; for(i=p;ik-1;i+) si=si+2;main() char s=abcdefg; fun(s,3,strlen(s); puts(s);(15)以下程序运行后的输出结果是 abcbcc#include string.hmain() char ch=abc,x34; int i; for(i=0;i3;i+) strcpy(xi,ch); for(i=0;i3;i+) printf(%s,&xii); printf(n);(16)以下程序运行后的输出结果是 0 10 1 11 2 12fun(int a) int b=0;static int c=3; b+; c+; return (a+b+c);main() int i,a=5; for(i=0;ik=+i; p+; q-k=i+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论