暂缺答案 ×
江苏计算机等级考试二级Visual C++真题2012年春
(总分60, 做题时间120分钟)
说 明:

1.本试卷包括计算机基础知识部分和程序设计部分,考试时间共12 0分钟;

2.本试卷满分为60分,分选择题和填空题,试卷不分A、B类型;

3.计算机基础知识部分全部是选择题(20分),程序设计部分分为选择题(1 0分)和填空题(30分)两种;

4.选择题用答题卡答题。每一项有A、B、C、D四个可供选择的答案,请选择其中一个你认为正确的答案,用HB铅笔涂写在答题卡的相应答题号内。每选对一项得1分,不选或选错不得分;

5.填空题用答题纸答题。请将答案用蓝、黑色钢笔或圆珠笔填写在答题纸的相应答题号内,每个答案只占一行,不得换行。每填对一个答案得1分,不填或填错不得分;

6.请认真填写并仔细核对答题卡和答题纸上的学校名称、准考证号和姓名是否填写正确。

7.考试结束时将试卷、答题卡和答题纸放在桌上,不得带走。待监考人员收毕清点后,方可离场。
第一部分 计算机基础知识
1. 
下列有关信息产业、信息化、信息社会等相关的叙述中,错误的是________。
A 信息产业是指生产制造信息设备的制造业,不包含信息服务行业
B 信息化是一个推动人类社会从工业社会向信息社会转变的过程
C 在信息社会中,信息将借助材料和能源的力量产生重要价值而成为社会进步的基本要素
D 目前我国还处于工业化的中期阶段,需要大力推进信息化与工业化的融合式发展
2. 
下列有关数字技术与微电子技术的叙述中,错误的是________。
A 数字技术的处理对象是"比特",它只有两种状态(取值)
B 在计算机中,经常使用称为"触发器"的双稳态电路来存储比特,一个触发器可以存储1个比特
C 微电子技术以集成电路为核心,现代集成电路所使用的半导体材料主要是硅
D 所有的IC卡均只能存储数据,不能处理和收发数据
3. 
下列有关计算机发展与分类的叙述中,错误的是________
A 人们通常根据计算机采用的主要电子元器件的不同,将计算机的发展划分为四代
B 由于20世纪90年代计算机网络的发展,计算机应用进入了"网络计算模式"
C 目前所有的服务器产品均为小型计算机、大型计算机或巨型计算机,PC机不能作为网络服务器使用
D 美国的HP、DELL和我国的联想、方正、同方等均是知名的PC机品牌
4. 
下列有关PC机CPU的叙述中,错误的是________。
A 长期以来,多数PC机采用Intel公司生产的CPU芯片
B Intel Core i7是高端的CPU产品,其中i7表示它采用7个内核的结构
C 目前部分PC机使用AMD公司的CPU芯片,它们与Intel公司的CPU芯片指令系统基本一致,因此这些PC机相互兼容
D 目前我国也能设计、生产PC机的CPU芯片
5. 
下列有关PC机主板上CMOS和BIOS的叙述中.错误的是________。
A 主板上的CMOS芯片是一种易失性存储器,它通常使用电池供电
B BIOS是存储在主板上闪烁存储器中的一组程序.每次机器加电时总是首先执行其中的程序
C CMOS设置程序存储在CMOS存储器中,它与BIOS无关
D CMOS芯片中存储了许多配置信息,包括当前的日期与时间、开机密码等
6. 
下列是PC机使用的四种外设接口,其中最新的一种是________。
A USB3.0
B IEEE.1394b
C IDE
D 红外线接口(IrDA)
7. 
下列有关扫描仪与数码相机的叙述中.错误的是________
A 扫描仪分为平板扫描仪、手持扫描仪、滚筒扫描仪等多种类型.相对来说使用平板扫描仪的较多
B 光学分辨率是扫描仪的主要性能指标,其单位为dpi
C 目前数码相机的成像芯片为CCD或CMOS.它可以将光信号转换为电信号
D 数码相机所拍摄的数字图像以GIF格式存储在存储卡中
8. 
光盘分为多种不同类型,其容量大小差异较大。对于单面单层、80mm的DVD光盘来说.其容量大约为________。
A 670MB
B 1.46GB
C 4.7GB
D 25GB
9. 
通用的应用软件可以分为若干类型,例如文字处理软件、信息检索软件、媒体播放软件等。在下列软件中,不属于文字处理软件的是________
A WPS
B Adobe Acrobat
C Word
D Access
10. 
下列有关Windows XP操作系统的叙述中,错误的是________
A Windows XP分为多种版本.例如家庭版、专业版
B Windows xP采用并发多任务方式支持多个任务的执行
C Windows XP一般采用按时间片轮转的策略调度处理器来执行每个任务
D 虚拟存储器由主板上的RAM、ROM及显示卡的显存联合组成,它与硬盘无关
11. 
在下列有关算法的叙述中.错误的是________
A 算法的设计一般采用由细到粗、由具体到抽象的方法
B 算法设计方法有多种,例如枚举法、迭代法、递归法等等
C 算法的表示可以有多种形式,例如文字说明、流程图表示、伪代码等
D 一个问题的解决往往可以有多种不同的算法
12. 
下列有关Microsoft Office 2000(及其后续版本)的叙述中.错误的是________
A 由Word、Excel、PowerPoint创建的文档,均可以设置打开文件的密码
B 在Word文档中,可以插入声音和视频对象
C ExceI工作簿可以包含的工作表数量、工作表的行数与列数均没有限制,用户可以根据需要无限制地增加
D 由PowerPoint创建的演示文稿,用户可以直接将其保存为HTML文件(即网页)
13. 
在下列有关调制解调技术、多路复用技术的叙述中.错误的是________
A 调制与解调技术中使用的"载波"信号,通常是低频正弦波信号
B 调制技术可以分为幅度调制、频率调制和相位调制
C 多路复用技术的作用主要是提高传输线路的利用率,降低通信成本
D 多路复用技术可以分为时分复用、频分复用等类型
14. 
目前IPv4协议只有大约36亿个地址.很快就会分配完毕。新的IPv6协议把IP地址的长度扩展到________几乎可以不受限制地提供IP地址。
A 32位
B 64位
C 128位
D 256位
15. 
下列与IP地址相关的叙述中.错误的是________。
A IP地址由三个部分组成,从左到右分别代表类型号、网络号和主机号
B 因特网上的每台在线主机都必须有IP地址
C 通过ADSL上网时,用户主机的IP地址通常是由因特网服务提供者动态分配的
D 网络中的路由器不需要设置IP地址
16. 
通常所说的TCP/IP协议.是指由100多个协议组成的协议系列(包含下列几个协议)。在下列协议中。实现文件传输服务主要依赖________。
A NNTP协议
B FTP协议
C Telnet协议
D SMTP协议
17. 
目前有线电视(CATV)系统已经广泛采用数字技术传输电视节目。下列是有关数字有线电视的相关叙述.其中错误的是________。
A 数字有线电视采用光纤同轴电缆混合网.其主干线部分采用光纤连接到"小区"
B 数字有线电视网络依赖于时分多路复用技术
C 借助数字有线电视网络接入因特网.需要专用的Cable MODEM或互动式机顶盒
D 借助数字有线电视网络接入因特网的多个终端用户共享连接段线路的带宽
18. 
下列有关文本与文本处理的叙述中,错误的是________。
A 文本信息在计算机中存储时,汉字均为双字节编码,非汉字字符均为单字节编码
B 文本输入可以是键盘输入,也可以是联机手写输入、语音输入等
C DOC文档、HTML网页、PDF文档均为丰富格式文本,但它们的格式标记方式不同
D 文本中的字符可以使用不同的字体,不同字体的同一个汉字,其机内码相同
19. 
在未压缩的情况下.存储一幅分辨率为1024×1024的24位彩色数字图像需要的存储空间大约为________
A 24KB
B 3MB
C 8MB
D 24MB
20. 
文件扩展名通常用于标识文件的类型。下列4个文件扩展名中,属于数字波形声音文件的是________。
A .WAV
B .MIDI
C .AVI
D .MPG
第二部分 C++语言程序设计

一、选择题(用答题卡答题,答案依次填在21--30答题号内)
21. 
以下C++语句中,不存在语法错误的是________。
A int St=8,this=2;float fH=3;
B int _56=7,a4=1;float FLOAT=2.5;
C int n;cin>>n;int b[n];
D char st[9]={"a string!"};
22. 
以下关于C++虚函数的叙述中,正确的是________。
A 虚函数的类不可作为类的基类
B 可以不定义虚函数的函数体
C 可以定义含有虚函数的类的对象
D 不可定义含有虚函数的类的指针
23. 
设有变量说明"int a,b;float x,y;",以下C++语句中存在语法错误的语句是________。
A y=x%a;
B y=x+++x;
C y=a+b>x+y?a:b;
D a=x+y;
24. 
以下有关C++宏定义的说明中,不正确的是________。
A 是以#开头的行
B 一行中可以存在一条以上的宏定义
C 一条宏定义占一行
D 宏定义可放在函数体内,也可放在函数定义之外
25. 
以下有关C++析构函数的叙述中,不正确的是________。
A 析构函数名必须以字符~开头
B 不可定义析构函数的形式参数
C 析构函数由系统自动调用
D 可以重载析构函数
26. 
以下有关C++静态数据成员的描述中,正确的是:________。
A 静态数据成员不能被成员函数调用
B 静态数据成员要在构造函数内初始化
C 静态数据成员必须为公有的
D 静态数据成员为该类的所有对象所共有的
27. 
C++中,函数重载是指两个或两个以上的函数,其函数名________。
A 不同,但形参的个数或类型相同
B 相同,但返回值类型不同
C 相同,但形参的个数或类型不同
D 相同,但必定是形参的个数相同且其类型不同
28. 
以下有关继承的叙述中,正确的是________。
A 派生类继承基类的所有成员
B 派生类继承基类的所有非私有成员
C 派生类不继承基类的析构函数
D 虚基类不能解决多继承产生的二义性
29. 
以下有关指针变量的运算中,不正确的是________。
A 一个指针变量可以加减一个整数
B 两个指针变量在一定条件下可进行关系运算
C 可将NULL赋给任一指针变量
D 两个指针变量可进行加法运算
30. 
有关函数调用的描述中,不正确的是________。
A 函数调用语句可实现任何函数的调用
B 一个函数调用可作为另一函数调用的实参
C 函数调用均可出现在表达式中
D 函数之间允许嵌套调用
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)

基本概念题,共5分
1. 
在C++中,*既是单目运算符,又是双目运算符。*作为单目运算符时,其功能是___(1)___,*作为双目运算符时,其功能是___(2)___ 。
2. 
在类的派生过程中,将基类说明为虚基类的方法是在基类的类名前加上关键字___(3)___ 。
3. 
C++语言规定,所有函数说明都必须指明返回值类型,没有返回值的函数应该说明为___(4)___类型的函数。
4. 
C++语言提供的基本控制结构分为三种类型;顺序结构、选择结构和___(5)___ 。
阅读程序题,共13分
5. 
[程序](2分) #include<iostream.h> void main(void) { int x=0,y=0; for(int i=0;i<4;i++){ x++; for(int j=0;j<5;j++){ if(j%2){y++;continue;} x++; } } cout<<"x="<<x<<endl; cout<<"y='<<y<<endl; } 执行以上程序后,输出的第一行是___(6)___,第二行是___(7)___。
6. 
[程序](3分) #include<iostream.h> int func(int a,int b) { static int k; int result; k=k+1; if(a%b==0) result=a; else result=func(a+a/k,b); cout<<a<<'\t'<<k<<endl; return result; } void main(void) { cout<<func(3,9)<<endl; } 执行以上程序后,输出的第一行是___(8)___,第二行是___(9)___,第三行是___(10)___。
7. 
[程序](3分) #include<iostream.h> void fun(int *s,int n1,int n2) { while(n1<n2){ int t=*(s+n1); *(s+n1)=*(s+n2); *(s+n2)=t; n1++; n2--; } } int f2(int *p,int n) { for(int s=0,i=0;i<n;i++) s+=p[i]; return s/n; } void main(void) { int a[5]={10,12,14,16,11),b[2]; fun(a,0,3); b[0]=f2(a,4); fun(a,2,4); b[1]=f2(a,5); cout<<"b[0]="<<b[0]<<'\n'; cout<<"b[1]="<<b[1]<<'\n'; for(int i=0;i<5;i++) cout<<a[i]<<'\t'; cout<<'\n'; } 执行以上程序后,输出的第一行是___(11)___,第二行是___(12)___,第三行是___(13)___
8. 
[程序] (2分) #include<iostream.h> int fun(int n,int k) { if(k>1)return fun(n/10,k-1); else return(n%10); } void main(void) { int x=fun(987,1); int y=fun(45678,3); cout<<"x="<<x<<endl; cout<<"y="<<y<<endl; } 执行以上程序后,输出的第一行是___(14)___,第二行是___(15)___。
9. 
[程序] (3分) #include<iostream.h> class Base{ public: Base(int a,int b){x=a;y=b;) void display(); virtual void f1(){cout<<x+y<<'\n';} virtual void f2(){cout<<x-y<<'\n';} void f3(){cout<<x*y<<'\n';} private; int x,y; }; void Base::display() { f1(); f2(); f3(); } class Sclass;public Base{ public: Sclass(int a,int b,int c,int d):Base(a,b) {m=c;n=d;} void f2(){cout<<m-n<<'\n';} void f3(){cout<<m*n<<'\n';} private: int m,n; }; void main(void) { Sclass s1(20,10,60,20); Base *p=&s1; p->display(); } 执行以上程序后,输出的第一行是___(16)___,第二行是___(17)___,第三行是___(18)___
●完善程序题,共12分
10. 
以下程序的功能是;输入一个十进制正整数m,找出所有小于它并与其互质的正整数n,并要求n不是素数(素数只能被1和n本身除尽)。m和n互质是指这两个正整数的最大公约数为1。 [程序](4分) #include<iostream.h> int prime(int x) { int flag=1; for(int i=2;i<=x/2;i++) if(x%i==0){ ___(19)___ ; break; } return flag; } int gcd(int m,int n) { for(int i=2;i<=n;i++) if(___(20)___) break; if(i<=n) return 0; ___(21)___ ; } void main(void) { int m,i,count=0; cout<<"请输入一个正整数;"; cin>>m; cout<<"小于"<<m<<"并与其互质的非素数有;"<<endl; for(i=M-1;i>=2;i--) if(prime(i)==0) if(___(22)___){ cout<<"("<<m<<','<<i<<')'<<'\t'; count++; } cout<<'\n'; cout<<'互质数共有;'<<count<<'个'<<'\n'; }
11. 
以下程序的功能是;从键盘输入一行字符串,先求出字符串中ASCII值为最小的字符,记录该字符所在字符串中的位置,并将该字符前的所有字符顺序后移一个字符位置,然后将最小的字符放在字符串的开始位置上,输出最小的字符在原字符串中的位置。例如,输入字符串"bcdfae",最小字符"a"在该字符串中的位置是4,移动后输出"abcdfe"。 [程序](4分) #include<iostream.h> int fun(char *str) { char min,*q,*p; int m=0; ___(23)___ ; min=*p; p++; while(*p!='\0'){ if(min>*p){ ___(24)___ ; q=p; m=p-str; } p++; } p=q; while(p>str){ ___(25)___ ; p-- ; } *p=min; ___(26)___ ; } void main(void) { char str[200]; int n; cin.getline(str,190); cout<<'输入字符串为;'<<str<<'\n'; n=fun(str); cout<<"最小字符在输入串中的位置为:"<<n<<'\n'; cout<<"处理后的字符串为;"<<str<<'\n'; }
12. 
以下程序的功能是;利用单向链表统计一段英文单词或数字串中单词或数字串出现的频率。假设每行长度不超过80个字符,单词、数字串之间由空格、\t或\n分隔,一个单词或数字串的长度不超过20个字符。从键盘上输入任意一段英文单词或数字串,并以单词stop结束输入。函数create()依次读入一个单词或数字串后,首先与链表各节点上的数据(单词或数字串)进行比较,若已存在,则将该数据出现的次数加1;否则,构建一个新的节点,将该数据作为该新节点的数据域,并插入已建链表的尾部。当读取到stop时,结束链表的建立。函数print()输出链表各节点的值,函数dele_list()依次删除链表上的节点。例如,执行以下程序时,从键盘上输入下面一段英文单词或数字串; abs 345 happy good yes no 345 it we are yes no 45 stop 程序统计后的输出为; abs(1)345(2)happy(I)good(1)yes(2)no(2)it(1)we(1)are(1)45(1) [程序](4分) #include<iostream.h> #include<string.h> typedef struct node { int count; char data[20]; struct node *next; }word; word *create(void) { char str[20]; word*h=NULL,*r,*s,*p; //h指向第一个节点,r指向最后一个节点 while(1){ cin>>str; if(strcmp(str,"stop")==0) break; p=h; while(p!=NULL&&strcmp(p->data,str)!=0) p=p->next; if(p!=NULL) ___(27)___; else{ s=new word; s->count=1; strcpy(s->data,str); s->next=NULL; if(h==NULL){ h=s; ___(28)___; } else{ ___(29)___; r=s; } } } return h; } void print(word *p) { if(p==NULL) cout<<"空表"<<endl; else while(p=NULL){ cout<<p->data<<"("<<p->count<<")"; p=p->next; } cout<<endl; } void dele_list(word *h) { word *p; while(h){ p=h; ___(30)___ ; delete P; } } void main(void) { word *p; cout<<"输入一段英文单词或数字串,以空格、Tab或Enter字符分隔,以stop结束输入;"; p=create(); cout<<"输出单链表;"<<endl; print(p); dele_list(p); }
答题卡