2009年春江苏省二级VC++考试试题与答案 |
绝密★启用前 2009年春 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试 二级试卷 试卷语种: Visual C++ 说 明: 1.本试卷包括计算机基础知识部分和程序设计部分,考试时间共120分钟 2.本试卷满分为60分,分选择题和填空题,试卷不分A、B类型; 3.计算机基础知识部分全部是选择题(20分),程序设计部分分为选择题(10分)和填空题(30分)两种; 4.选择题用答题卡答题。每一项有A、B、C、D四个可供选择的答案,请选择其中一个你认为正确的答案,用HB铅笔涂写在答题卡的相应答题号内。每选对一项得1分,不选或选错不得分; 5.填空题用答题纸答题。请将答案用蓝、黑色钢笔或圆珠笔填写在答题纸的相应答题号内,每个答案只占一行,不得换行。每填对一个答案得1分,不填或填错不得分; 6.请认真填写并仔细核对答题卡和答题纸上的学校名称、准考证号和姓名是否填写正确。 7.考试结束时将试卷、答题卡和答题纸放在桌上,不得带走。待监考人员收点 第一部分计算机基础知识 1. 在下列有关现代信息技术的一些叙述中,正确的是 1 。 A.集成电路是20世纪90年代初出现的,它的出现直接导致了微型计算机的诞生 B.集成电路的集成度越来越高,目前集成度最高的已包含几百个电子元件 C.目前所有数字通信均不再需要使用调制解调技术和载波技术 D.光纤主要用于数字通信,它采用波分多路复用技术以增大信道容量‘ . 2. 最大的10位无符号二进制整数转换成八进制数是 2 .。 A.1023 B.1777 C.1000 D.1024 3. 在下列有关目前PC机CPU的叙述中,错误的是 3 。 A.CPU芯片主要是由Intel公司和AMD公司提供的 B."双核"是指PC机主板上含有两个独立的CPU芯片 C.Pentium 4微处理器的指令系统由数百条指令组成 D.Pentium 4微处理器中包含一定容量的Cache存储器 4. 在下列有关当前PC机主板和内存的叙述中,正确的是 4 。 A.主板上的BIOS芯片是一种只读存储器,其内容不可在线改写 B.绝大多数主板上仅有一个内存插座,因此PC机只能安装一根内存条 C.内存条上的存储器芯片属于SRAM(静态随机存取存储器) D.目前内存的存取时间大多在几个到十几个ns(纳秒)之间 5. 在下列有关PC机辅助存储器的叙述中,正确的是 5 。 A.硬盘的内部传输速率远远大于外部传输速率 B.对于光盘刻录机来说,其刻录信息的速度一般小于读取信息的速度 C.使用USB 2.0接口的移动硬盘,其数据传输速率大约为每秒数百兆字节 D.CD-ROM的数据传输速率一般比USB 2.0还快 6. 在下列PC机I/O接口中,数据传输速率最快的是 6 。 A.USB 2.0 B.IEEE-1394 C.IrDA (红外) D.SATA 7. 计算机软件可以分为商品软件、共享软件和自由软件等类型。在下列相关叙述中,错误的是 7 。 A.通常用户需要付费才能得到商品软件的使用权,但这类软件的升级总是免费的 B.共享软件通常是一种"买前免费试用"的具有版权的软件 C.自由软件的原则是用户可共享,并允许拷贝和自由传播 D.软件许可证是一种法律合同,它确定了用户对软件的使用权限 8. 人们通常将计算机软件划分为系统软件和应用软件。下列软件中,不属于应用软件类型的是 8 A.AutoCAD B.MSN C.Oracle D.Windows Media Player 9. 在下列有关Windows 98/2000/XP操作系统的叙述中,错误的是 9 。 A.系统采用并发多任务方式支持多个任务在计算机中同时执行 B.系统总是将一定的硬盘空间作为虚拟内存来使用 C.文件(夹)名的长度可达200多个字符 D.硬盘、光盘、优盘等均使用FAT文件系统 10. 在下列有关算法和数据结构的叙述中,错误的是 10 。 A.算法通常是用于解决某一个特定问题,且算法必须有输入和输出 B.算法的表示可以有多种形式,流程图和伪代码都是常用的算法表示方法 C.常用的数据结构有集合结构、线性结构、树形结构和网状结构等 D.数组的存储结构是一种顺序结构 11•因特网的IP地址由三个部分构成,从左到右分别代表 11 。 A.网络号、主机号和类型号 B.类型号、网络号和主机号 C.网络号、类型号和主机号 D.主机号、网络号和类型号 12•在下列有关ADSL技术及利用该技术接入因特网的叙述中,错误的是 12 。 A.从理论上看,其上传速度与下载速度相同 B.一条电话线上可同时接听/拨打电话和进行数据传输 C.利用ADSL技术进行数据传输时,有效传输距离可达几公里 D.目前利用ADSL技术上网的计算机一般需要使用以太网网卡 13.人们往往会用"我用的是 指的是数据通信中的 13 指标。 A.最高数据传输速率 B.平均数据传输速率 C.每分钟数据流量 D.每分钟IP数据包的数目 14•计算机局域网按拓扑结构进行分类,可分为环型、星型和 14 型等。 A.电路交换 B.以太 C.总线 D.对等 15.网络信息安全主要涉及数据的完整性、可用性、机密性等问题。保证数据的完整性就是 15 。 A.保证传送的数据信息不被第三方监视和窃取 B.保证发送方的真实身份 C.保证传送的数据信息不被篡改 D.保证发送方不能抵赖曾经发送过某数据信息 16.某计算机系统中,西文使用标准ASCII码、汉字采用GB2312编码。设有一段纯文本,其机内码为CB F5 DO B4 50 43 CA C7 D6 B8,则在这段文本中含有: 16 。 A.2个汉字和1个西文字符 B.4个汉字和2个西文字符 C.8个汉字和2个西文字符 D.4个汉字和1个西文字符 17.以下关于汉字编码标准的叙述中,错误的是 17 。 A.GB 2312标准中所有汉字的机内码均用双字节表示 B.我国台湾地区使用的汉字编码标准BIG 5收录的是繁体汉字 C.GB 18030汉字编码标准收录的汉字在GB 2312标准中一定能找到 D.GB 18030汉字编码标准既能与UCS(Unicode)接轨,又能保护已有中文信息资源 18.若波形声音未进行压缩时的码率为64kb/s,已知取样频率为8kHz,量化位数为8,那么它的声道数是 18 。 A.1 B 19.从信息处理的深度来区分信息系统,可分为业务处理系统、信息检索系统和信息分析系统等。在下列几种信息系统中,不属于业务处理系统的是 19 。 A.DSS B.CAI C.CAM D.OA 20.在下列有关信息系统开发、管理及其数据库设计的叙述中,错误的是 20 。 A.常用的信息系统开发方法可分为结构化生命周期方法、原型法、面向对象方法和CASE方法等 B.在系统分析中常常使用结构化分析方法,并用数据流程图和数据字典来表达数据和处理过程的关系 C.系统设计分为概念结构设计、逻辑结构设计和物理结构设计,通常用E-R模型作为描述逻辑结构的工具 D.从信息系统开发过程来看,程序 21.下列关于"for(e1;e2;e3) s1;"的描述中不正确的是______ A.存在"for(;;) s1;"的情况 B.表达式e1和e3可为空,但e2不能为空 C.表达式e2的值可增可减 D.循环体s1可以为空,但分号(;)必须有 22.下列函数定义中存在语法错误的是______ A.void f5();f6(){f5;cout<<200;} void f5(){cout<<100;} B.void f3(){cout<<100;} void f4(){tout<<200;} C.void f7(int a){if(a)f7(--a);cout<””;} D.void f1(){cout<<100;void f2(){tout<<200;}} 23.设有说明语句; int a=7,b=12,e; 以下表达式选项中,e值为2的是_______ A.e=b%=(a-a%5) B.e=b%=(a%=5) C.e=b%=b+1-a%5 D.e=(b%=a)-(a%=5) 24.以下叙述中不正确的是_____ A.一个函数中可以有多个return语句 B.一个函数中可以没有return语句 C.一个return语句可返回多个值 D.一个return语句可不返回值 25.以下双目运算符中要求两个操作数均为整型的运算符是______。 A.|| B.&& C./ D % 26.以下对break语句的描述中,不正确的是______ A.break语句可用在循环语句中,其作用是结束本层循环的执行 B.break语句可用在switch语句中,其作用是结束该switch语句的执行 C.break语句可用在if语句中,其作用是结束该if语句的执行 D.break语句在同一循环体中可以多处使用 27.以下对类的析构函数的叙述中,正确的是______ A.析构函数完成类的初始化 B.析构函数完成对象的初始化 C.析构函数完成撤销对象的相关处理 D.析构函数和成员函数一样可以显式地调用 28.以下有关多态性的叙述中不正确的是________ 。 A.C++语言的多态性分为编译时的多态性和运行时的多态性 B.编译时的多态性通过重载函数来实现 C.运行时的多态性通过虚函数来实现 D.函数重载和虚函数均可实现编译时的多态性和运行时的多态性 29.设已定义了一个类名为MyClass的类: MyClass sl,*s2,**s3,*s4 E2]; 当该语句执行后,调用该类的构造函数的次数是 _______ A.1 B. 30.在公有派生的情况下,派生类中定义的成员函数能访问其基类的_________。 A.公有成员和保护成员 B.公有成员和私有成员 C.保护成员和私有成员 D.公有成员、保护成员和私有成员 二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行) ●基本概念题(共5分) 1.以下循环语句的循环体的执行次数为 ( ) 。 for(int s=0,j=1;j<=10;s+=j);j++; 2void类型的指针是其指向变量的数据类型是不固定的,对该类型指针进行操作时,通常应进行________ 3.C++变量的存储类型有自动类型、静态类型、 _______和__________。 4.c++函数的参数传递方式有三种: (_________) 、指针传递和引用传递。 ●阅读程序题(共13分) 5.[程序](2分) #include void fa(int&a,int&b) {int t=a;a=b;b=t;} void fb(int a,int b) { int t=a;a=b;b=t;} void main(void) {int c[2]={100,200},d[2]={300,400}; fa(c[0],c[1]); cout< rb(d[0],d[1]); cout< } 程序输出的第一行是( ) ,第二行是( )。 6.[程序](2分) #include void main(void) { int n=0,m=0; for(int i=0;i<3;i++) for(int j=0;j<3;j++) if(j>=i)n++;m++; cout< }. 程序输出的第一行是( ) ,第二行是( ) 。 7.[程序](2分) #include int a=10; void main(void) { int a=20,b=30; { int a=0,b=0; for(int i=1;i<4;i++){ a=a+b;b=::a+b; } cout<程序输出的第一行是 ( ) ,第二行是( ) 。 8.[程序](3分) #include void f2(int x[],int n); void fl(int x[],int n) { cout< x[n]++; if(n<3){n=n+2;f2(x,n);} } void f2(int x[],int n) {cout< x[n]++; if(n<3){n=n+3;fl(x,n); } } void main(void) {int y[7]={3,4,5,6,7,8,9}; f1(y,0); for(int i=0;i<5;i++)cout< cout< } 程序输出的第一行是( ) ,第二行是( ) ,第三行是( ) 9.[程序](2分) #include class A{ int n; public: static int s; A(int a){n=a;} void add(){s+=n;} void print(){cout< int get(){return n;} }; int A::s=0; class B:public A{ int y; public: B(int b,int c):A(c){y=b;} void p(){cout< }; void main(void) { A a1(10),a2(20); B b1(5,15),b2(10,15); a1.add();a2.add();b1.add();b2.add(); a1.print();a2.print(); b1.p();b2.p(); } 程序输出的第一行是( ) ,第三行是( )。 10.[程序](2分) #include class A{ int x; public: A(int a){x=a;} virtual void print(){cout<<"x="< void fun(){print();} }; class B:public A{ int y: public: B(int a,int b):A(a){y=b;} void print(){cout<<"y="< void fun(){print();} }; class C:public B{ int z; public: C(int a,int b,int C):B(a,b){z=c;} void print(){cout<<"z="< void fun(){print();} }; void main(void) { A a1(5),*p1; B bl(10,15); C c1(20,30,40); a1.fun();b1.fun();c1.fun(); pl=&b1; pl->fun();p1=&c1;pl->fun(); } 程序输出的第四行是() ,第五行是( ) ●完善程序题(共12分) 11.以下程序的功能是:采用插入排序的方法将数组s1中的元素升序排序,并删除重复的元 素(值相同的元素只保存一个)。函数insert(int p[],int c,int x)将整数x插入到已排序 的数组P中(并仍保持升序),参数c为数组P的元素个数。函数sort(int s[],int n)将数 组s中的数据按升序排序。先将s[0]放到临时数组tern[0]中,然后,依次从s中取一个 元素,若该元素不在数组tem中,则调用函数insert()将该元素插入到数组tern中。最后 将数组tem拷贝到数组s中。 [程序](4分) #include void insert(int p[],int c,int x) { for(int i=0;i if(p[i]>x)break; if(i==c)_____________; else{for(int J=c;j>i;j--)p[j]=P[j-1];________;} } int sort(int s[],int n) {int tem[200]; int len,j,k; tem[O]=s[O]; len=1: //len记录数组tern中的元素个数 for(j=1;j for(k=0;k if(s[j]==tem[k])_____________; } if(k>=len){ insert(_________);len=len+1; } } for(j=0;j retum len; //返回数组的大小 } ’ void main(void) {int s1[200]={34,22,11,55,66,30,22,100,66}; int n;n=sort(s1,9); for(int i=0;i cout<<'\n'; } 12.以下程序通过重载运算符+、*实现集合(用数组表示)的并(u),交(n)运算。集 的元素不能相同。两个集合的并包含了两个集合的所有元素。两个集合的交仅包含 集合中共同存在的元素。设sl={1,2,3,4,5,6},s2={3,5,7,9,11}。s1 u s2={1, 4,5,6,7,9,11},s1 n s2={3,5}。 [程序](4分) #include class Set{ float x[20]; int size; public: int In(float e,int n) //元素e已在集合x中,则返回1,否则返回0 { int flag=0; for(int i=o;i return flag; } Set(float a[],int n) ‘ { x[0]=a[0];size=1; for(int i=1;i if(In(a[i],size)==0){ (________) ; size++; } } Set(){size=0;} Set operator +(Set); Set operator *(Set); Set &operator =(Set&); int GetSet(float y[]) { for(int i=0;i return size; } void print() { for(int i=0;i cout<<'\n'<<"size=”< }; } Set Set::operator +(Set a) { Set tem; for(int i=0;i tem.size=size; for(i=0;i if(tem.In(a.x[i]i,tern.size)==0)tem.x[tem.size++]=a.x[i]; return tem; } Set Set::operator *(Set a) { Set tem; tem.size=0; for(int i=0;i if(a.In(x[i],a.size)==1) tem.x[tem.size++]=x[i]; retum tem; } Set &Set::operator =(Set &a) {for(int i=0;i (__________) ; return *this; } void main(void) {float b1[6]={1,2,3,4,5,6}; float b2[6]={3,5,7,9,11},b3[6]; Set a1(b1,6),a2(b2,5),a3,a4,a5; a3=a1+a2;a3.print(); a5=a1*a2;a5.print(); int n=a1.GetSet(b3); for(int i=0;i cout<<'\n'< } 13,以下程序的功能是:先产生一条带头结点(链表的第一个结点不存储数据,而是存储链表的 表长,即结点个数)的无序链表,每一个结点包含一个整数。然后将该链表分成两条带头结 点的链表:_条链表上的数据均为偶数,另一条链表上的数据均为奇数。函数Cleate()创建 了一条带有头结点的单链表。函数Print()输出链表上各结点的值。函数Split()把链表 分割成两条链表,值为奇数的结点保留在原链表上,值为偶数的结点移到另一个链表中, 并将指向偶数链表的头指针返回。 [程序](4分) #include struct Node{ int data; struct Node *next; }; Node *Create(void) //创建一条带有头结点的单向链表 { Node *p1,*head; int a; //创建头结点,头结点的数据域储存链表的结点个数 head=new Node; head->data=0;head->next=0: cout<<"创建一条无序链表,请输人数据,以-l结束,\n"; cin>>a; while(a!=-1){ p1=new Node; pl->data=a;pl->next=head->next; _________; head->data++; cin>>a: } (___________) ; } void Print(Node *h) { h=h->next; while(h){eout< cout< } Node *Split(Node *&link) //link是-个带头结点的单链表 {Node *pl=link,*p2=link->next,*head; head=new Node; head->data=0;head->next=0; while(p2){ if(p2->data%2==O){ p1->next=p2->next;link->data--; p2->next=head->next; __________ ; head->data++; p2=p1->next; } else{pl=p2; ___________;} } return(head); } void main(void) { Node *h1,*h2; hl=Create(); cout<<"输入的链表为:"< Print(h1); h2=Split(h1); cout<<"分割后的奇数链表为:"< Print(h1); cout<<"分割后的偶数链表为:"< Print(h2); }
一、选择题 |