江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
江苏计算机等级考试vc++冲刺模拟试题1

第二部分:Vc++程序设计

 C++语言程序设计理论部分

  一、选择题(30)

  21•设有定义“float y=5.16347int x;”,则以下表达式中可以实现将y中的数值保留小

数点后2位,将第三位四舍五人的表达式是_____________

  Ay=(y*100+0.5)/100.0     Bx=y*lOO+O.5,y=x/lOO.0

  Cy=y*100+0.5/100.0       Dy=(y/100+0.5)*100.0

  22.设有说明语句"int a=6float b=lc=l",则表达式"c%=(b=a/=4)a+=3"

的值为_________

    A9    B1.5     C1         D.编译有错

 2 3.关于字符串,以下说法正确的是 __________

    A.字符串"abc\t\"op\\"中实际的字符个数为8

    B.字符串是以0结尾的字符数组

    Csizeof("abc\O\"op\\")=3

    Dstrlen("abc\O\"op\\")=8

  24.已定义"int a[5]={lOO200300400500};int *P1=&a[0]",b=*++P1,则b*P1的值分别为___

 

    A100 200    B200 200    C)101 101 D100 101

  25.下面给出的程序的输出结果不正确的是 _________

   Achar *sls2[]="123"  sl=s2  cout<<*sl;,结果:123

   B. char *sls2[]="123"sl=s2  cout<<sl;结果:123

   Cchar *sl="123\0tear"cout<<s1;结果:123

   Dchar s1[]="567"s2[]=123strcpy(sls2)cout<<s1;结果:123

  26.设有变量说明“int a[][2]={{25}{48}}int *pa(*pb)[2];"则执行语句"pa=&a[0][0]pb=a;"后,

(*(pa+1))(*(pb+1))的值为:______

  A54    B&a[1][0]4   C5&a[1][0]    D. &a[0][1], &a[1][0]

 2 7.下列关于数组的应用中,__________是正确的。

  Aint a[5]={12345)int b[5]b=a  cout<<b

  Bint a[5]={12345)int b[5] strcpy(ab)  cout<<b;

  Cchar a[5]=1234char b[5]strcpy(ba)  cout<<b

  Dchar a[5]=1234char b[5]b=a;;    cout<<b

28.以下程序的输出为

#include<iostreamh>

int w=3

intfun(int)

void main(void)

{

  int w=10

  cout<<fun(5)*w<<endl

}

int fun(int k)

{

 if(k==0)  return w;

 return(fun(k-1)*k)  

 }  

  A360    B3600    C1080  D1200  

 2 9.下列对派生类的描述中______是不正确的

  A.一个派生类可以作为另一个派生类的基类  

  B.派生类至少有一个基类   

  c:派生类的成员除了它自己的成员以外,还包含它的基类的成员

  D.派生类中继承的基类的成员的访问权限到派生类保持不变  

  30.关于构造函数与析构函数的下列说法中正确的是:

  ①在类中构造函数与析构函数都有固定的函数名。

  ②在类中构造函数与析构函数都有相同的作用。

  ③在类中构造函数与析构函数都可以定义多个。  

  ④在类中构造函数与析构函数都可以有返回值。  

  ⑤在类中构造函数与析构函数的参数都可以有默认值。 

  A.①和②    B.①    C.④和⑤  D.③和⑤。   

  二、填空(30)  

  ●基本概念题(8) 

  1.某类整数a满足的条件为:①a小于等于100 a大于等于10,③a的十位数是个位

数的2倍或个位数是十位数的2倍。    ,‘        +

    请用一个逻辑表达式  (  1  ) a表示出来。

    2c++中编译预处理有三种形式,分别是:______,___________,_____________

    3.面向对象程序设计语言的四个要素是:___________,__________________,_______________,__________

    ●阅读程序写结果(10)

    4(1)若有宏定义:

    #define A 2

    #define B(n)(n*(A+2)n*2)

    则执行语句“int w=2w*=2*(A*B(A+2))+3"后,W的值为__________

    5(1)[程序]

    #include<iostream.h>

    #define N 5

    void fun();

    void main()

    {  for(int i=1i<Ni++)

    fun()

  cout<<endl

}

void fun()

{

    static int a

    int b=2

    cout<<(a+=3a+b)<<" "

}

运行结果为:(  10  )

6(3)[程序]

#include<iostreamh>

void main()

{

  char s[]="I am a studentYou are a student too"

  int a[26]={0)

  char *p=S   

  while(*p++!=0)

  {

     if(*p>='A' && *p<='Z')a[*p-'A']++

     else if(*p>='a' && *p<='z') a[*p-'a']++

  }

    for(int i=0i<26i++)

      if(a[i]!=0)cout<<(char)(i+'a')<<""<<a[i]<<endl

 }

程序运行后出现的前三行结果为:

  ( 11 )    ( 12 )    ( 13 )

7(3)[程序]

  #include<iostream.h>

  class Q

  {

    int xy 

    static int z

 public

  Q(int aint b){x=a+by=a*bz+=x+y}

  void show(){cout<<x<<'\t'<<y<<'\t'<<z<<endl}

  } 

  int Q::z=10

  void main()

  {

    Q ql(1010)

    q1show()

    Q q2(2020)

    q2.show()

    q1.show()

  }

程序运行后输出的第一、二、三行分别是

  ( 14 )    ( 15 )  ( 16 )

8(2)[程序]

 

#include<iostreamh>

class AA

{

  int x

public

  int y

  AA(int aint b){y=b-ax=y+y;}

  int showx(void){return x)

}

class BBpublic AA

{

public

    BB(int c)AA(Cc+c){)

    int showy(void){return y)

)

class CCpublic AA

{

public

  CC(int d)AA(dd+d){)

  int showy(void){return y)

)

class DDpublic BBpublic CC

{

public

    DD(int e)BB(e+50)CC(e-50){}

)

void main()

{

  DD d(80)

  cout<<d.BB::showy()<<'\t'<<d.CC::showy()<<endl

cout<<d.BB::showx()<<'\t'<<d.CC::showx()<<endl

}

程序运行结果为:

  (  17   )    (    18   ) 

    ●完善程序(12)

    9(4)编写一个程序采用递归方法逆序放置a数组中的元素。

    [方法说明]调用一个invert函数来进行数组逆置。invert(sij)函数采用递归方法实

现,每次将S的第i个元素和第j个元素进行交换,直到i大于或等于j为止。

    [程序]

    #include<iostreamh>

    (   19  )    //函数invert()的原型说明

    void main()

    {

     int a[10]={0123456789)i;

     (   20   )    //调用invert()函数

     for(i=0i<=9i++)

          cout<<a[i]<<""

     cout<<endl

     void invert(int  *sint iint j)

      {

       int t

       if(i<j)

       {

          t=*(s+i)

          (   21   )

          *(s+j)=t

         (   22   )

       }

      }

    10(4)重载运算符“一=”,直接实现在一个字符串中删除某个字符的功能。例如:

字符串“Microsoft Visual C++6O”与i做“一=”运算后的结果为“Mcrosoft Vsual C++

60

    [程序]

    #include<iostream.h>

    #include<string.h>

    class string 

    {

       char*a

    public

      string(char *s)

      {

       if(s)

       {

             (   23   )

             strcpy(as)

       }

       else

         a=0

      }

  string()

  {

    if(a) delete[ ]a

   }

  string &operator -=(char c)

  void show()

  {

     cout<<a<<endl

  }

 (   24   ) //重载函数的定义

 {

   char*p=a

   while(*p)

  {

     if(*p==c)

     {

         for(char *q=p*qq++)

           (   25   )

     }

    else  (   26   )

  }

  return *this;

 void main()

 {

  string sl("Microsoft Visual C++60")

  s1show()

  char cl='i'

  sl-=cl

  s1.show();

 }

答案:

1.D 2.A 3.B 4.D 5.C6.B 7.A 8.D 9.C10.B11.C12.B13.B14.C 15.A16.C 17.B 18.B19.B 20.A

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

二、填空答案  

  ●基本概念题(8) 

  1.某类整数a满足的条件为:①a小于等于100 a大于等于10,③a的十位数是个位

数的2倍或个位数是十位数的2倍。  

    请用一个逻辑表达式  (  a<100 && a>=10 &&(a/10==(a%10)*2||2*(a/10)==(a%10))  ) a表示出来。

    2c++中编译预处理有三种形式,分别是:__包含文件____,__宏定义___ ______,____条件与编译_________

    3.面向对象程序设计语言的四个要素是:_封装性__________,__继承与派生________________,__多态性_____________,__重载________

    ●阅读程序写结果(10)

    4(1)若有宏定义:

    #define A 2

    #define B(n) (n*(A+2)n*2)

    则执行语句“int w=2w*=2*(A*B(A+2))+3"后,W的值为_____86_____

    5(1)[程序]

    #include<iostream.h>

    #define N 5

    void fun();

    void main()

    {  for(int i=1i<Ni++)

    fun()

  cout<<endl

}

void fun()

{

    static int a

    int b=2

    cout<<(a+=3a+b)<<" "

}

运行结果为:(  5  8  11   14 )

6(3)[程序]

#include<iostreamh>

void main()

{

  char s[]="I am a studentYou are a student too"

  int a[26]={0)

  char *p=S   

  while(*p++!=0)

  {

     if(*p>='A' && *p<='Z')a[*p-'A']++

     else if(*p>='a' && *p<='z') a[*p-'a']++

  }

    for(int i=0i<26i++)

      if(a[i]!=0)cout<<(char)(i+'a')<<""<<a[i]<<endl

 }

程序运行后出现的前三行结果为:

  ( a:4 )    ( d:2 )    ( e:3 )

7(3)[程序]

  #include<iostream.h>

  class Q

  {

    int xy 

    static int z

 public

  Q(int aint b){x=a+by=a*bz+=x+y}

  void show(){cout<<x<<'\t'<<y<<'\t'<<z<<endl}

  } 

  int Q::z=10

  void main()

  {

    Q ql(1010)

    q1show()

    Q q2(2020)

    q2.show()

    q1.show()

  }

程序运行后输出的第一、二、三行分别是

  ( 20  100  130  )    ( 40  400  570  )  ( 20  100  570 )

8(2)[程序]

 

#include<iostreamh>

class AA

{

  int x

public

  int y

  AA(int aint b){y=b-ax=y+y;}

  int showx(void){return x)

}

class BBpublic AA

{

public

    BB(int c)AA(Cc+c){)

    int showy(void){return y)

)

class CCpublic AA

{

public

  CC(int d)AA(dd+d){)

  int showy(void){return y)

)

class DDpublic BBpublic CC

{

public

    DD(int e)BB(e+50)CC(e-50){}

)

void main()

{

  DD d(80)

  cout<<d.BB::showy()<<'\t'<<d.CC::showy()<<endl

cout<<d.BB::showx()<<'\t'<<d.CC::showx()<<endl

}

程序运行结果为:

  (  130  30   )    (    260  60   ) 

    ●完善程序(12)

    9(4)编写一个程序采用递归方法逆序放置a数组中的元素。

    [方法说明]调用一个invert函数来进行数组逆置。invert(sij)函数采用递归方法实

现,每次将S的第i个元素和第j个元素进行交换,直到i大于或等于j为止。

    [程序]

    #include<iostreamh>

    (   void invert(int *, int, int)  )    //函数invert()的原型说明

    void main()

    {

     int a[10]={0123456789)i;

     (   invert(a,0,9)   )    //调用invert()函数

     for(i=0i<=9i++)

          cout<<a[i]<<""

     cout<<endl

     void invert(int  *sint iint j)

      {

       int t

       if(i<j)

       {

          t=*(s+i)

          (  *(s+i)=*(s+j)   )

          *(s+j)=t

         (   invert(s,i+1,j-1)   )

       }

      }

    10(4)重载运算符“一=”,直接实现在一个字符串中删除某个字符的功能。例如:

字符串“Microsoft Visual C++6O”与i做“一=”运算后的结果为“Mcrosoft Vsual C++

60

    [程序]

    #include<iostream.h>

    #include<string.h>

    class string 

    {

       char*a

    public

      string(char *s)

      {

       if(s)

       {

             (   a=new char[strlen(s)+1]   )

             strcpy(as)

       }

       else

         a=0

      }

  string()

  {

    if(a) delete[ ]a

   }

  string &operator -=(char c)

  void show()

  {

     cout<<a<<endl

  }

 (  string &string::operator-=(char c)   ) //重载函数的定义

 {

   char*p=a

   while(*p)

  {

     if(*p==c)

     {

         for(char *q=p*qq++)

           (   *q=*(q+1)   )

     }

    else  (   p++   )

  }

  return *this;

 void main()

 {

  string sl("Microsoft Visual C++60")

  s1show()

  char cl='i'

  sl-=cl

  s1.show();

 }