江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2009秋vc++笔试试题

    二级Visual C++笔试试卷

    第一部分:计算机基础知识

 1.下列关于个人移动通信的叙述中,错误的是____

  A.1代个人移动通信(简称1G)采用的通信技术是数字通信技术

  B.目前广泛使用的GSM手机采用的通信技术属于第2代移动通信技术(简称2G)

  c.3代移动通信技术(简称3G)将无线通信与互联网、多媒体通信相结合

  D.3G有多个国际技术标准,其中也有我国自主制定的3G技术标准。   

  2.在下列有关集成电路的叙述中,正确的是2

  A.现代集成电路所使用的半导体材料都是硅

  B.所有的集成电路都是数字集成电路

  C.Moore定律认为单块集成电路的集成度平均每年翻一番

  D.Intel公司微处理器产品Core 2 Duo,其集成度已高达数千万个电子元件

  3.与十六进制数AB等值的八进制数是3 

  A. 253    B.254    C.171   D.172

  4.在下列有关PCCPU的叙述中,错误的是4

  A.CPU中包含几十个甚至上百个寄存器,用来临时存放数据、指令和控制信息

  B.所有PC机的CPU都具有相同的指令系统,因而PC机可使用相同的软件

  C.一台计算机至少包含1CPU,也可以包含2个、4个、8个甚至更多个CPU

  D.Intel公司是国际上研制和生产CPU的主要公司,我国也能生产CPU

  5.在下列有关PC机主板上部件的叙述中,错误的是5 

  A.BIOS保存在主板上的一个闪存中,其内容在关机后通常不会改变

  B.CMOS中保存有用户设置的开机口令,关机后主板上的电池继续给CMOS供电

  C.启动CMOS设置程序可以重新设置CMOS中的数据,该程序是BIOS的组成部分

  D.网卡通常集成在主板上,由主板上独立的IC实现其功能,与芯片组无关

  6.PC机存储器的层次结构来看,下列存储器中存取速度最快的是6 

  A.Cache存储器  B.RAMROM  C.寄存器  D.硬盘和优盘

  7.在下列4PC机常用I/O接口中,数据传输速率最高的是7

  A.PS/2    B.SATA    C.IEEE-1394b D.USB 2.0

  8.在下列有关I/O操作、I/O总线和I/O接口的叙述中,错误的是8

  A.I/O操作的任务是在I/O设备与内存的指定区域之间传送信息

  B.I/O总线传送的只能是数据信号,它不能传送控制信号和地址信号

  C.不同类型的I/O接口,其插头/插座以及相应的通信规程和电气特性通常各不相同

  D.并行总线的数据传输速率不一定比串行总线高

  9.在下列有关PCI/0设备的叙述中,错误的是9

  A.数码相机的成像芯片可以为CCD器件或CMOS芯片,目前大多数用CCD器件

  B.平板式扫描仪的分辨率通常远远高于胶片扫描仪和滚筒式扫描仪

  C.常见的宽屏液晶显示器的宽度与高度之比为16:9(16:10)

  D.目前在银行、超市等商业部门一般采用针式打印机来打印存折和票据

  10.在下列有关计算机软件的叙述中,错误的是10 

  A.程序设计语言处理系统和数据库管理系统被归类为系统软件

  B.共享软件是一种具有版权的软件,它允许用户买前免费试用

  C.机器语言和汇编语言与特定的计算机类型有关,取决于CPU

  D.目前PC机只能使用Windows系列操作系统,均不能使用UNIXLinux操作系统

  11.在下列常用的PC机软件中,编辑的文档(内容)能直接保存为图片类型(例如JPEG

文件类型)的是11 

    A.Microsoft Word        B.Microsoft Excel

    C.Microsoft PowerPoint  D.Microsoft FrontPage

    12.在下列关于以太网(局域网)的叙述中,错误的是12

    A.在共享式以太网中,任何时间只允许一对计算机进行通信

    B.在交换式以太网中,每台计算机均独享相同的带宽,其带宽仅由交换机决定

    c.无论是共享式以太网还是交换式以太网,网络中的所有计算机都要安装以太网网卡

    D.无论是共享式以太网还是交换式以太网,它们的数据帧和MAC地址格式均相同

    13.连接在因特网上的每一台主机都有一个IP地址。下面不能作为IP地址的是13 

    A.211.256.49.68 B.21.18.33.48  C.120.34.0.18 D.37.251.68.0

    14.为了将异构的计算机网络互相连接起来,必须使用的网络设备是14 

    A.调制解调器    B.以太网集线器  c.以太网交换机  D.路由器

    15.下列网络协议中,与发送电子邮件有关的是15 

    A.Http    B.FTP    C.SMTP D.TELNET

    16.在下列有关字符集及其编码的叙述中,错误的是16 

    A.基本的ASCII字符集共有128个字符,每个字符使用7个二进位进行编码

    B.GB2312字符集中收录了6千多个汉字,每个字符在机内通常使用双字节编码

    C.GBK字符集中的字符也采用双字节编码,且该字符集收录了部分繁体汉字

    D.GB18030字符集中所有的字符均采用4字节编码,因此该字符集的代码空间很大

    17.目前数码相机拍摄的照片在保存时通常采用的文件类型是17 

    A.BMP    B.GIF    C.JPEG D.TIF

    18.MP3是数字波形声音的一种压缩编码文件格式,它采用的压缩编码标准属于18 

    A.MPEG-1    B.MPEG-2    C.MPEG-4 D.Dolbv AC-3

    19.使用Macromedia公司的Flash软件制作的动画是一种矢量图形,在保存为动画文件

时其文件扩展名通常为19 

  A.GIF    B.SWF    C.AVI D.MPG   

    20.在计算机应用中,CADCAM是典型的信息系统。它们属于20 

  A.管理业务系统    B.辅助技术系统

  c.信息检索系统    D.信息分析系统

 

    第二部分Visual C++程序设计

    一、选择题(用答题卡答题,答案依次填在21--30答题号内)

    21.以下关于C++函数的描述中,正确的是21 

    A.内联函数就是定义在另一个函数体内部的函数

    B.函数体的最后一条语句必须是return语句

    C.c++要求在调用一个函数之前,该函数已定义或已有该函数的原型说明

    D.编译器会根据函数的返回值类型区分函数的不同重载形式

    22.以下关于c++运算符重载的描述中,正确的是22

    A.任何运算符均可重载          B.运算符重载可以改变运算符的优先级

    C.运算符重载可创造新的运算符  D.运算符重载可以改变运算符的功能

    23.以下说明语句中,不存在语法错误的是 23

    A.int  10long;    B.int _2int;

    C.float X3-Dmax;  D.char X.txt[20];

    24.以下关于C++函数重载的描述中,正确的是 

    A.重载函数必须具有不同类型的返回值

    B.重载函数的形参个数必须不同

    C.重载函数的形参个数不同或形参类型不同

    D.重载函数名可以不同

    25.以下if语句的表达不正确的是25 

    A.if(a<b) a=0,else b=0;    B.if(a==b) a=0,b++;

    C.if(a<b);                 D.if(a!=b) a=b;

    26.以下关于指针变量的叙述中,不正确的是 26 

    A.指针变量可赋值为0             B.指针变量中存放的是地址值

    C.指针可以进行加、减等算术运算    D.指针变量不占用存储空间

    27.以下说明语句中,没有语法错误的是 27 

    A.int  a,*pa=&a,*pb=*pa;    B.int  aa,&b=aa,*pc=&b;

    C.int  c[10],&pc=c;         D.int dd,&u=&dd,*v=u;

    28.以下关于类的友元函数的描述中,不正确的是 28

      A.一个类的友元函数要用"friend"说明   

      B.友元函数在类体中说明时,不受类中访问权限的限制

      C.友元函数的作用域与类中成员函数的作用域相同

      D.友元函数体的定义通常放在类定义之外

    29.以下关于派生类的叙述中,不正确的是29 

      A.公有派生时基类中的public成员在派生类中仍是public成员

      B.私有派生时基类中的protected成员在派生类中仍是protected成员

      C.私有派生时基类中的public成员在派生类中改变成private成员

      D.保护派生时基类中的public成员在派生类中改变成protected成员

  30.以下关于纯虚函数的叙述中,不正确的是 30

    A.纯虚函数定义时要定义函数体

    B.纯虚函数的说明以"=0;"结束

    C.派生类中最终要定义纯虚函数的函数体

    D.含纯虚函数的类不能定义其对象

  二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)

  ●基本概念题,5

  1.在定义一个类时,如果仅定义了数据成员,而没有定义成员函数,则由系统自动生成的

缺省成员函数包括:(1)    (2)  、重载赋值运算符和拷贝构造函数。

  2.如果使用数组名作为函数的实参,则形参与实参结合时,传递的是( 3 ) 

  3.C++,编译时的多态性是通过程序设计中使用  ( 4 )  来实现的。

  4.程序中使用new运算符动态分配的内存空间,必须用  (5)  来释放。

  ●阅读程序题,13

  5.[程序]  (3)

    #include <iostream.h>

    int x,y;

    int f2(int a,int b)

    {  x=a+b;y=a-b;

       cout<<"x="<<x<<"\t"<<"y="<<y<<endl;

       return x+y;

    }

    void f1(int m,int n)

    {  int x,y;

       x=m+n;y=m-n;

       m=f2(x,y);

       n=n+m

       cout<<"m="<<m<<"\t"<<"n="<<n<<endl;

    } 

    void main(void)

    {int a=3,b=5;

     f1(a,b);  

     cout<<"a="<<a<<"\t"<<"b="<<b<<endl;

     cout<<"x="<<x<<"\t"<<"y="<<y<<endl;

    }

  运行程序后输出的第二行是( 6 )  ,第三行是( 7 )  ,第四行是( 8 )

  6.[程序](3)

    #include <iostream.h>

    int f(int &n,int &m)

    {  static int k=10;

       n+=m;  k+=n;  m+=k;

       cout<<"k="<<k<<endl

       return(n+m);

    }

    void main(void)

    {int a=3,b=4,k;

     k=f(a,b)+f(a,b);

     cout<<"k="<<k<<'\t<<"a="<<a<<'\t'<<"b="<<b<<endl

    }   

 运行程序后输出的第一行是( 9 )  ,第二行是( 10 )  ,第三行是( 11 ) 

    7.[程序]  (2)

    #include<iostream.h>

    void f(int x)

    { int t;

      if(x<0){cout<<"-";x=-x;}

      t=x%10;X=x/lO;

      if(x!=0)f(x);

      cout<<t;

    }

    void main(void)

    {  f(-234);

    cout<<'\n';

    f(123);

    cout<<'\n';

    }

  运行程序后输出的第一行是( 12 )  ,第二行是( 13)

  8.[程序]  (3)

    #include <iostream.h>

    void fun(int x[],int n)

    {  int i,max,min,k,p,t;

       for(k=p=0,max=min=x[0],i=1;i<n;i++){

         if(max<x[i]) max=x[i],k=i;

         if(min>x[i]) min=x[i],p=i;

       }

       t=x[0];x[0]=x[p];x[p]=t;

       if(k==0) k=p;

       t=x[n-1];x[n-1]=x[k];x[k]=t;

    }

    void print(int *x,int n)

    {for(int k=0;k<n;k++) cout<<x[k]<<endl;}

    void main(void)

    {int a[5]={12,16,19,15,11};

     fun(a,5);

     print(a,5);

     }

  运行程序后输出的第一行是(14)  ,第三行是(15),第五行是(16)

  9.[程序](2)

  #include <iostream.h>

  class B{

         public:

             void f1(){cout<<"B类中的函数f1\n";}

             virtual void f2(){cout<<"B类中的函数f2\n";}

  };

  class  D: public B{

     void f1(){cout<<"D类中的函数f1\n";}

     void f2(){cout<<"D类中的函数f2\n";}

  };

  void main(void)

  {B a,*p;

   D b1;

   p=&a; p->f2();

   p=&b1;

   p->f1(); p->f2();

  }

  运行程序后输出的第二行是  (17)  ,第三行是  (18)

 完善程序题,12

  10以下程序的功能是:首先初始化一个等比数列,改数列的首项为3,公比为2,直到某

    以下程序的功能是:首先初始化一个等比数列,该数列的再坝力j,公比刀z,且到禾

一项的数值大于720为止;然后基于此等比数列计算满足条件的n值和m,使得从第n

到第m项的和为720(和值包含第n项及第m)。试完善程序

  等比数列的定义:数列的第0项为一个初值,从数列的第1项起,每一项与它的前一项的

    比等于一个常数,这种数列称为等比数列。该常数称为等比数列的公比。等比数列表

    示为:

    A0=a,A1=A0*q,......,An=An-1-1*q;其中a,q均为常数,q!=0

    [程序](4)

    #include <iostream.h>

    #define N 20    //只要检查数列的前20,其后各项值均大于720

    int sum(im num[],int &n,int &m)

    {  int s,i,idx,flag=0;

       for(i=0;i<N;i++){

         s=0;  n=i;

         idx=i;

         while(s<720 && idx<N)

           (19)    ;

           if(s==720){     //找到符合条件的项,记录位置

              (20)    ;

             flag=1;

             break;

           }

         }

      return flag;

    }

    void main(void)

    {  int num[N],q,a;

       int i,m,n;

       a=3; q=2;

       num[0]=a;

       for(i=0;num[i]<720;i++){   //初始化等比数列

         (21)    ;

         num[i+1]=a;

       }

       if((22)){

         cout<<""<<n<<"--"<<m<<"项的和是720:"<<endl;

         for(;n<=m;n++)cout<<nun[n]<<'\t';

         cout<<"\n";

       else cout<<"没有满足条件的项!\n";

     }

    11.以下程序的功能是:按每一个学生的成绩总分(数学、物理和英语成绩之和)进行排序

    (降序排序),若总分相同时,再按数学成绩进行降序排序;若总分和数学成绩相同,再按英语

    成绩进行降序排序。程序中先输入学生的人数,再依次输入每一个学生的成绩,然后按降序排

    列后输出结果。试完善程序。  

  [程序](4)

    #include <iostream.h>

    #include <string.h>

    #define N    50

    struct stu{

      char name[10];    //学生姓名   

      int math;         //存放数学成绩

      int phy,eng;        //物理和英语成绩

      int sum;

    };

    void input(stu s[],int n)

    {

      for(int i=O;i<n;i++){

       cout<<"依次输入姓名,数学,物理和英语成绩:";

       cin>>s[i].name>>s[i].math>>s[i].phy>>s[i].eng;

       s[i].sum=s[i].math+s[i].phy+s[i].eng;

      }

    }   

    void sort(stu s[],int n)

    {

      int i,j,k;

      stu t;   

      for(i=0;i<n-1;i++){    //降序排序

        k=i;

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

          if(s[k].sum<s[j].sum) k=j;

          else if(( 23 )) k=j;

          else if(( 24 )) k=j;

        if(( 25 )){

         t=s[i];

         s[i]=s[k];

         s[k]=t;

        }

       }

    } 

    void main(void)

    {   int n;

        stu s[N];

        cout<<"输入学生的人数:";

        cin>>n;

        input(s,n);

       ( 26 )  ;

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

       cout<<s[i].name<<<'\t'<<s[i].sum<<'\t'<<s[i].math<<'\t'

         <<s[i].phy<<'\t'<<s[i].eng<<'\n';

    }

    12.下面程序的功能是:首先,成员函数build()建立一条无序链表,由成员函数Print()

出无序链表中各结点的值;再由成员函数sort()对已建的链表根据链表结点值的大小按升序

进行排序,由成员函数print()输出有序链表中各结点的值。试完善程序。

    [程序](4)

    #include <iostream.h>

    struct Node{

       double num;

       Node *next;

    };

    class Chain{

      private:

        Node  *h;

      public:

        void sort(void);

        Chain(){h=0;}

        ~Chain()

       {

         Node *p;

         while(h){

           p=h;

           h=h->next;

           delete p;

         }

       }

    void build(void);

    void print(void)

    {

     Node *p=h;

     while(p){

       cout<<p->nun<<'\t';

       p=p->next;

     }

     cout<<'\n'

    }

  };

  void Chain::build(void)

  {

   Node *p,*p1;

   double x;

   cout<<"输入一个实数,0结束:";

   cin>>x;

   while(x!=0){

    p=new Node;

    P->num=x;

    if(h==0) h=p1=p;

    else{

      p1->next=p;

      p1=p;

    }

    cout<<"输入一个实数,O结束:";

    cin>>x;

    }

    p->next=0

}

void Chain::sort(void)

{

  if(h==0)return;

  Node  *h1,*p;

  h1=0;

  while(h){

    p=h;

    ( 27 )    ;

    Node *p1,*p2;

    if(h1==0){

      h1=p;

      ( 28 )  ;

    }

    else if(h1->num>=p->num){

      ( 29 )  ;

      h1=p;

    }

    else{

      p2=p1=h1;

      while(p2->next && p2->num<p->num){

        p1=p2;p2=p2->next;

      }

    if(p2->num<p->num){

       (30)    ;

      p->next=0;

    }

    else{   

      p->next=p2;p1->next=p;

    }

  }

 }   

 h=hl;

}

void main(void)

{    Chain x;

     x.build();   

     cout<<"排序前的链表为:";

     x.print();

     x.sort();

     cout<<"\n排序后的链表为:";

     x.print();

}

    参考答案

一、选择题

1.A 2.D 3.A 4.B 5.D 6.C 7.B 8.B 9.B 10.D 11.C 12.B 13.A 14.D

15.C  16.D  17.C  18.A  19.B  20.B

    21.C 22.D 23.B 24.C 25.A 26.D 27.B 28.C 29.B 30.A

    二、填空题

    (1)构造函数(或析构函数)  (2)析构函数(或构造函数)

    (3)数组所代表的地址或地址或数组名

    (4)函数重载或运算符重载  (5)deletedelete运算符    (6)m=16 n=21

    (7)a=3 b=5    (8)x=6 y=10    (9)k=17

    (10)k=45    (11)k=122 a=28 b=66  (12)-234

    (13)123    (14)11    (15)12

    (16)19    (17)B类中的函数f1   (18)D类中的函数f2

    (19)s+=num[idx++]  (20)m=idx-1m=--idx  (21)a=a*qa=a*2

    (22)sum(num,n,m)sum(num,n,m)==1

    (23)s[k].sum==s[j].sum && s[k].math<s[j].math

    (24)s[k].sum==s[j].sum && s[k].eng<s[j].eng

    (25)i!=k

    (26)sort(s,n)

    (27)h=h->nexth=p->next

    (28)p->next=0h1->next=Op->next=NULLhl->next=NULL

    (29)p->next=h1

    (30)p2->next=p