1. <small id="kntrr"><delect id="kntrr"></delect></small>
    2. <sub id="kntrr"></sub>
        1. <form id="kntrr"><listing id="kntrr"></listing></form>
            江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
            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;

            }

             

             

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