![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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.任何一个通信系统都有信源、信道和信宿这三个基本组成部分 , B.为了实现远距离传输信息,在模拟通信和数字通信中均采用载波技术 C.为了降低传输信息的成本,在通信中广泛采用多路复用技术 D.数字通信系统的一个主要性能参数是信道带宽,它指实际进行数据传输时单位时间内传输的二进位数目 2.在下列有关集成电路及其应用的叙述中,错误的是 ___2___ 。 A.集成电路的制造工序繁多,工艺复杂且技术难度高 B.经过抛光后的硅片称为晶圆,每个晶圆最多可以制成一个合格的集成电路芯片 C.IC卡分为接触式IC卡和非接触式IC卡,后者通常又称为射频卡或感应卡 D.集成电路应用十分广泛,目前我国第2代居民身份证中就有集成电路芯片 3.在下列有关数字技术的一些叙述中,错误的是 _____3_____ 。 A.数字技术是采用有限个状态(例如"0"和"1")来表示、处理、存储和传输信息的 B.在逻辑代数中,1与1进行逻辑加(V)和逻辑乘(^)的结果相同 c.任何一个十进制数,均可以精确地转换成等值的二进制数 D.在PC机中,通常用原码表示正整数、用补码表示负整数 4. 在下列有关PC机主机的叙述中,错误的是___4___ 。 A.BIOS和CMOS存储器安装在主板上,普通用户一般不能自己更换 B.由于PC机主板的物理尺寸等没有标准化,所以不同PC机的主板均不能互换 C.芯片组是PC机各组成部分相互连接和通信的枢纽,一般由2块VLSI芯片组成 D.芯片组决定了主板上所能安装的内存最大容量、速度及可使用的内存条类型 5. 在下列4个Intel微处理器产品中,采用双核结构的是 _____5_____ 。 A. Core 2 Duo B.Pentium PRO C.Pentium III D.Pentium 4 6. 在下列四种PC机主存储器类型中,目前常用的是 _____6_____ 。 A.EDODRAM B.SDRAM C.RDRAM D.DDR SDRAM 7. 在下列有关PC机常用I/O接口的叙述中,错误的是 7 。 A. 目前显卡与显示器的接口大多采用VGA接口 B. 可用于连接鼠标器的USB接口和PS/2接口的数据传输方式均是串行传输方式 C. USB接口连接器有4个引脚,其中1个引脚可获得由主机提供的+1.5V电源 D. IEEE-1394b接口也是PC机常用的一种高速接口 8. 在下列有关PC机外存储器的叙述中,错误的是 8 。 A.由于数据存取速度慢、容量小等原因,软盘存储器已逐渐被淘汰 B. 所有的硬盘都是由2个或2个以上盘片组成的,硬盘中的盘面数为盘片数的2倍 C.目前有些优盘产品可以模拟软盘和硬盘启动操作系统 D. 目前常见的组合光驱(“康宝”)既有DVD只读光驱功能,又有CD光盘刻录机功能 9. 在下列有关光盘存储容量的叙述中,错误的是 9 。 A.80ram CD存储容量大约为200多兆字节 B C.单面单层的 D.单面单层的 10.在下列有关Windows系列操作系统及其功能的叙述中,错误的是 10 。 A.Windows操作系统采用并发多任务方式支持系统中多个任务的执行 B.Windows XP分为多个版本,它们可用于不同计算机和不同的应用 . C.与Windows XP相比,Windows Vista做了许多改进,但其硬件运行环境要求较高 D.无论是硬盘还是光盘,它们均采用相同的文件系统,即FAT文件系统 11.在下列常用应用软件中,不能对编辑的文档设置密码的是 11 。 A.Microsoft Word B.Microsoft Excel C.Microsoft PowerPoint D.Microsoft FrontPage 12.在下列关于无线局域网的叙述中,错误的是 12 。 A.在无线局域网中,无线接入点实际上是一种无线交换机,在室内覆盖距离可达几 B.目前无线局域网可采用的协议有Wi-Fi和蓝牙等,后者的数据传输速率比前者更高 C.若某电脑贴有Intel公司的"Centrino"(迅驰)标记,则该电脑应有集成的无线网卡 D.无线网卡有多种类型,例如PCI无线网卡、USB无线网卡等 13.IP地址分为A、B、C、D、E五类。下列4个IP地址中,属于C类地址的是 13 A. 1.110.24.2 B. 202.119.23.12 C. 130.24.35.68 n. 26.10.35.4R 14.因特网上有许多不同结构的局域网和广域网互相连接在一起,它们能相互通信并协调工作 的基础是因为都采用了 ______14______ A.ATM协议 B.TCP/lP协议 C.X.25协议 D.NetBIOS协议 15.下列有关因特网接入的叙述中,错误的是______15______ 。 A.采用电话拨号接入时,数据传输速率只能达几十kbps B.采用ADSL接入时,网络的下行数据传输速率通常高于上行数据传输速率 . C.采用ADSL接入时,只需要ADSL调制解调器,不需要使用网卡 D.采用有线电视接入时,多个终端用户将共享连接段线路的带宽 16.在下列有关字符集及其编码的叙述中,错误的是 ______16______ 。 A.在我国台湾地区使用的汉字编码标准主要是GBK,该标准中收录了大量的繁体汉字 B.GBl8030标准中收录的汉字数目超过2万,Windows XP操作系统支持该标准 C.Unicode字符集中既收录了大量简体汉字,也收录了大量繁体汉字 D.GB2312是我国颁布的第一个汉字编码标准,该字符集还收录了俄文、希腊字母等 17.若一幅图像的大小为1024×768,颜色深度为16位,则该图像在不进行数据压缩时,其数据量大约为______17______ 。 A.768KB 、 B.1.5MB C.3MB D.12.3MB 18.在下列4种类型的数字化声音文件中,不可能包含人的说话声音的是 18 。 A. WAV B.MP3 C.MID D.WMA 19.在下列有关数字视频的叙述中,错误的是 19 。 A.PC机所使用的视频卡能将输入的模拟视频信号进行数字化 B.目前使用摄像头获取视频信息时,不需要使用专门的视频卡 C.数字视频在数据压缩时只能使用MPEG标准,DVD就是采用MPEG一4标准压缩的 D.计算机动画是一种合成视频,这种技术是发展动漫产业的基础 20.下列是几种常见的电子商务的分类方法。若将电子商务分为B-C、B-B等类型,则该分类 是 ______20______ 。 A.按交易的双方进行分类 B.按使用的网络类型分类 c.按交易商品性质分类 D.按交易商品规模分类 第二部分 C++语言程序设计 . 一、选择题(用答题卡答题,答案依次填在21-30答题号内) 21.若有;int x=6;则执行语句:x+=x-=x*x;后,x的值是 (21) A.36 B. 22.以下语句中,存在编译错误的是 (22) A.char a[7],*p; p=a=" C.char *a; a=" 23.以下有关函数的叙述中,正确的是 (23) 。 A.函数必须返回一个值 B.函数体中必须有return语句 C.函数可以多次重载 D.函数可以嵌套定义 24.执行以下语句序列int j=0;while(j<25) j+=3; cout<<j<<'\n'; 输出的结果是 (24) A.24 B 25.实现运行时的多态性需要使用 (25) A.重载函数 B.析构函数 C.构造函数 D.虚函数 26.以下有关类成员的描述中,正确的是 (26) A.友元函数是类的成员函数 B.类成员缺省的访问权限是私有的 C.类成员函数必须说明为公有的 D.派生类成员函数能访问其基类的所有成员 27.对于任意一个类,其析构函数 (27) A.是唯一的 B.可有多个 C.只能是缺省的 D.允许重载 28.类的成员函数中,没有this指针的是 (28) A.构造函数 B.析构函数 C.虚函数 D.静态成员函数 29.以下有关继承的叙述中,不正确的是 (29) 。 A.继承可以实现软件复用 B.虚基类可解决多继承产生的二义性问题 C.派生类不继承基类的私有成员 D.派生类的构造函数要调用基类的构造函数 30.静态数据成员是 ( 30 ) 的数据。 A.私有 B.公有 C.保护 D.所有对象共享 二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行) 、 ●基本概念题,共5分 1.在C++中,将多态性分为静态多态性和动态多态性两种。函数重载属于 (1) 多态性,运算 符重载属于 (2) 多态性。 2.在C++的文件流中,打开文件的方法有二种,一种是使用成员函数open()打开文件,另一种是 使用.(3) 打开文件。 3.要使一个指针变量不指向任一变量时,应将该指针变量的值赋为 (4) 。 4.当用类的成员函数重载一个双目运算符时,该成员函数的形参个数是 (5) 个。 ●阅读程序题,共13分 5.[程序] (2分) #include<iostream.h> int f2(int *a,int b) { *a=*a+b; b=*a+b; cout<<"*a="<<*a<<"\t"<<"b="<<b<<endl; return *a+b; } void f1(int a,int &b) { a=a+b;b=a+b; b=f2(&a,b); cout<<"a="<<a<<"\t"<<"b="<<b<<endl; } void main(void) { int x=4,y=5; f1(x,y); cout<<x<<"\t"<<y<<endl; } 执行以上程序后输出的第一行是___(6)___,第二行是___(7)___,第三行是___(8)___ 6.[程序] (3分) #include <iostream.h> void fun(int *s,int *y) { static int t=3; *y+=s[t]; t--; } void main(void) { int a[]={10,20,30,40},i,x=0; for(i=0;i<4;i++){ fun(a,&x); cout<<x<<endl; } } 执行以上程序后输出的第一行是___(9)___,第三行是 ___(10)___,第四行是 ___(11)___ 7.[程序](3分) #include<iostream.h> void f(int x,int y) { int mid; if(x<y) { mid=(x+y)/2; cout<<mid<<'\n'; f(x,mid); } } void main(void) { f(1,10); } 执行以上程序后输出的第一行是 ___(12)___ ,第二行是___(13)___ ,第三行是 ___(14)___ 。 8.[程序] (2分) #include <iostream.h> int fun(char *s) { char *p=s; while(*p) p++; return(p-s); } void main(void) { char s1[]={" cout<<sizeof(s1)<<'\t'<<fun(s1)<<endl; cout<<sizeof(s2)<<'\t'<<fun(s2)<<endl; } 执行以上程序后输出的第一行是 ___(15)___ ,第二行是 ___(16)___ 。 9.[程序] (2分) #include<iostream.h> #include<string.h> class B{ public: B(char *s){name=new char[strlen(s)+1];strcpy(name,s);} virtual void print(){cout<<"姓名;"<<name<<"\n";} protected: char *name; }; class P1:public B{ public: P1(char *s,float g):B(s){x=g;} void print(int i) { cout<<"姓名:"<<name<<",年薪:"<<x<<"万元。 \n";} private: float x; }; class P2:public B{ public: P2(char *s,int n):B(s){ num=n;} void print(){cout<<"姓名;"<<name<<",月工资:"<<num<<"元。\n";} private: int num; }; void main(void) { B *p; B x("张明"); P1 y("王虎",4.2); P2 z("李建国",5000); p=&x;p->print(); p=&y;p->print(); y.print(1); p=&z;p->print(); } 执行以上程序后输出的第二行是(17) ,第四行是(18)。 ●完善程序题,共12分 10.以下程序的功能是;从键盘接收一行字符串,首先按照字符的ASCII码值从小到大对输入的字李 串进行排序,然后从排序后的字符串中删除重复的字符并输出删除操作后的字符串。 [程序] (4分) #include<iostream.h> #include<string.h> char *fun(char *s) { char *p,*q,*r,c; for(p=s; ___(19)___;p++){ //升序排序 for(q=r=p;*q;q++) if(*r>*q) ___(20)___; if(r!=p){ c=*r; *r=*p; *p=c; } } for(p=s;*p;p++){ //从字符串中删除重复的字符 for(q=p;*p==*q;q++); r=p+1; while(*q) ___(21)___ ; //非重复字符向前移 *r=0; } return s; } void main(void) { char str[200],s[200]; cout<<"输入一行字符串:"; cin.getline(str,200); strcpy(s,str); ___(22)___ ; cout<<"输入字符串为:"<<str<<"\n"; cout<<"结果字符串为:"<<s<<endl; } 12.以下程序的功能是;从键盘输入一行字符串,将输入字符串中连续的数字作为一个整数,整数前 的"+"和"_"分别表示正整数和负整数。依次取出相关的连续数字字符,并转换为整数后存放到整 型数组中。函数change_int()实现从字符串中依次取出整数并放入数组中 例如;输入字符串:"sf-123 abc+456 df7890j",则输出-123 456 7890 [程序](4分) #include<iostream.h> void change_int( (23) ) { int flag; count=0; while(*p){ flag=1; //flag=1为正整数,flag=-1为负整数 while((*p<'0'||*p>'9')&& ___(24)___)p++; if(*p=='-'){ ‘ flag=-1; p++; } else if(*p=='+') p++; if(*p>='0' && *p<='9'){ int num=0; while( (25) ){ num=num*10+*p-'0'; p++; } num= ___(26)___ ; b[count]=num; count++; } } } void main(void) { char str[400]; int a[20],n; cout<<"请输入一个含有数字的字符串;\n"; cin.getline(str,400); change_int(str,a,n); , cout<<"输入字符串中共有"<<n<<"个整数,它们分别是;\n"; for(int i=0;i<n;i++){ cout<<a[i]<<'\t'; if((i+1)%4==0) cout<<'\n'; } cout<<endl; } 13.以下程序的功能是;实现一个队列的简单管理,每一个队列结点包括一个学生的基本信息(姓名, 数学、物理和英语成绩)。成员函数add()建立一个新结点,并将该结点加入队尾。成员函数remove() 从队首取下一个结点,并通过参数将所取结点中的数据返回。成员函数Print()输出队列中各个结点 的值。当队列非空时,析构函数~Queue()依次删除队列上的各个结点。 [程序] (4分) #include<iostream.h> #include<string.h> class Node{ public: Node(char nam[],int m,int p,int e) {strcpy(name,nam);math=m;phy=p;eng=e;} Node(){} private: char name[10]; //姓名 int math,phy,eng; //数学,物理,英语成绩 Node *nextItem; friend class Queue; }; class Queue{ public: Queue(){front=NULL;back=NULL;) ~Queue(); void remove(char *,int &,int &,int &); void add(char [],int,int,int); int is_empty(){return back==NULL;} //输出队列中各个结点的值 void Print() { Node *p=front; while(p){ cout<<p->name<<'\t'<<p->math<<'\t'<<p->phy<<'\t'<<p->eng<<'\n'; p=p->nextItem; } } private: Node *front; Node *back; }; //Queue的成员remove()实现从队列头取下一个结点,并返回该结点的值 void Queue::remove(char n[],int &m,int &p,int &e) { Node *pFront; //指向头结点的临时指针 pFront=front; strcpy(n,front->name); m=front->math;p=front->phy;e=front->eng; ____(27)___ ; delete pFront; } //Queue的函数成员add()实现在队列中增加一个项,即增加一个结点 void Queue::add(char n[],int m,int P,int e) { Node *pNew=new Node; strcpy(pNew->name,n); pNew->math=m;pNew->phy=p;pNew->eng=e; pNew->nextItem=NULL; if(front==NULL) ___(28)___; else{ ____(29)___ ; back=pNew; } } Queue::~Queue() { Node *p=front,*q; while(p!=NULL){ ___(30)___; delete P; p=q; } . } //主函数完成对各成员函数的简单测试 void main(void) { Queue q1; int m,p,e; char str[10]; cout<<"输入队列中学生的姓名、数学、物理,英语成绩(以0结束);"; cin>>str>>m>>p>>e; while(strcmp(str,"O")!=0){ q1.add(str,m,P,e); cout<<"输入队列中一个项的值(以0结束);"; cin>>str>>m>>p>>e; } cout<<"队列中各项为;\n"; q1.Print (); q1.remove(str,m,p,e); cout<<"队列中移下项的值为;"<<str<<'\t'<<m<<'\t'<<p<<'\t'<<e<<'\n'; cout<<"队列中各项为;\n"; q1.Print(); }
|