1. <small id="kntrr"><delect id="kntrr"></delect></small>
    2. <sub id="kntrr"></sub>
        1. <form id="kntrr"><listing id="kntrr"></listing></form>
            江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
            江蘇計算機等級考試vc++沖刺模擬試題1

            第二部分:Vc++程序設計

             C++語言程序設計理論部分

              一、選擇題(30)

              21•設有定義“float y=5.16347;int 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=6;float b=l,c=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]={lOO,200,300,400,500};int *P1=&a[0]",b=*++P1,則b*P1的值分別為___。

             

                A100 200    B200 200    C)101 101 D100 101

              25.下面給出的程序的輸出結果不正確的是 _________ 。

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

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

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

               Dchar s1[]="567",s2[]=123;strcpy(sl,s2);cout<<s1;結果:123

              26.設有變量說明“int a[][2]={{2,5},{4,8}};int *pa,(*pb)[2];"則執行語句"pa=&a[0][0];pb=a;"后,

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

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

             2 7.下列關于數組的應用中,__________是正確的。

              Aint a[5]={1,2,3,4,5);int b[5];b=a;  cout<<b

              Bint a[5]={1,2,3,4,5);int b[5]; strcpy(a,b);  cout<<b;

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

              Dchar a[5]=1234;char 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=2;w*=2*(A*B(A+2))+3;"后,W的值為__________。

                5(1)[程序]

                #include<iostream.h>

                #define N 5

                void fun();

                void main()

                {  for(int i=1;i<N;i++)

                fun();

              cout<<endl

            }

            void fun()

            {

                static int a;

                int b=2

                cout<<(a+=3,a+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=0;i<26;i++)

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

             }

            程序運行后出現的前三行結果為:

              ( 11 )  ,  ( 12 )  ,  ( 13 )

            7(3)[程序]

              #include<iostream.h>

              class Q

              {

                int x,y; 

                static int z

             public

              Q(int a,int b){x=a+b;y=a*b;z+=x+y;}

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

              }; 

              int Q::z=10;

              void main()

              {

                Q ql(10,10);

                q1show();

                Q q2(20,20);

                q2.show();

                q1.show();

              }

            程序運行后輸出的第一、二、三行分別是

              ( 14 )  ,  ( 15 )  ( 16 )

            8(2)[程序]

             

            #include<iostreamh>

            class AA

            {

              int x;

            public

              int y;

              AA(int a,int b){y=b-a;x=y+y;}

              int showx(void){return x;)

            };

            class BBpublic AA

            {

            public

                BB(int c)AA(C,c+c){);

                int showy(void){return y;)

            );

            class CCpublic AA

            {

            public

              CC(int d)AA(d,d+d){);

              int showy(void){return y;)

            );

            class DDpublic BB,public 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(s,i,j)函數采用遞歸方法實

            現,每次將S的第i個元素和第j個元素進行交換,直到i大于或等于j為止。

                [程序]

                #include<iostreamh>

                (   19  )    //函數invert()的原型說明

                void main()

                {

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

                 (   20   )    //調用invert()函數

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

                      cout<<a[i]<<",";

                 cout<<endl;

                 void invert(int  *s,int i,int 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(a,s);

                   }

                   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;*q;q++)

                       (   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=2;w*=2*(A*B(A+2))+3;"后,W的值為_____86_____。

                5(1)[程序]

                #include<iostream.h>

                #define N 5

                void fun();

                void main()

                {  for(int i=1;i<N;i++)

                fun();

              cout<<endl

            }

            void fun()

            {

                static int a;

                int b=2

                cout<<(a+=3,a+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=0;i<26;i++)

                  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 x,y; 

                static int z

             public

              Q(int a,int b){x=a+b;y=a*b;z+=x+y;}

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

              }; 

              int Q::z=10;

              void main()

              {

                Q ql(10,10);

                q1show();

                Q q2(20,20);

                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 a,int b){y=b-a;x=y+y;}

              int showx(void){return x;)

            };

            class BBpublic AA

            {

            public

                BB(int c)AA(C,c+c){);

                int showy(void){return y;)

            );

            class CCpublic AA

            {

            public

              CC(int d)AA(d,d+d){);

              int showy(void){return y;)

            );

            class DDpublic BB,public 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(s,i,j)函數采用遞歸方法實

            現,每次將S的第i個元素和第j個元素進行交換,直到i大于或等于j為止。

                [程序]

                #include<iostreamh>

                (   void invert(int *, int, int)  )    //函數invert()的原型說明

                void main()

                {

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

                 (   invert(a,0,9)   )    //調用invert()函數

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

                      cout<<a[i]<<",";

                 cout<<endl;

                 void invert(int  *s,int i,int 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(a,s);

                   }

                   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;*q;q++)

                       (   *q=*(q+1)   )

                 }

                else  (   p++   )

              }

              return *this;

             void main()

             {

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

              s1show();

              char cl='i'

              sl-=cl

              s1.show();

             }

             

             

             

             

            国产在线精品一区二区三区不卡_亚洲第一极品精品无码_永久免费无码网站在线观看_亚洲av综合日韩