江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
江蘇計算機等級考試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();

 }

 

 

 

 

彩票30选5开奖结果