春江苏省二级C++考试真题 附答案.docx
《春江苏省二级C++考试真题 附答案.docx》由会员分享,可在线阅读,更多相关《春江苏省二级C++考试真题 附答案.docx(15页珍藏版)》请在冰豆网上搜索。
![春江苏省二级C++考试真题 附答案.docx](https://file1.bdocx.com/fileroot1/2023-1/10/1ba0a419-65e1-4d53-a601-48d0655baf70/1ba0a419-65e1-4d53-a601-48d0655baf701.gif)
春江苏省二级C++考试真题附答案
2010春江苏C++考试试题
2010年春
二级试卷
试卷语种:
C++语言
第一部分计算机基础知识
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.Core2Duo
B.PentiumPRO
C.PentiumIII
D.Pentium4
6.在下列四种PC机主存储器类型中,目前常用的是_____6_____。
A.EDODRAM
B.SDRAM
C.RDRAM
D.DDRSDRAM
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.80ramCD存储容量大约为200多兆字节
B.120mmCD存储容量大约为600多兆字节
C.单面单层的120mmDVD存储容量大约为4.7GB
D.单面单层的120mm蓝光光盘存储容量大约为17GB
10.在下列有关Windows系列操作系统及其功能的叙述中,错误的是10。
A.Windows操作系统采用并发多任务方式支持系统中多个任务的执行
B.WindowsXP分为多个版本,它们可用于不同计算机和不同的应用
C.与WindowsXP相比,WindowsVista做了许多改进,但其硬件运行环境要求较高
D.无论是硬盘还是光盘,它们均采用相同的文件系统,即FAT文件系统
11.在下列常用应用软件中,不能对编辑的文档设置密码的是11。
A.MicrosoftWord
B.MicrosoftExcel
C.MicrosoftPowerPoint
D.MicrosoftFrontPage
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
D.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万,WindowsXP操作系统支持该标准
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.若有;intx=6;则执行语句:
x+=x-=x*x;后,x的值是(21)
A.36B.-60C.60D.-24
22.以下语句中,存在编译错误的是(22)
A.chara[7],*p;p=a="China";B.chara[7],*p=a;p="China";
C.char*a;a="China";D.chara[7]={"China"};
23.以下有关函数的叙述中,正确的是(23)。
A.函数必须返回一个值B.函数体中必须有return语句
C.函数可以多次重载D.函数可以嵌套定义
24.执行以下语句序列intj=0;while(j<25)j+=3;cout<输出的结果是(24)
A.24B.25C.27D.28
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
intf2(int*a,intb)
{
*a=*a+b;b=*a+b;
cout<<"*a="<<*a<<"\t"<<"b="<
return*a+b;
}
voidf1(inta,int&b)
{
a=a+b;b=a+b;
b=f2(&a,b);
cout<<"a="<}
voidmain(void)
{
intx=4,y=5;
f1(x,y);
cout<}
执行以上程序后输出的第一行是___(6)___,第二行是___(7)___,第三行是___(8)___
6.[程序](3分)
#include
voidfun(int*s,int*y)
{
staticintt=3;
*y+=s[t];
t--;
}
voidmain(void)
{
inta[]={10,20,30,40},i,x=0;
for(i=0;i<4;i++){
fun(a,&x);
cout<}
}
执行以上程序后输出的第一行是___(9)___,第三行是___(10)___,第四行是___(11)___
7.[程序](3分)
#include
voidf(intx,inty)
{
intmid;
if(xmid=(x+y)/2;
cout<f(x,mid);
}
}
voidmain(void)
{
f(1,10);
}
执行以上程序后输出的第一行是___(12)___,第二行是___(13)___,第三行是___(14)___。
8.[程序](2分)
#include
intfun(char*s)
{
char*p=s;
while(*p)p++;
return(p-s);
}
voidmain(void)
{
chars1[]={"China"},s2[]={"Apple\nPear\tCat\0Bye"};
cout<cout<}
执行以上程序后输出的第一行是___(15)___,第二行是___(16)___。
9.[程序](2分)
#include
#include
classB{
public:
B(char*s){name=newchar[strlen(s)+1];strcpy(name,s);}
virtualvoidprint(){cout<<"姓名;"<protected:
char*name;
};
classP1:
publicB{
public:
P1(char*s,floatg):
B(s){x=g;}
voidprint(inti)
{cout<<"姓名:
"<"<\n";}
private:
floatx;
};
classP2:
publicB{
public:
P2(char*s,intn):
B(s){num=n;}
voidprint(){cout<<"姓名;"<"<\n";}
private:
intnum;
};
voidmain(void)
{
B*p;
Bx("张明");
P1y("王虎",4.2);
P2z("李建国",5000);
p=&x;p->print();
p=&y;p->print();
y.print
(1);
p=&z;p->print();
}
执行以上程序后输出的第二行是(17),第四行是(18)。
●完善程序题,共12分
10.以下程序的功能是;从键盘接收一行字符串,首先按照字符的ASCII码值从小到大对输入的字李
串进行排序,然后从排序后的字符串中删除重复的字符并输出删除操作后的字符串。
[程序](4分)
#include
#include
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;
}
returns;
}
voidmain(void)
{
charstr[200],s[200];
cout<<"输入一行字符串:
";
cin.getline(str,200);
strcpy(s,str);
___(22)___;
cout<<"输入字符串为:
"<cout<<"结果字符串为:
"<
}
12.以下程序的功能是;从键盘输入一行字符串,将输入字符串中连续的数字作为一个整数,整数前
的"+"和"_"分别表示正整数和负整数。
依次取出相关的连续数字字符,并转换为整数后存放到整
型数组中。
函数change_int()实现从字符串中依次取出整数并放入数组中
例如;输入字符串:
"sf-123abc+456df7890j",则输出-1234567890
[程序](4分)
#include
voidchange_int((23))
{
intflag;
count=0;
while(*p){
flag=1;//flag=1为正整数,flag=-1为负整数
while((*p<'0'||*p>'9')&&___(24)___)p++;
if(*p=='-'){‘
flag=-1;
p++;
}
elseif(*p=='+')p++;
if(*p>='0'&&*p<='9'){
intnum=0;
while((25)){
num=num*10+*p-'0';
p++;
}
num=___(26)___;
b[count]=num;
count++;
}
}
}
voidmain(void)
{
charstr[400];
inta[20],n;
cout<<"请输入一个含有数字的字符串;\n";
cin.getline(str,400);
change_int(str,a,n);,
cout<<"输入字符串中共有"<for(inti=0;icout<if((i+1)%4==0)cout<<'\n';
}
cout<}
13.以下程序的功能是;实现一个队列的简单管理,每一个队列结点包括一个学生的基本信息(姓名,数学、物理和英语成绩)。
成员函数add()建立一个新结点,并将该结点加入队尾。
成员函数remove()从队首取下一个结点,并通过参数将所取结点中的数据返回。
成员函数Print()输出队列中各个结点的值。
当队列非空时,析构函数~Queue()依次删除队列上的各个结点。
[程序](4分)
#include
#include
classNode{
public:
Node(charnam[],intm,intp,inte)
{strcpy(name,nam);math=m;phy=p;eng=e;}
Node(){}
private:
charname[10];//姓名
intmath,phy,eng;//数学,物理,英语成绩
Node*nextItem;
friendclassQueue;
};
classQueue{
public:
Queue(){front=NULL;back=NULL;}
~Queue();
voidremove(char*,int&,int&,int&);
voidadd(char[],int,int,int);
intis_empty(){returnback==NULL;}
//输出队列中各个结点的值
voidPrint()
{
Node*p=front;
while(p){
cout<name<<'\t'<math<<'\t'<phy<<'\t'<eng<<'\n';
p=p->nextItem;
}
}
private:
Node*front;
Node*back;
};
//Queue的成员remove()实现从队列头取下一个结点,并返回该结点的值
voidQueue:
:
remove(charn[],int&m,int&p,int&e)
{
Node*pFront;//指向头结点的临时指针
pFront=front;
strcpy(n,front->name);
m=front->math;p=front->phy;e=front->eng;
____(27)___;
deletepFront;
}
//Queue的函数成员add()实现在队列中增加一个项,即增加一个结点
voidQueue:
:
add(charn[],intm,intP,inte)
{
Node*pNew=newNode;
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)___;
deleteP;
p=q;
}.
}
//主函数完成对各成员函数的简单测试
voidmain(void)
{
Queueq1;
intm,p,e;
charstr[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<<"队列中移下项的值为;"<cout<<"队列中各项为;\n";
q1.Print();
}