<source id="v77gz"></source>
    <u id="v77gz"><p id="v77gz"></p></u>

      <samp id="v77gz"></samp>

      <var id="v77gz"><td id="v77gz"><ins id="v77gz"></ins></td></var>

      <video id="v77gz"></video>
      <source id="v77gz"></source>
    1. 江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
      2008秋江蘇計算機c++試題試卷

      21 以下關于邏輯運算的描述中,正確的是_______

       A.所有的邏輯運算都是雙目運算,其優先級相同

       B.邏輯運算中存在雙目運算和單目運算,其優先級相同

        C.所有的邏輯運算都是雙目運算,其優先級各不相同

        D.邏輯運算中存在雙目運算和單目運算,其優先級各不相同

      22.對于whiledowhile循環語句,以下描述正確的是:  。

        Adowhile語句中的循環體至少執行一次

        B.兩個語句中的循環體可能都不執行

        Cwhile語句中的循環體至少執行一次

        D.兩個語句中的循環體至少執行一次   

      23.以下說明語句中,不存在語法錯誤的是  。

        Achar sl[4]={"a","b","c"};    Bchar s2[4]={'a','b'};

        Cchar s3[]={'I am a student'};Dchar s4[14]={"I am a student"};

      24.設變量a,b,c為整型變量,以下選項中存在語法錯誤的是  。

          Ac=a+++b    Bc=a+b++;

          Cc=b++=c++;   Dc=++a=b++;

      25.設有程序段: 

          x=-1

          if(a!=0){if(a>0) x=1;}else x=0;

        該程序段表示的數學函數關系是 。

       

      26.以下關于兩個同類型指針變量的敘述中,在一定條件下,運算結果沒有實際意義的是

        A.兩個指針變量可以互相賦值    B.兩個指針變量進行比較運算

        C.兩個指針變量進行減法運算    D.兩個指針變量進行加法運算

      27.下列有關構造函數的敘述中正確的是( )  。   

        A.類的構造函數不能重載        B.任何一個類必定有構造函數

        C.可以定義沒有構造函數的類    D.任何一個類必定有一個缺省的構造函數

      28C++中運算符重載可以改變(28)  。

          A.運算符的優先級      B.運算符的結合性

          C.運算符實現的功能    D.運算符的操作數的個數

      29.以下關于基類指針和派生類指針的敘述中不正確的是(29)  。   

          A.基類指針可以指向它的公有派生類的對象

          B.基類指針可以指向它的多次派生后的派生類的對象

          C.派生類的指針不能指向基類的對象

          D.若基類指針指向派生類的對象,通過該基類指針可以訪問派生類對象的所有成員

      30.以下關于友元函數的敘述中,正確的是 。

        A.友元函數不能訪問類的私有成員

        B.友元函數破壞了類的封裝性和隱藏性

        c.友元函數的使用與類的成員函數相同

        D.友元函數的實現必須在類的說明中定義

      二、填空題(請將答案填寫在答題紙的相應答題號內,每個答案只占一行)

      ●基本概念題(5)

      1.設有語句:

          int a=5,b=6,c;c=!a&&b++;

        執行以上語句后,變量b的值為( )。

      2.在定義派生類時,如果沒有指定基類的派生(繼承)方式,則缺省(默認)的繼承方式是

          (  )

      3c++中編譯預處理包括:文件包含、宏和(   )  。

      4.要將一個函數定義為內聯函數時,通常在定義函數時使用關鍵字 (  )  。

      5c++中表達式"I am a student"的值為該字符串的(  )  。

      ●閱讀程序題(13)

      6[程序](2)

          #include  <iostream.h>

          void f(int a[])

          {int t=a[0];  

           a[0]=a[1];a[1]=t;    

           cout<<a[0]<<'\t'<<a[1]<<'\n';

          }

          void main(void)

          {int b [2]={300,500};

           f(b);  cout<<b[O]<<'\t'<<b[1]<<'\n';

          }

          程序輸出的第一行是(_______)  ,第二行是(_________)

      7[程序](2)

          #include <iostream.h>

          int fa(int a)

          {static int m=1;m=a*m;  retum m;}

          void main(void)

          {for(int i=2;i<=4;i++)  cout<<fa(i)<<'\n';}

       

      8.[程序](2)

          #include <iostream.h>

          int f1(int a[3][3])

          {int sum=O;

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

            for(int j=0;j<3;j++){

              if(a[i][j]>O)continue;

              sum+=a[i][j];

          }

          return sum;

          }

          int f2(int a[3][3])

          {int sum=0;

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

            for(int j=O;j<3;j++){

                if(a[i][j]<0)break;

                sum+=a[i][j];

            }

            return sum;

          }

          void main(void)

          {int b[3][3]={{1,2,3},{7,-12,-13},{-20,9,-5}};

           int s1,s2;

           s1=f1(b);  s2=f2(b);

           cout<<s1<<endl;  cout<<s2<<endl;

          }

          程序輸出的第一行為 _____ ,第二行為_________。

      9.[程序](3)

          #include<iostream.h>

          int f(int x[],int n)

          {if(n==1)x[n]=3;

          else x[n]=n+f(x,n-1);

          cout<<x[n]<<'\n';

          return x[n];

          }

          void main(void)

          {int b[5]={3,4,5,6,0};

           f(b,3);

           for(int i=0;i<5;i++)  cout<<b[i]<<'\t';

           cout<<endl;

          }

        程序輸出的第一行是()  ,第二行是()  ,第三行是(  )。

      10[程序](2)

          #include<iostream.h>

          class A{

              int x;

          public:

              A(int a){x=++a;}

              ~A(){cout<<x<<'\n';}

              int get(){return x;}

          };

          class B:public A{

               int y;

          public:

               B(int b):A(b){y=get()+b;}

               B():A(5){Y=6;}

               ~B(){cout<<y<<'\n';}

          };

          void main(void)

          {B b(5);    。

          }

          程序輸出的第一行是( )  ,第二行是(  )  。

      11[程序](2)

          #include<iostream.h>

          class A{

                int x;

          public

                A(int x=0)  {this->x=x;}

                virtual void f(){cout<<x<<endl;}

          };

          class B;public A{

                int Y

        public

                B(int x,int y=1)A(x)

                {this->y=y;}

                void f(int a){cout<<y<<endl;}

          };

          void main(void)

          {A al(10),*pa;

           B bl(20,30);

           a1.f();

           pa=&a1; pa->f();

           pa=&b1; pa->f();

          }

        程序輸出的第二行是( )  ,輸出的第三行是( )  。

      ●完善程序題(12)

      12.以下程序的功能是:將兩個字符串分別輸入到sls2中,并使s2中的字符按升序排列

        (用函數sort()實現排序)。然后,依次從sl中取一個字符插入到s2中,并使s2中的字符

        保持升序。函數insert(char *p,char c)的功能是將字符c插入到p所指向的字符串中,

        使p所指向的字符串保持升序。函數merge(char *pl,char *p2)依次從p2所指向的字

        符串中取出一個字符,并插入到p1所指向的字符串中。

        [程序](4)

          #include<iostream.h>

          #include<string.h>

          char *sort(char s[])

          {int len=strlen(s);

           for(int i=0;i<len-1;i++)

             for(int j=i+1;j<len;j++)

          if(     ){

            char c=s[i];

            s[i]=s[j];s[j]=c;

          }

          return s;

      }

      void insert(char *p,char c)

      {char *p1=p;

          int len=strlen(P);

          while(*p1<c&&*p1!=0)p1++;

          char *p2=p+len;

          while(p2>=p1){

              (  20  );

              p2--;

          }

          (  21  );

        }

        char *merge(char *p1,char *p2)

        {while(*p2){

              _________;

           p2++;

          }

          retum p1;

        }

        void main(void)

        {char sl[100],s2[200],c;

         cout<<"輸入第一行字符串:";cin.getline(s1,100);

          cout<<"輸入第二行字符串:";cin.getline(s2,100);

          cout<<s1<<'\n'<<s2<<'\n';

          sort(s2);merge(s2,s1);

          cout<<s1<<'\n'<<s2<<'\n';

         }

      13.以下程序中的功能是:通過重載運算符+,-=,分別實現一維數組(向量)的加法(對應元素相加)、減法(對應元素相減)和向量對象之間的賦值,例如:a,b,c是類Arr的對象,a的成員x[]={1,1,1,1,1,1},b的成員x[]={2,2,2,2,2,2},執行:c=a+b,c的成員x[]={3,3,3,3,3,3}

      [程序](4)

          #include<iostreamh>

          class Art{

             float x[20];

             int size;

        public

          Arr(float a[],int n)

          {for(int i=0;i<n;i++) x[i]=a[i];

           size=n;

          }

          Arr()

          {for(int i=O;i<20;i++)x[i]=O;

           size=0;

          }

          Arr operator +(Arr);

          Arr operator -(Arr);

          Arr &operator =(Arr&);

          int GetArr(float y[])

          {  for(int i=0;i<size;i++)y[i]=x[i];

             retum size;

          }

          void print()

          {  for(int i=O;i<size;i++) cout<<[i]<<'\t';

             cout<<'\n'<<"size="<<size<<'\n';

          }

      };

          Arr Arr::operator +(Arr a)

          {Arr tem;

          for(int i=0;i<size;i++)    ________;

          tem.size=size;

          return tem;

          }

          Arr Arr::operator -(Arr a)

          {Arr tem;

          for(int i=0;i<size;i++)   _________ ;

          tem.size=size;

          retum tem;

          }

          Arr &Arr::operator=(________)   

          {for(int i=O;i<a.size;i++)   

           x[i]=a.x[i];   

           size=a.size;

           return  (______)  ;

          }

          void main(void)

          {float b1[6]={10,20,30,40,50,60};

          float b2[6]={100,200,300,400,500,600},b3[6],b416];

          Arr al(b1,6),a2(b2,6),a3,a4;

          a3=al+a2;a4=a2-al;

          a3.print();a4.print();

          int n=a1.GetArr(b3);

          for(int i=0;i<n;i++)cout<<b3[i]<<'\t';

          cout<<'\n'<<n<<'\n';

          }

      14.下面程序的功能是:首先建立一條鏈表,順序從鏈表中找到data為最大值的結點,從鏈表

        中刪除該結點,并將其值返回,最終刪除整個鏈表,同時得到按降序排序的數組x。其中,

        函數Insert(int a,node *head)的功能是:用參數a產生一個新結點,將其插入鏈首,并返

        回鏈首指針。DeleteMax(node,*&head)的功能是:從head所指向的鏈表中找到data值為

        最大的結點,從鏈表中刪除該結點并將其結點值返回。

          算法提示:當鏈表為空時,返回-1。在查找的過程中,始終讓pmax指向當前data

        為最大的結點,并讓pmax1指向pmax的前一個結點。找到data值為最大的結點后,將其

        從鏈表中刪除,并返回其data值。

        [程序](4) 

          #include <iostream.h>

          struct node{

          int data;

          node *next;

          };

          node *Insert(int x,node *head)

          {node *p=new node;

          p->data=x;  (_________);head=p;

          return head;

          }

      int DeleteMax(nodeI&head)

      {node *pl,*p2,*pmax,*pmax1;

        int max;

        p1=p2=head

        if(!head) return -1;

        max=p1->data;pmax=p1;

        while(p1){

          if(max<pl->data){

          max=p1->data;

          pmax=pl;pmax1=p2;

          }

          p2=p1;

          (________) ;

        }

        if(pmax==head) head=head->next;

        else    (_________)  ;

        delete pmax;

        retum max;

      }   

      void main(void)

      { int a;

        int x[200],count=0;

        node  *head=0;

        cin>>a;

        while(a!=-1){

          head=Insert(a,head);

          cin>>a;

        }

        while(head){

          x[count]=(_________);

          count++;

        }  

        for(int i=0;i<count;i++)  cout<<x[i]<<'\t';

        cout<<endl;

      }

       

      中文在线字幕第一页_中文字幕高跟丝袜作品番号_亚洲中文无无码第_日本亚洲欧美国产日韩a??y_在线观看亚洲av无码专区