2010秋江苏省二级C++考试真题 |
|||||
绝密★ 启用前 2010年秋 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试 二级试卷 试卷语种:C++语言 说 明: 1.本试卷包括计算机基础知识部分和程序设计部分,考试时间共12 0分钟; 2.本试卷满分为60分,分选择题和填空题,试卷不分A、B类型; 3.计算机基础知识部分全部是选择题(20分),程序设计部分分为选择题(1 0 分)和填空题(30分)两种; 4.选择题用答题卡答题。每一项有A、B、C、D四个可供选择的答案,请选 择其中一个你认为正确的答案,用HB铅笔涂写在答题卡的相应答题号内。 每选对一项得1分,不选或选错不得分; 5.填空题用答题纸答题。请将答案用蓝、黑色钢笔或圆珠笔填写在答题纸的 相应答题号内,每个答案只占一行,不得换行。每填对一个答案得1分, 不填或填错不得分; 6.请认真填写并仔细核对答题卡和答题纸上的学校名称、准考证号和姓名是 否填写正确。 7.考试结束时将试卷、答题卡和答题纸放在桌上,不得带走。待监考人员收 毕清点后,方可离场。 第一部分 计算机基础知识 1.微电子技术是信息技术领域中的关键技术,它以集成电路为核心.下列有关集成电路的叙述中,错误的是 ___(1)___ A. 现代集成电路使用的半导体材料只能是硅(Si),不能使用其它任何半导体材料 B. 集成度是指集成电路包含的电子元件数目,可分为SSI、MSI、VLSI等 C. Moore定律指出,单块集成电路的集成度平均18--24个月翻一番 D. 我国第二代身份证中嵌入了集成电路芯片,可以实现电子防伪和数字管理功能 2. 数据传输速率是数据通信中重要的性能指标。Gb/s是数据传输速率的计量单位之一,其正确含义是 ___(2)___ 。 A.每秒兆位 B.每秒千兆位 C.每秒百兆位 D.每秒百万位 3. 所谓"变号操作"是指将一个整数变成绝对值相同但符号相反的另一个整数。假设使用补码表示的8位整数x=10010101,则经过变号操作后结果为___(3)___. A.01101010 B.00010101 C.11101010 D.01101011 4. 下列有关PC机主板的叙述中,错误的是 ___(4)___ 。 A. 主板的物理尺寸没有标准,各厂家均可自行定义 B. 主板上包含芯片组,它是PC机各组成部分相互连接和通信的枢纽 C. 主板上包含BIOS和CMOS芯片 D. 主板上包含CPU插座、内存条插槽及其它类型的插槽 5. 下列有关PC机中央处理器(CPU)和内存(内存条)的叙述中,正确的是 __(5)____ . A.PC机所采用的CPU都是Intel公司生产的Pentium系列芯片,其它厂商生产的 CPU都与之不兼容 B. 目前已有双核的微处理器(例如Core 2 Duo),但还没有四核的微处理器 c. 通常来说,DRAM的速度比SRAM的存取速度慢 D. 一般来说,一个内存条上仅有一个DRAM或SRAM芯片 6. 下列有关PC机I/O总线与I/O接口的叙述中,错误的是 __(6)____ . A. 目前PC机中协调与管理总线操作的总线控制器包含在主板上的芯片组中 B. 总线最重要的性能是数据传输速率,其单位通常为MB/s或GB/s C. SATA接口的数据传输速率通常低于USB 2.0的数据传输速率 D. USB连接器有4个引脚,其中一个引脚连接+5V电源 7. 下列有关PC机常用I/O设备的叙述中,错误的是__(7)____。 A. 目前台式机键盘通常有一百零几个按键,笔记本电脑的键盘有八十几个按键 B. 目前流行的鼠标是光电鼠标,其与主机的接口有PS/2与USB两种 C. 宽屏LCD显示器的宽高比为16:9或16:10 D. 打印速度是打印机的重要性能指标,速度单位通常为dpi 8. 下列有关PC机外存储器的叙述中,错误的是___(8)___ 。 A. 目前硬盘的盘片大多为3.5、2.5或1.8英寸,一个硬盘中可有一个或多个盘片 B. 目前有些u盘可以模拟硬盘和光盘存储器启动操作系统 C. 目前光盘存储器主要分为CD、DVD和BD三种,它们均采用红外激光进行读写 D. 目前光驱的速率通常用多少倍速表示 9. 下列有关计算机软件的叙述中,错误的是___(9)___. A. 软件一般是指程序及其相关的数据和文档资料 B. 从软件的用途考虑,软件可以分为系统软件和应用软件,主要的系统软件有操作系统、语言处理系统和数据库管理系统等。 C. 从软件的权益来考虑,软件可以分为商品软件、共享软件和自由软件,共享软件和自由软件均为无版权的免费软件 D.Linux是一种系统软件、自由软件 10.到目前以止,Windows系列操作系统已推出多个版本。在下列版本中,最新的Windows 版本是___(10)___ A. Windows7 B. Windows Me C. Windows XP D. Windows 11.下列有关Windows XP操作系统功能的叙述中,错误的是___(11)___. A. 系统通过"时间片”轮转策略支持多任务处理 B. 系统利用SPOOLing技术进行存储管理 C. 在设备管理中引入了缓冲技术,以减少I/O操作的等待时间 D. 系统支持PnP功能,并按ACPI标准进行电源管理 12.在因特网中某台主机的IP地址为 的主机号为 ___(12)___ 。 A. 20 B. 13.局域网中需要传输的数据必须预先组织成若干数据帧,每一数据帧的格式如下图所示: 上图中最末部分"?”表示的是___(13)___ 。
A.协议信息 B.校验信息 C.冗余信息 D.结束标志 14.目前网络用户接入因特网有多种方式,例如ADSL、HFC等。通过HFC接入因特网时采用的网络是___(14)____。 A. 有线电话网 B. 有线电视网 C. 无线局域网 D. 移动电话网 15.下列网络协议中,直接与电子邮件传输相关的网络协议是___(15)___。 A.FTP B.SMTP C.TELNET D.NNTP 16.下列有关计算机中文本与文本处理的叙述中,错误的是 ___(16)____ A. 西文字符主要是采用ASCII字符集,基本ASCII字符集共有256个字符 B. 我国最早采用的汉字字符集是GB2312,包含6000多个汉字和若干个非汉字字符 C. 无论采用何种方式输入汉字,在计算机中保存时均采用统一的汉字内码 D. 简单文本和丰富格式文本中字符信息的表示相同,区别在于格式信息的表示 17.彩色图像所使用的颜色描述方法称为颜色模型(即颜色空间)。下列四种颜色模型中, 彩色喷墨打印机使用的是___(17)___. A. RGB B. HSB C. YUV D. CMYK 18.文件的扩展名用于标记文件的类型,用户应该尽可能多地知晓各类文件的扩展名,下 列文件中,属于数字声音的文件是______ A. ABC.RM B. ABC.WMA C. ABC.MKV D. ABC.SWF 19.信息系统软件开发瀑布模型包括系统规划、系统分析、系统设计、系统实施和系统维 护等几个阶段。下面各项工作中,属于系统实施阶段的是___(19)___ A.问题定义 B.可行性研究 C.系统测试 D.绘制E-R图 20.下列有关Micmsoft Word 2003和Microsoft Excel 2003软件的叙述中,错误的是___(20)___ A. 利用Word软件编辑文档,可以将其保存为TXT、DOC、RTF和HTM格式文件 B. 利用Word软件编辑文档时,可以统计选定文本的字符数 C. 在Excel软件中,可以打开(导入)TXT、DBF、HTML格式的文件(数据) D. Excel文件可以设置打开权限密码,但不可以单独设置修改权限密码 第二部分 C++语言程序设计 一、选择题(用答题卡答题,答案依次填在21--30答题号内) 21.对于for和do…while循环语句,以下描述正确的是___(21)___。 A.for语句中的循环体至少执行一次 B.两个语句中的循环体可能都不执行 C.do...while语句中的循环体至少执行一次 D.两个语句中的循环体至少执行一次 22.设有说明语句;int hh[4]={2,3,4},*p=hh;则以下选项中存在语法错误的是___(22)___ A.p++; B.hh++; C.(*p)++; D.(*hh)++ 23.以下说明语句中,不存在语法错误的是___(23)___ 。 A.int s=26,this=30; B.int _s1=25,-s2=100; C.int n;cin>>n;int arr[n]; D.char str[]={"I am a student"}; 24.设有语句;int a=10,b=20,c=30;则执行语句;cout<<(a,b,c);其输出结果是___(24)___ A.10 B 25.以下关于运算符重载的叙述中,正确的是___(25)___ 。 A.c++已有的任何运算符都可以重载 B.可以重载C++中没有的运算符 C.运算符重载时可改变其优先级 D.运算符重载时可改变其实现的功能 26.设有函数原型说明;float *f(int,float);,则函数f的返回值为___(26)___ . A.一个实数 B.指向一个实数的指针 C.该函数的地址 D.指向一个函数的指针 27.下列有关构造函数的叙述中,不正确的是___(27)___ . A.可以定义没有构造函数的类 B.任何一个类必定有构造函数 C.类的构造函数可以重载 D.构造函数没有返回值 28.下列有关类成员的叙述中,不正确的是___(28)___ 。 A.当不指定类成员的访问权限时则为私有成员 B.友元函数可访问类中的任一成员 C.指定为public的成员不允许在类外访问 D.成员函数可访问类中的任一成员 29.以下关于类和对象的叙述中,不正确的是___(29)___ . A.不同的类可以产生相同类型的对象 B.类是一种类型,它定义了数据和操作 C.对象是类的实例 D.任一对象必属于某一个类 30.以下关于指针运算的叙述中,不正确的是___(30)___ A.可以将NULL赋给任一指针变量 B.两个同类型的指针变量可进行相等或不等的比较运算 C.指针变量的值加上整常数n,可使该指针指向当前元素后的第n个元素 D-指向同一数组的两个指针变量,在任何情况下,两指针变量相减都是无意义的 二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行) ●基本概念题,共5分 1.每一个类均有构造函数和析构函数,这两个函数中不可以定义为虚函数的是___(1)___ 2.定义了宏;#define F(x,y,z) x/y*z 执行语句;b=F(3+4,2+2,4+4);后变量b的值为___(2)___ 3.函数重载和运算符重载实现的多态性属于___(3)___多态性. 4.为使函数不返回任何值,定义函数时应在函数名前加保留字(关键字)___(4)___ . 5.C++存储类型的四种说明符分别是;auto,static,extern和___(5)___ 。 ●阅读程序题,共13分 6.[程序] (2分) #include <iostream.h> void main(void) { int c2,c3,c5,m=20; c2=c3=c5=0; for(int i=1;i<=m;i++){ if(i==15 || i==14)continue; if(i%2==0) c2++; if(i%3==0) c3++; if(i%7==0) c5++; } cout<<c2<<endl<<c3<<endl<<c5<<endl; } 执行程序后输出的第一行是___(6)___, 第三行是___(7)___ 7.[程序] (2分) #include<iostream.h> int f(int a,int &b,int *c) { a+=b; b+=*c;*c+=a; return (a+b+*c); } void main(void) { int x=5,y=5,z=6,sum; for(int i=0;i<2;i++){ sum=f(x,y,&z); cout<<x<<'\t'<<y<<'\t'<<z<<'\t'<<sum<<'\n'; } } 执行程序后输出的第一行是___(8)___,第二行是___(9)___。 8.[程序] (2分) #include <iostream.h> void f(int s[],int *y) { static int t=3; *y=s[t]; s[t]*=2; t--; } void main(void) { int a[]={1,2,3,4},i; int x=0; for(i=0;i<4;i++){ f(a,&x); cout<<x<<endl; } for(i=0;i<4;i++) cout<<a[i]<<'\t'; cout<<'\n'; } 执行程序后输出的第二行为___(10)___,最后一行为 ___(11)___。 9.[程序](3分) #include<iostream.h> void f(int x,int y) { char res[10]={0}; int i=0,rem; do{ rem=x%y; x=x/y; if(rem<10) res[i]='0'+rem;else res[i]='A'+rem-10; i++; }while(x!=0); i--; for(;i>=0;i--) cout<<res[i]; cout<<endl; } void main(void) { f(23,10); f(45,8); f(50,16); } 执行程序后输出的第一行是___(12)___,第二行是___(13)___,第三行是___(14)___. 10.[程序] (2分) #include <iostream.h> char st[]="Your friend!"; void f2(int ); void f1(int i) { cout<<(st+i)<<endl; if(i<3){ i+=2; f2(i); } } void f2(int i) { cout<<st[i]<<endl; if(i<3){ i+=2; f1(i); } } void main(void) { int i=0; f1(i); } 执行程序后输出的第一行是___(15)___,第二行是___(16)___. 11.[程序](2分) #include<iostream.h> class A{ public: A(char *s){cout<<s<<endl;} A(){ }; }; class B:public A{ //L1 public: B(char *s1,char *s2):A(s1) { cout<<s2<<endl;} }; class C : public A{ //L2 public: C(char *s1,char *s2):A(s1) { cout<<s2<<endl;} }; class D:public B,public C{ public: D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s1,s3) { cout<<s4<<endl;} }; void main(void) { D *ptr= new D("students","study","C++","hard"); delete ptr; } 执行程序后共输出___(17)___行. 若分别将L1行改为;class B : virtual public A{ //L1 L2行改为:class C:virtual public A{ //L2 则执行程序后共输出___(18)___行。 ●完善程序题,共12分 12.以下程序的功能是;从键盘上输入一个大于等于3的整数,将其分解为质因子的乘积并输 出.例如,输入50时,则输出;50;2*5*5;输入45时,则输出;45=3*3*5;输入37时.则出;37=37. [程序] (4分) #include <iostream.h> int prime(int x) //求大于x的最小质数(素数) { int flag=1; x++; while(___(19)___){ int i=2; while(i<x){ if(___(20)___)break; i++; } if(i<x)x++;else flag=0; } return x; } void f(int n) //将n分解为若干个质数之积 { int flag=1; int i=2; //保证i为质数 do{ while(___(21)___){ if(flag==1){ cout<<i; flag=0; } else cout<<'*'<<i; n=n/i; } ___(22)___ }while(i<n); if(n!=1) if(flag==1) cout<<n;else cout<<'*'<<n; } void main(void) { int x; do{ cout<<"请输入一个整数,若小于3则重输;"; cin>>x; }while(x<3); cout<<x<<'='; f(x); cout<<endl; } 13.以下程序的功能是:实现两个字符串拼接,函数strcat(char *s1,char *s2)先将s1所指向的字符串拷贝到s所指向的动态申请的存储空间,接着将s2所指向的字符串拼接s所指向的字符串后面,函数返回拼接后的字符串。 [程序](4分) #include <iostream.h> char *strcat(char *s1,char *s2) { char *s, *p, *q; int len1=0,len2=0; p=s1; while(*p!='\0'){ len1++; p++; } p=s2; while(*p!='\0'){ len2++; p++; } s=q=___(23)___ ; p=s1; for(int i=0;i<len1;i++)*q++=*p++; p=s2; while(___(24)___); ___(25)___ } void main(void) { char s1[]="visual"; char s2[]="is esay"; char *s; s=___(26)___; cout<<s<<endl; delete []s; } 14.下面程序的功能是;将两个有序链表(降序捧序)合并为一个有序链表,函数merge(node *h1,node *h2)将由h1和h2分别指向的己排序的两个链表,合并为一个依然有序的链表。注意;对于数据大小相同的结点,都要保留在合并后的链表上。主函数产生两条已降序排序的链表,并输出合并后链表上的数据值. 例如,原链表上各结点的数据依次为; h1:15,9,8,7,3 h2:15,12,10,7,3,2 合并后得到的新链表为;15,15,12, 10,9,8,7,7,3,3,2 【程序](4分) #include<iostream.h> struct node{ int data; node*next; }; node *merge(node *h1,node *h2) { if(h1==NULL) return h2; if(h2==NULL) return h1; node *h=NULL; if(___(27)___){ h=h1; h1=h1->next; } else{ h=h2; h2=h2->next; } node *p=h; while(___(28)___){ if(h1->data >=h2->data){ p->next=h1; p=h1; h1=h1->next; } else{ p->next=h2; p=h2; h2=h2->next; } } if(h1 !=NULL) ___(29)___; else if(h2!=NULL) p->next=h2; return h; } void main(void) { node a[5]={{15},{9},{8},{7},{3}}; node b[6]={{15},{12},{10),{7},{3},{2}}; node *h,*h1,*h2,*p; int i; h1=a; h2=b; for(i=0;i<4;i++) a[i].next=&a[i+1]; //形成a链表 a[4].next=NULL; for(i=0;i<5;i++) b[i].next=&b[i+1]; //形成b链表 b[5].next=NULL; ___(30)___ ; p=h; while(p){ cout<<p->data<<'\t'; p=p->next; } cout<<endl; } 答案: 1.A 2.B 3.D 4.A 5.C 6.C 7.D 8.C 9.C 10.A 11.B 12.D 13.B 14.B 15.B16.A 17.D 18.B 19.C 20.D (21)C (22)B (23)D (24)C (25)D (26)B (27)A (28)C (29)A (30)D 二:填空 (1)构造 (2)17 (3)编译 (4)void (5)register (6)9 (7)1 (8)5 11 16 37 (9)5 27 32 75 (10)3 (11)2 4 6 8 (12)23 (13)55 (14)32 (15)Your friend! (16)u (17)5 (18)3 (19)flag (20)x%i==0 (21)n%i==0 (22)i++ (23)new char[len1+len2+1] (24)*q++=*p++ (25)return s (26)strcat(s1,s2) (27)h1->data>h2->data (28)h1!=0 && h2!=0 (29)p->next=h1 (30)h=merge(h1,h2)
|
|||||