江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2015年6月江苏省计算机二级C++考试真题

20156月份增考

江苏省计算机等级考试二级C++真题

本套题目的详细视频讲解见:http://school.njwww.net/kecheng/detail_963233

1.下列关于信息技术的叙述中,错误的是________

A.信息技术的发展历史不足百年,它是随着计算机技术的发展而逐渐发展起来的

B.信息技术已经成为当今社会最有活力,最有效益的生产力之一

C.现代信息技术的主要特点之一是以电()信号来传输信息

D.目前常讲的新一代信息技术包括大数据、云计算、移动互联网等技术

 

2.下列关于目前台式PC机的叙述中,错误的是______

A.芯片组是PC机各组成部分相互连接和通信的枢纽,它实现了PC机总线的功能

B.大多数CPU芯片中集成有高速缓冲存储器(cache),其工作速度很快(CPU速度相差不大)

C.目前PCI-E总线是PC机最为重要的I/O总线之一,大多数的独立显卡使用该总线接口

D.USB3.0USB2.0的接口连接器相同,区别在于前者的数据传输速度是后者的一倍以上

 

3.下列关于I//O设备的叙述中,错误的是______

A.目前键盘和鼠标等设备可以通过无线方式与PC主机相连接

B.光学分辨率是扫描仪的主要性能指标之一,目前普通家用扫描仪的分辨率已达几千dpi

C.传统显示器的宽度与高度之比一般是1:1,现在主流的液晶显示器的宽高之比是4:3

D.目前用于打印数码照片的打印机主要是喷墨打印机

 

4.下列关于PC机外存储器,错误的是__________

A.移动硬盘通常采用USB接口或eSata接口,可随时插上或拔下(即支持"热插拔")

B.存储卡是闪存做成的一种固态存储器,所有存储卡的形状,大小,接口都是相同的

C.固态硬盘(简称SSD)是基于半导体存储器芯片的一种存储设备,其接口规范、功能及使用方法与普通硬盘几乎相同

D.DVD盘片有单面单层、单面双层、双面单层和双面双层等品种,单面单层的120mm DVD存储容器约4.7GB

 

5.从操作系统发布的时间来看,下列四个Windows操作系统中最早发布的是________

 A.Windows Xp

 B.Windows 2000

 C.Windows Vista

 D.Windows 7

 

6.下面给出的四个语言中,不属于程序设计语言的是______

 A.Lisp语言

 B.Matlab语言

 C.Html语言

 D.Ada语言

 

7.下列关于数字通信技术的叙述中,错误的是________

 A.光纤具有通信容量大,传输距离远,不会受高压线和雷电电磁感应影响

 B.移动通信技术的发展已经历的四代,目前我国所有的智能手机均使用3G

 C.我国自行研发的北斗卫星导航定位系统日趋成熟,并已逐渐投入商业运行

 D.路由器的主要作用是将两个或多个计算机网络进行互连

 

8.Internet使用TCP/IP协议实现了全球范围的计算机网络的互连,连接在

Internet上的每一台主机都有一个IP地址,目前使用的IPv4标准,IP地址为_____

 A.32

 B.64

 C.96

 D.128

 

9.在下列的汉字标准中,不属于汉字编码标准的是______

 A.GB2312-80

 B.GB8566-88

 C.GBK

 D.GB18030-2000

 

10.由于采用的压缩编码方式及数据组织方式的不同,声音文件形成了

多种不同的文件格式,在下列四种文件中,不属于数字声音文件的是_____

A.APE

B.WMA

C.MP3

D.TIF

 

C++程序设计理论部分

 

1.下列选项中不能作为C++自定义标识符的是______

A.scanf    B.void     C.Struct   D._int

 

2.下列叙述不正确的是_______

A.纯虚函数是一种特殊的虚函数,它必须有具体的实现

B.纯虚函数是一种特殊的虚函数,它没有具体的实现

C.抽象类至少包含一个纯虚函数

D.抽象类不能用于创建对象

 

3.设有以下说明语句

 char s1[]="hello";

 char s2[]={'h','e','l','l','o'};

 int b;

则下列语句中正确的是_______

 A. cout>>s1+s2;   B.b=s1==s2;

 C. strlen(s1);      D.strcat(s1,s2);

 

4._____情况下适宜采用inline来定义函数

 A.函数体含有循环语句 

 B.函数体含有递归语句

 C.加快程序的运行速度

 D.函数代码多,不常被调用

 

5.设有双引号括起来的说明语句:

 int a[6][3]={0,2,8},(*p)[3]=a;

以下选项中不能表示地址的表达式是______

 A. a[5]  B.p[1]+0   C.p[1]   D.**p+0

 

6.填空题

#include

class A{

   int a;

public:

   A(int aa=0)  {a=aa;}

   ~A() {cout<<"Destructor A!"<

};

class B:public A {

   int b;

public:

   B(int aa=0, int bb=0):A(aa) {b=bb;}

   ~B() {cout<<"Destructor B!"<

};

void main()

{

  B x(5), y(6,7);

}

程序输出的第一行是_________,第二行是____________-

 

7.填空题

#include

char *fun(char *s, char *p)

{

   char *p1=p;

   for(; *s ;){

     if(!(*s>=0 && *s <='9'))

       *p++=*s++;

       s++;

   }

  *p=0;

  return p1;

}

void main(void)

{

   char str1[]="abcd123456";

   char str2[50];

   cout<< fun(str1,str2) <

   cout<< str2 <

}

程序的输出第一行是_______,第二行是_________

 

8.填空题

#include

int f(int n, int x)

{

  x+=1;

  if(n==3) return x;

  else  return x+f(n+1,x+1);

}

void main()

{

  cout<

  cout<

  cout<

}

程序的输出第一行是____,第二行是_________,第三行是_________

 

9.填空题

#include

class count

{

   static int n;

 public:

   count(){

   n++;

 }

 void show(){

   cout<  ";

 }

  ~count() {

    cout<

    n--;

  }

};

int count::n=0;

void main()

{

  count a;

  a.show();

  {

    count b[4];

    b[3].show();

  }

  a.show();

}

程序共输出_____,其中第一行输出为_____,最后一行输出为______

 

 

 

C++程序设计操作题

1.完善程序

【题目】以下程序通过重载运算符”*”,实现求两个一维数组对应元素之积的运算。设数组a,b分别为:

  int a[10]={1,2,3,4,5,6,7,8,9,10};

  int b[10]={1,2,3,4,5,6,7,8,9,10};

 则数组ab对应元素相乘后所得到的运算结果为

  {1,4,9,16,25,36,49,64,81,100}

  提示:程序中通过重载运算符"=",实现了一维数组的赋值运算。

 【程序】

  #include

#include "string.h"

class Arr

{ 

  int x[10];

  public:

  Arr(){

    for(int i=0;i<10;i++)

      x[i]=0;

  }

  Arr(int *p) {

    for(int i=0;i<10;i++)

      __________;

  } 

  Arr operator *(Arr a){

    Arr t;

    for(int i=0;i<10;i++)

      __________;

    return t;

  }

  Arr  operator =(Arr a){

    for(int i=0;i<10;i++)

      __________;

    return *this;

  }

  void show(){ 

    for(int i=0;i<10;i++)

      __________;

  } 

};

void main()

{

  int a[10]={1,2,3,4,5,6,7,8,9,10};

  int b[10]={1,2,3,4,5,6,7,8,9,10};

  Arr arr(a),brr(b),c;

  c = __________;

  c.show();

}

 

 

 

2.(改错题)

【题目】下列程序的功能为:任意输入一个4位自然数,然后输出该自然数的

各位数字所能组成的最小自然数.例如:输入1593,输出1359;输入3002,

输出23。注意:如果输入了非法数据,82,则程序应提示重新输入数据,

直到输入正确数据为止

【程序】

 含有错误的程序为:

#include

void input(int a)     //输入数据并检查其合理性,直到输入的数据合理为止

{

       int n;

       cout<<"Please input a 4-bits number";

       cin>>n;

       while(n<1000 && n>9999)  {    

              cout<";        // 请重新输入一个四位数

              cin>>n;

       }

       *a=n; 

}

int min(int a)

{    

       int x[4], m;

       int i, j;

       for(i=0; a; i++, a/=10)

              x[i]= a/10;            

       for(i=0; i<3; i++)

              for(j=i+1; j<4; j++)

                     if(x[i]>x[j])

                     { m=x[i]; x[i]=x[j]; x[j]=m; }

       for(i=0, m=0; i<4; i++)

              m=(m+x[i])*10;   

       return m;

}

void main(void)  //注意:不允许修改主函数

{    

       int a;

       input(&a);

    cout<}

  1.打开T盘中 myfb.cpp,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。程序中的注解可以不输入。 

  2.改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或编译预

      处理命令,但不能增加其他语句,也不能删除整条语句。

 3.将改正后的源程序文件myfb.cpp必须放在T盘根目录下,供阅卷用。

 

 

3. (编程题):

【题目】为使电文保密,往往按一定规律将其转换成密文,收报人再按约定的规律

将其译回原文。例如,26个大小写字母分别看成-个圆环,可以按以以下规律将原

文转换成密文:将字母A转成E.即转换成其后的第四个字母,V转换成Z W转换

AX转换成BY转换成C,Z转换成D.小写字母按同样的规律转换,如a转换成

e。字母按上述规律转换(加密),其它字符不变.如"OK    China!"转换成"SO

 Glmre!"。试建立一个类Encode.完成加密工作。

    具体要求如下:

    (1)私有数据成员

    char *strstr指向存放原文字符串的动态内存空问。

    (2)公有成员函数

    Encode(char *s1)  :构造函数,根据参数s1指向的字符串的大小,动态申

    请内存空问,让str指向该空间.用s1所指向的字符串初始化str指向的字符

    串.

    ~Encode() : 析构函数,释放str所指向的动态内存空问。

    void change(char *s2) :str所指向的原文字符串转换成密文,并将密文存

    放到s2所指向的存储空间中。

    void print() :  输出原文

    (3)在主函数中完成对给类的测试。定义两个字符数组text1text2。先输入

一行字符串(原文)text1,text1初始化一个Encode类的对象v,调用成员函数

输出原文,再调用成员函数change将获得的密文送到text2,最后输出密文,当用

 "OK China"作为测试用的原文时,程序输出的结果是:

   OK  China!

   SO  Glmre!

 【要求】

  打开T盘中myfc.cpp文件(空文件),编写后的源文件myfc.cpp必须保存在T盘的

 根目录下,供阅卷用

 

1.完善程序答案

x[i]=*p++

t.x[i]=x[i]*a.x[i]

x[i]=a.x[i]

cout<

arr*brr

 

2.改错题答案

1. void input(int a)    修改为  void input(int *a)

2. while(n<1000 && n>9999)  修改为 while(n<1000 || n>9999)

3. x[i]= a/10;               修改为  x[i]= a; 

4. m=(m+x[i])*10;         修改为:  m=m*10+x[i];

本套题目的详细视频讲解见:http://school.njwww.net/kecheng/detail_963233