<samp id="uu9tx"></samp>
        <samp id="uu9tx"><tr id="uu9tx"><nav id="uu9tx"></nav></tr></samp>
        <delect id="uu9tx"><legend id="uu9tx"><meter id="uu9tx"></meter></legend></delect>
                <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp><nav id="uu9tx"></nav>
                <samp id="uu9tx"></samp>
                  <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp>
                  江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
                  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;

                  }

                   

                  亚洲欧美日韩国产一区二区三区_全亚洲免费一级黄片_国产一区二区三区不卡视频手机版_国产污三级网站在线观看