<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>
                  江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
                  2011春江蘇省計算機二級VC++試題

                  第二部分  C++語言程序設計

                  選擇題(用答題卡答題,答案依次填在2l”30答題號內)

                  21.下列關于switch語句的描述中,不正確的是___(21)___ 。

                  A.switch語句中的default子句可以沒有,也可以有一個

                  B.switch語句中的每一個case子句中必須有一個break語句

                  C.switch語句中的default子句可放在switch語句中的任何位置

                  D.switch語句中的case子句后面的表達式只能是整型、字符或枚舉類型常量

                  22.設有說明語句:int a=1,b=2;float x=3,y:4:以下賦值中存在語法錯誤的是___(22)___

                      A.  a=++x;    B.  y=++b;    C.  b++=x++;    D. b+=x++ + y++

                  23.設有說明語句:char ss[]={“I am a student.”};static float x[20];

                  下列選項中,存在語法錯誤的是___(23)___

                    A.cout<<ss;    B.cin>>ss;    C.cout<<x;   D.cin>>x;

                  24.設有說明語句:float  f(int &a,int b):int  x,y;以下對函數f的調用語句中,正確的是(24)

                  A.f(x,y) ;  B.f(&x,y);    C.f(15,20);    D.f(*x,y);

                  25.設有說明:int a=1O,b=15,c;執行語句:c=a ||(a+=b)||(++b);a、b、c的值分別為___(25)___

                  A.10,15,1   B.25,16,1    C.10,15,10   D.25,15,1

                  26.下列關于函數重載的描述中,不正確的是___(26)___    。

                  A.兩個或兩個以上的函數取相同的函數名,但形參的個數不同

                  B.兩個或兩個以上的函數取相同的函數名,各函數的返回值的類型必須不同

                  C.兩個或兩個以上的函數取相同的函數名,形參的個數相同但類型不同

                  D.兩個或兩個以上的函數取相同的函數名,形參的個數不同或類型不同

                  27.C++的集成環境中,系統約定c++源程序文件缺省的擴展名為___(27)___

                  A.vc   B.c++    C.vc++   D.cpp

                  28.用友元函數進行雙目運算符重載時, 該友元函數的參數表中應定義___(28)___個參數

                      A.O    B.  1    C.2   D.3

                  29.以下有關抽象類的敘述中,正確的是___(29)___

                    A.抽象類不能含有純虛函數

                    B.可以定義抽象類的對象

                  C.在抽象類中至少含有一個沒有函數體的虛函數

                  D.抽象類不能作為基類派生出新的類

                  30.以下有關this指針的敘述中,不正確的是___(30)___

                    A.當調用對象的非靜態成員時,總存在一個this指針

                    B.非靜態成員函數調用類中的成員時,可直接使用this指針

                    C.this指針隱含地指向要用到的當前對象

                    D.靜態成員函數也存在this指針

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

                  ●基本概念題,5

                  1.成員函數實現雙目運算符重載時, 該運算符的左操作數是___(1)___ , 其右操作數是___(2)___  。

                  2.C++,類的繼承方式有三種:保護繼承,私有繼承和___(3)___    。

                  3.在定義全局變量和靜態變量時,若沒有設置其初值,則這兩種變量的初值為___(4)___  。

                  4.c++,標識符是以___(5)___或下劃線開頭的,由字母、數字和下劃線組成的字符序列.

                  ●閱讀程序題,13

                  5.[程序](2)

                    #include <iostream.h>    t

                    int a=1O;

                    void fun(void)

                    {

                      int a=15;

                      ::a-=--a;

                      cout<<::a<<’\t’<<a<<’\n’;

                    }

                    void main(void)

                    {

                      int a=15;

                      for(int i=-10;i<a+::a;i++) fun();

                    }

                      執行程序后輸出的第一行是___(6)___,第二行是___(7)___。

                  6.[程序](2)

                    #include <iostream.h>

                    void main(void)

                    {

                      int i=1,j=1;

                      for(:j<10;j++){

                        if(j>5){i+=2;break;}

                        if(j%2!=0){

                           j+=2;

                           continue;

                       }

                       cout<<i<<’\t’<<j<<’\n’;

                      }

                      cout<<i<<’\t’<<j<<’\n’;

                   }

                    執行程序后輸出的第一行是___(8)___ ,第二行是___(9)___  .

                  7.[程序](2)

                    #include<iostream.h>

                    int f(int &x,int &y)

                    {

                      x+=y;

                  y+=x;

                  return(x>y?x:y);

                    }

                  void main(void)

                  {

                      int x=20,y=30,z;

                      z=f(x,y):

                      cout<<x<<’t’<<y<<’t’<<z<<endl;

                      z=f(y,x):

                      cout<<x<<’t’<<y<<’t’<<z<<endl ;

                    }

                  執行程序后輸出的第一行是___(10)___,第二行是___(11)___.

                  8.[程序](2)

                  #include <iostream.h>

                  int f1(int n)

                    

                      if(n==1)return 1;

                      else return n*n+f1(n-1);

                  }

                  int f2(int n)

                  {

                      int mul=1;

                      if(n==1) mul=1;

                      else mul= n*f2(n-1);

                      return mul;

                  }

                  void main(void)

                  {

                      cout<<f1(3)<<endl;

                      cout<<f2(4)<<endl;

                  }

                  執行程序后輸出的第一行是___(12)___,第二行是___(13)___

                  9.[程序](3) 

                  #include <iostream.h>

                  char *str(char *p1,char*p2)

                  {

                      char *p=p1;

                      while(*p)p++;

                      *p++=’’;

                      while(*p++=*p2++);

                      *p++=’’;

                      return p1;

                  }

                  void main(void)

                  {

                  char s1[200]={“NanJin”};

                  char s2[200]={“is”};

                  char s3[]={“good”};

                  cout<<str(s2,s3)<<’\n’;

                  cout<<str(s1,s2)<<’\n’ ;

                  cout<<s1<<’ !’<<s2<<’ !’<<s3<<’\n’;

                      執行程序后輸出的第一行是___(14)___ ,第二行是___(15)____,第三行是___(16)___

                  1O.[程序](2)

                    #include<iostream.h>

                  class A{

                      int x,y;

                  public:

                    A(int a,int b){x=a;y=b;}

                    virtual void funl(){cout<<“x+y=“<<x+y<<“n”;}

                  ;

                  class B:public A{

                      int m,n;

                  public:

                    B(int a,int b,int c,int d) :A(c,d){m=a ;n=b ;}

                  void fun1(){cout<<“m*n= ”<<m*n<< ”\n”;}

                   };

                  void print(A &ra){ra.fun1();}

                  void main(void)

                  {

                    A a(10,20),*pa;

                    B *p;

                    p=new B(20,30,40,50);

                    p->fun1();

                  pa=&a; pa->fun1();

                  pa=p;  pa->fun1();

                  print(a);

                  delete p;

                  }

                  執行程序后輸出的第二行是___(17)____,第三行是___(18)___

                  完善程序題,12

                  11.設有一條環形鐵路,共有n個車站,現有檢查組去檢查每個車站的服務質量,從第i個車站開始檢查,每隔m(已檢查過的車站不計算在內)個車站作為下一個要檢查的車站,直到所有車站都檢查完為止。下面的程序功能是:按以上要求計算出依次檢查的車站序號,并輸出計算的序號序列和檢查循環的圈數。例如,假設共有20個車站,車站的序號依次為:1,2,3,…,19,20;要求從第3個車站開始檢查,間隔5個車站,則檢查車站的順序為:   

                    3->8->13->18->4->10->16->2->11->19->7->17->9->1->15->14->20->6->12->5

                    函數check()中的count記錄檢查完所有車站時要繞環形鐵路的圈數。

                    [程序](4)

                    #include<iostream.h>

                    #define N 100

                    int check(int x[],int y[],int n,int i,int m) //x存放車站序號,y存放依次檢查的車站

                    {//n總車站數,i開始檢查的車站號,m要間隔的車站數

                      int k=O,k1,count=0; //k記錄已檢查車站的個數

                      x[O]=n;    //初始化數組x,x[0]記錄最后一個車站號

                      for(int j=1;j<n;j++) x[j]=j;

                      y[k++]=i:    //i為第一個檢查的車站

                      x[i]=-1:    //“i]為一1,表示該車站已檢查

                      j=i;

                      while( ___(19)___){

                        k1=O;    //k1累加間隔車站個數

                        while(k1<m){  

                           j++;

                           if(j>=n){

                      .      count++;

                             j=___(20)___;

                        }

                        if(x[j]!=-1)k1++;

                       }

                       y[k++]= ___(21)___;

                       x[j]=-1;

                      }

                      return count;

                     }

                    void main(void)

                    {

                      int A[N],B[N],n,m,i,j,k=O,k1,num;//A記錄車站序號,B記錄檢查順序

                      cout<<”輸入車站個數n,第一個開始檢查的車站號i,間隔的車站數m:”;

                      cin>>n>>i>>m;

                      num=___(22)___ ;

                      cout<<“檢查順序:”<<endl;    //輸出依次檢查車站的序號

                      for(j=O;j<n-1;j++)

                        cout<<B[j]<<“>“;

                      cout<<B[j]<<endl:

                      cout<<“全部檢查完各個車站,共要循環的圈數為:”<<num<<endl;

                    }

                  12.以下程序的功能是:求滿足以下條件的所有三位數:(1)該三位數是某一個二位數的平方:(2)該三位數的個位數、十位數和百位數各不相同,l9這九個數字在該數中至多只允許出現一次.要求每行輸出五個數。例如,滿足以上條件的所有三位數有13,分別為:

                      169    196    256    289    324

                      361    529    576    625    729

                      784    841    961

                      [程序](4)

                      #include <iostream.h>

                      int f(int y)    //y若滿足條件,返回1:否則返回O

                      {

                      int i,j,k;

                      i=y%10;    //求個位數

                      j=___(23)___ ;    //求十位數

                      k=y100;

                      if( ___(24)___)    //判是否有相同的數字

                         return 0;

                      for(i=11:i<=31:i++)    //32.32=1024,已超過三位數

                        if(___(25)___) return 1;

                      return 0;   

                    }

                    void main(void)

                    {

                      int x[22]={0},count=O;

                      for(int i=102:i<987;i++){

                        if(f(i)){

                            ___(26)___ ;

                           count++;

                        }

                      }

                      for(i=0;i<count;i++){

                        cout<<x[i]<<’t’;

                        if((i+1)%5==0)cout<<’\n’;

                      }

                      cout<<’n’<<“共有:”<<count<<“個三位數滿足條件.n”;

                    }

                  13.在以下程序中,函數create()根據鍵盤依次輸入的整數建立一條單向無序鏈表,鏈表上的每一個結點包含一個整數;函數sort()根據鏈表結點的數據按從小到大的順序將鏈表調整為一條有序鏈表;函數print()將鏈表上的整數依次輸出;函數del()將鏈表刪除。

                      排序算法提示:(1)初始時,使P指向鏈表的首結點,(2)P之后的所有結點中找出data值最小的結點。(3)p1指向該結點,并將P指向結點的data值與pl指向結點的data值進行交換,P指向下一個結點,(4)重復步驟(2)(3),直至P指向鏈表的最后一個結點為止·

                      [程序](4)

                      #include<iostream.h>

                      struct Node{

                        int  data;

                        Node *next;

                      };

                      Node *sort(Node *head)

                      {

                      Node *p=head,*p1,*p2;

                      if(p==NULL)return head;

                      while(p->next!=NULL){   

                      p1=p;

                      __________(27)___________;

                      while(p2!=NULL){

                        if(p2->data<p1->data) ___(28)___;

                       p2=p2->next;

                      }

                      if(p!=p1){

                         int t;

                         t=p->data;

                         p->data=p1->data;

                         p1->data=t;

                      }

                      p=p->next;

                     }

                      return head;

                   }

                   Node *creat(void)

                  {

                      Node *h=NULL,*p,*p1;

                      int data=1;

                      while(data){

                         cout<<“輸入一個整數,0表示輸入結束:”;

                         cin>>data;

                         if(data){

                             p=new Node:

                             p->data=data;

                             p->next=NULL;  

                             if(h==NULL)

                               h=p1=p;

                             else{

                               ___(29)___;

                               p1=p;

                          }

                        }

                      }

                      return h;

                  }

                  void print(Node *p)

                  {

                      while(p){

                        cout<<p->data<<’t’;

                        p=p->next;

                      }

                      cout<<’n’;

                  }

                  void del(Node *h)

                  {

                      Node *p;

                      while(h){

                        p=h;

                       ___(30)___

                      delete p;

                      )

                  }

                  void main(void)

                  (

                      Node *head;

                      head=creat();

                      cout<<“鏈表上的數據為:”;

                      print(head);

                      head=sort(head);

                      cout<<“排序后鏈表上的數據為:”;

                      print(head);

                      del(head);

                      cout<<endl;

                  }

                   

                   

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