<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 計算機二級C++基礎練習題

    時間:2025-03-07 16:45:16 詩琳 計算機等級 我要投稿
    • 相關推薦

    計算機二級C++基礎練習題

      C++不僅擁有計算機高效運行的實用性特征,同時還致力于提高大規模程序的編程質量與程序設計語言的問題描述能力。以下是小編整理的關于計算機二級C++基礎練習題,希望大家認真閱讀!

      計算機二級C++基礎練習題 1

      一、選擇題(每小題1分,共40分)

      1下列有關內聯函數的敘述中,正確的是( )。

      A.內聯函數在調用時發生控制轉移

      B.內聯函數必須通過關鍵字inline來定義

      C.內聯函數是通過編譯器來實現的

      D.內聯函數函數體的最后一條語句必須是return語句

      參考答案:C

      參考解析:一般函數進行調用時,要將程序執行權轉到被調用函數中,然后再返回到調用它的函數中;而內聯函數在調用時,是將調用表達式用內聯函數體來替換,所以在調用時不發生控制轉移。在類內部實現的函數都是內聯函數,可以不用inline定義;只有函數外部定義的內聯函數才必須加關鍵字inline。編譯系統并非對內聯函數必須使用內聯,而且根據具體情況決定。內聯函數不是必須要有返回值的。

      2語句int*P=&k;定義了指針P,與這個語句等效的語句序列是( )。

      A.int* p;P=&k;B.int * P;P=k;C.int * p;* P=&k;D.int * p;* P=k;

      參考答案:A

      參考解析:本題考查指針和地址,題目中定義了一個指向變量k的一個指針p,那么與題目中等效的表達式A選項,即先定義一個指向整型的指針,然后指向k的地址。

      3有如下程序:

      #include

      using namespace std;

      class A

      {

      public:

      A(){cout<<”A”;}

      -A(){cout<<”-A”;}

      };

      class B:public A

      {

      A*P;

      public:

      B(){cout<<”B”;P=new A();}

      -B(){cout<<”~B”; p;}

      };

      int main()

      {

      B obj;

      return 0;

      }

      執行這個程序的輸出結果是( )。

      A.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~A~B~A

      參考答案:B

      參考解析:本題考查派生類的構造函數和析構函數,在定義一個派生類的對象時,先調用基類的構造函數,然后再執行派生類的構造函數。對象釋放時,先執行派生類的析構函數,再執行基類的析構函數。所以本題答案為B。

      4有如下類定義:

      class AA

      {

      im a:

      public:

      int getRef()const{return&a;}//①

      int getValue()const{return a;}//②

      void set(int n)const{a=n;}//③

      friend void show(AA aA.const{cout<

      };

      其中四個函數的定義中正確的是(  )。

      A.①B.②C.③D.④

      參考答案:B

      參考解析:本題考查常成員函數,常成員函數只能引用本類中的數據成員,而不能修改它。所以本題答案為B。

      5若要對Data類中重載的加法運算符成員函數進行聲明,下列選項中正確的是( )。

      A.Data+(DatA.;B.Data operator+(DatA.;C.Data+operator(DatA.;D.operator+(Data,DatA.;

      參考答案:B

      參考解析:根據重載加法運算符的格式,只有B選項正確。

      6有如下數組聲明:int num[10];,下標值引用錯誤的是( )。

      A.num[10]B.num[5]C.num[3]D.hum[o]

      參考答案:A

      參考解析:數組定義中的數字指的是數組的大小,而下標是從0開始的,所以本題中數組的最后一個元素是num[9]。

      7將前綴運算符“--”重載為非成員函數,下列原型中能正確用于類中說明的是(  )。

      A.DeCr&operator--(int);B.DeCr operator--(DeCr&,int);C.friend DeCr&operator--(DeCr&);D.friend DeCr operator--(DeCr&,int);

      參考答案:C

      參考解析:把“--”運算符重載為非成員(友元)函數格式:friend<返回類型>operator--()是前綴的格式;friend<返回類型>operator--(int)是后綴的格式。當然也可以有參數如題中C選項所示。

      8如果派生類以proteCted方式繼承基類,則原基類的proteCted成員和publiC成員在派生類中的訪問屬性分別是( )。

      A.publiC和publiCB.publiC和proteCtedC.proteCted和publiCD.proteCted和proteCted

      參考答案:D

      參考解析:本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,所以本題答案為D。

      9在函數中,可以用aut0、extem、register和static這四個關鍵字中的一個來說明變量的存儲類型,如果不說明存儲類型,則默認的存儲類型是(  )。

      A.autoB.externC.registerD.static

      參考答案:A

      參考解析:變量的存儲方法分為靜態存儲和動態存儲兩大類,包含4種:自動的(auto)、靜態的(static)、寄存器的(register)、外部的(extem)。變量如果沒有說明存儲類型,那么默認就是aut0。

      10下列程序的輸出結果是( )。

      #include

      int rain(iltl a,int B)

      {

      if(a

      else retum b;

      retum 0;

      }

      void main()

      {

      eout<

      }

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

      參考答案:B

      參考解析:本題考查的是函數的調用,第一次調用min(2,3),因為2<3,所以返回值為2,第二次調用min(1,2),因為l<2,所以返回1。

      11在黑盒測試方法中,設計測試用例的主要根據是( )。

      A.程序內部邏輯B.程序外部功能C.程序數據結構D.程序流程圖

      參考答案:B

      參考解析:黑盒測試是對軟件已經實現的功能是否滿足需求進行測試和驗證,黑盒測試完全不考慮程序內部的邏輯結構和內部特性,只根據程序的需求和功能規格說明,檢查程序的功能是否符合它的功能說明,所以本題選擇B。

      12在面向對象方法中,不屬于“對象”基本特點的是(  )。

      A.一致性B.分類性C.多態性D.標識唯一性

      參考答案:A

      參考解析:對象有如下一些基本特點:標識唯一性、分類性、多態性、封裝性、模塊獨立性好。所以選擇A。

      13有以下程序:

      #include

      void fun(int a,int b,int C.

      { a=456,b=567,c=678;}

      void main()

      {

      int X=10,Y=20,Z=30;

      fun(X,Y,z);

      aout<

      }

      輸出結果是( )。

      A.30,20,10B.10,20,30C.456,567,678D.678,567,456

      參考答案:B

      參考解析:本題考查函數中變量的作用范圍,在主函數中給變餐x、Y、Z賦值,然后將其作為實參傳遞給了函數fun(),雖然在函數fun()中改變了這3個變量的值,但只是同名的局部變量,不影響函數中變量的值,所以在調用函數fun()結束后,主函數3個變量的值未改變。

      14對類的構造函數和析構函數描述正確的是( )。

      A.構造函數可以重載,析構函數不能重載

      B.構造函數不能重載,析構函數可以重載

      C.構造函數可以重載,析構函數也可以重載

      D.構造函數不能重載,析構函數也不能重裁

      參考答案:A

      參考解析:一個類中只能定義一個析構函數,否則會造成對同…對象的多次刪除;而構造函數可以根據不同的參數個數和類型進行多次重載。

      15通過運算符重載,可以改變運算符原有的(  )。

      A.操作數類型B.操作數個數C.優先級D.結合性

      參考答案:A

      參考解析:重載運算符的規則如下:①c++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數;④重載不能改變運算符的優先級和結合性;⑤重載運算符的函數不能有默認的參數;⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數全部是c++的標準類型。故本題答案為A。

      16下列關于c++流的描述中,錯誤的是(  )。

      A.cout>>’A’表達式可輸出字符A

      B.eof()函數可以檢測是否到達文件尾

      C.對磁盤文件進行流操作時,必須包含頭文件fstream

      D.以ios_base:0ut模式打開的文件不存在時,將自動建立一個新文件

      參考答案:A

      參考解析:本題考查c++流,想要輸出字符“A”,則應該是cout<<“A”,所以本題答案為A。

      17耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是(  )。

      A.提高耦合性降低內聚性有利于提高模塊的獨立性

      B.降低耦合性提高內聚性有利于提高模塊的獨立性

      C.耦合性是指一個模塊內部各個元素間彼此結合的緊密程度

      D.內聚性是指模塊間互相連接的緊密程度

      參考答案:B

      參考解析:模塊獨立性是指每個模塊只完成系統要求的獨立的子功能,并且與其他模塊的聯系最少且接口簡單。一般較優秀的'軟件設計,應盡量做到高內聚、低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性,所以A錯誤,B正確。耦合性是模塊間互相連接的緊密程度的度量而內聚性是指一個模塊內部各個元素間彼此結合的緊密程度,所以C與D錯誤。

      18若有如下類聲明:

      Class MyClass{ publiC:

      MyClass(  ){Cout<<1;} };

      執行下列語句

      MyClass a,b[2],*p[2]; 程序的輸出結果是(  )。

      A.11B.111C.1111D.11111

      參考答案:B

      參考解析:本題考查默認構造函數和帶參數的構造函數,題目中定義一一個對象a以及對象數組b[2],共執行3次構造函數,對象指針不調用構造函數。所以本題答案為B。

      19下列函數模板的定義中,合法的是(  )。

      A.templateT abs(T X){return x<07-x:X;}

      B.template ClassT abs(T x){return x<07-X:x;}

      C.template Tabs(T X){return x<07-x:X;}

      D.template T abs(T x){return X<0?-X:x;}

      參考答案:A

      參考解析:本題考查模板函數的基本概念.根據模板函數的定義,所以答案為A。

      20有如下程序:

      #include

      using namespace std;

      class Base{

      int x:

      public:

      Base(int n=0):x(n){cout<

      int getX()const{return x;}

      };

      cjass Derived:public Base{

      int Y:.

      J;;Iublic:

      Derived(int m,int n):y(m),Base(n){cout<

      Derived(int m):Y(m){cout<

      };

      int main()

      {

      Derived dl(3),d2(5,7);

      retum 0;

      }

      執行這個程序的輸出結果是( )。

      A.375B.357C.0375D.0557

      參考答案:C

      參考解析:本題考查派生類的構造函數和析構函數,在定義一個派生類的對象時,先調用基類的構造函數,然后再執行派生類的構造函數,對象釋放時,先執行派生類的析構函數。再執行基類的析構函數。本題中定義了一個對象d1,先執行基類的構造函數輸出0,再執行派生類的構造函數輸出3,然后定義了一個對象d2(5,7),其中需要調用基類的構造函數輸出7.最后輸出5,所以答案為c。

      二、簡單應用題(24分)

      請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件main.cpp,其中有日期類Date、人員類Person及排序函數sortByName和主函數main的定義。請在程序中的橫線處填寫適當的代碼并刪除橫線,以實現上述類定義和函數定義。此程序的正確輸出結果應為:

      按姓名排序

      排序前:

      張三 男 出生日期:1978年4月20日

      王五 女 出生日期:1965年8月3日

      楊六 女 出生日期:1965年9月5日

      李四 男 出生日期:1973年5月30日

      排序后:

      李四 男 出生日期:1973年5月30日

      王五 女 出生日期:1965年8月3日

      楊六 女 出生日期:1965年9月5日

      張三 男 出生日期:1978年4月20日

      注意:只能在橫線處填寫適當的代碼,不要改動程序中的其他內容,也不要刪除或移動“//****found****”。

      #include

      using namespace std;

      class Date{//日期類

      int year,month,day;//年、月、日

      public:

      Date(int year,int month,int day):year(year),month(month),day(day){}

      int getYear()const{return year;}

      int getMonth()const{return month;}

      int getDay()const{return day;}

      };

      class Person{ //人員類

      char name[14];//姓名

      bool is—male;//性別,為true時表示男性

      Date birth—date;//出生日期

      public:

      Person(char*name,bool is—male,Date birth_date)

      //***************found***************

      :——————

      {

      {

      strcpy(this一>name,name);

      }

      const char * getName()const{return name;}

      bool isMale()const{return is—male;}

      Date getBirthdate()const{return birth—date;}

      //利用strcmp()函數比較姓名,返回一個正數、0或負數,分別表示大于、等于、小于

      int compareName(const Person&p)const{

      //***************found*****************

      ————}

      void show(){

      cout<

      cout<

      //**************found**************

      __________________________//顯示出生月

      << “birth—date.getDay()<<”日”;//顯示出生日

      }

      };

      void sortByName(Person ps[],int size){

      //將人員數組按姓名排列為升序

      for(int i=0;i

      //采用選擇排序算法

      int m=i;

      for(int j=i+1;j

      if(ps[j].eompareName(ps[m])<0)

      m=j;

      if(m>i){

      Person P=ps[m];

      ps[m]=ps[i];

      ps[i]=p;

      }

      }

      }

      int main(){

      Person staff[]={

      Person(”張三”,true,Date(1978,4,20)),

      Person(”王五”,false,Date(1965,8,3)),

      Person(”楊六”,false,Date(1965,9,5)),

      Person(”李四”,tme,Date(1973,5,30))

      };

      const int size=sizeof(staff)/sizeof(staff[0]);

      int i;

      eout<

      cout<

      for(i=0;i

      sortByName(staff,size);

      cout<

      for(i_0;i

      cout<

      return 0;

      {

      計算機二級C++基礎練習題 2

      一 選擇題(7分,每小題0.5分)

      1.C語言源程序的基本單位是( )。

      A 過程 B 函數 C 子程序 D 標識符

      2.下列程序的輸出結果是( )。

      main( )

      { int a=7,b=5;

      printf("%d ",b=b/a);

      }

      A 5 B 1 C 0 D不確定值

      3.假設變量a,b均為整型,表達式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。

      A 7 B 8 C 9 D 2

      4.設a為int型變量,執行下列賦值語句后,a的取值分別是( )。

      a=125.534; a=(int)125.521%4; a=5<<2;

      A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20

      5.設有如下程序段,下面描述中正確的是 ( )。

      int k=10; while(k=0) k=k-1;

      A 循環執行一次 B循環是無限循環 C循環體語句一次也不執行 D循環體語句執行一次

      6.以下程序的輸出結果為( )。

      int i;

      void prt( )

      { for(i=5;i<8;i++) printf("%c",*);

      printf(" ");

      }

      main( )

      { for(i=5;i<=8;i++) prt( );

      }

      A *** B *** *** *** *** C *** *** D * * *

      7.在C語言程序中,以下說法正確的是( )。

      A函數的定義可以嵌套,但函數的調用不可以嵌套

      B函數的定義不可以嵌套,但函數的調用可以嵌套

      C函數的定義和函數的調用都不可以嵌套

      D函數的定義和函數的調用都可以嵌套

      8.以下函數調用語句中含有( )個實參。

      func((e1,e2),(e3,e4,e5));

      A 2 B 3 C 5 D 語法錯誤

      9.以下程序的輸出結果為( )。

      #define ADD(x) x*x

      main( )

      { int a=4,b=6,c=7,d=ADD(a+b)*c;

      printf("d=%d",d);

      }

      A d=70 B d=80 C d=140 D d=700

      10.已知職工記錄描述如下,在Turbo C中,系統為變量w分配( )字節的空間。

      struct worker

      { int no;

      char name[20];

      char sex;

      union

      { int day; int month; int year;}birth;

      } w;

      A 29 B 20 C 25 D 6

      11.設有以下定義,值為5的枚舉常量是( )。

      enum week{sun,mon=4,tue,wed,thu,fri,sat} w;

      A tue B sat C fri D thu

      12.下面選項中正確的賦值語句是(設 char a[5],*p=a;)( )。

      A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd";

      13.設有以下程序段,則值為6的表達式是( )。

      struct st { int n; struct st *next;};

      static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p;

      p=&a[0];

      A p++->n B ++p->n C p->n++ D (*p).n++

      14.C語言中的文件類型只有( )。

      A 索引文件和文本文件兩種 B 文本文件一種

      C 二進制文件一種 D ASCII碼文件和二進制文件兩種

      二 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分)

      1.在Turbo C中,整型數據在內存中占2個字節。( )

      2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的輸出結果為A。( )

      3.break語句用在循環體中,可結束本層循環,continue語句用在循環體中,可結束本次循環。( )

      4.函數的遞歸調用不過是一個函數直接或間接地調用它自身。( )

      5.函數strlen("ASDFG ")的值是7。( )

      6.通過return語句,函數可以帶回一個或一個以上的返回值。( )

      7.結構體類型只有一種。 ( )

      8.char *p="girl";的`含義是定義字符型指針變量p,p的值是字符串"girl"。( )

      9.若有定義:char *p(char a[10]);則p是函數名。( )

      10.用fopen("file","r+");打開的文件"file"可以進行修改。 ( )

      三 寫出下列程序的運行結果(10分,每小題2分)

      1.float average (float array[10])

      { int i;

      float aver,sum=array[0];

      for (i=1;i<10;i++)

      sum=sum+array[i];

      aver=sum/10;

      return(aver);

      }

      main( )

      { float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;

      int i;

      aver=average (score);

      printf (“average score is %5.2f ”,aver);

      }

      2.main( )

      { char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa;

      for(p=0;p

      printf(“%2c”,*p);

      printf(“ ”);

      printf(“%2c ”,**(pa=&p));

      }

      3.main( )

      { int a,b,s=0;

      for(a=1,b=1;a<=100;a++)

      { if(b>=20) break;

      if(b%3==1)

      { b+=3; continue; }

      b-=5;

      }

      printf(“a=%d b=%d ”,a,b);

      }

      4.main()

      { printf(“main( ) :%d ”,fact(5));

      fact(-5);

      }

      fact(int value)

      { int f;

      if(value<0)

      { printf(“Arg error ");

      return(-1);

      }

      else if(value==1||value==0) f=1;

      else f=value*fact(value-1)+1;

      printf(“This called value=%d ”,f);

      return f;

      }

      5.main( )

      { int a=012,b=0x12,k=12;

      char c=‘102’,d=‘ ’;

      printf(“a=%d b=%d k=%d ”,a,b,k);

      printf(“c=%c,d=%c%o ”,c,d,a);

      a=‘A’; c=49;

      printf(“a=%d c=%c ”,a,c);

      }

      四 閱讀下列程序,在 處填入適當內容,使程序完整(8分,每個空1分)

      1.有一個3*4矩陣,求其中的最大元素。

      max_value( (1) )

      { int i,j,max;

      max=array[0][0];

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

      for(j=0;j<4;j++)

      if(array[i][j]>max)

      max=array[i][j];

      (2) ;

      }

      main( )

      { int a[3][4], i,j;

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

      for(j=0;j<4;j++)

      (3) ;

      printf(“max value is %d ”,max_value(a));

      }

      2.輸入x、y兩個整數,按先大后小的順序輸出x、y。

      #include “stdio.h”

      main( )

      { int x,y, *px,*py, (4) ;

      scanf(“%d%d”,&x,&y);

      (5) ; (6) ;

      if(x

      { p=px; px=py; py=p; }

      printf(“x=%d,y=%d ”,x,y);

      printf(“MAX=%d,MIN=%d ”,*px,*py);

      }

      3.用選擇排序法對任意10個整數按照由小到大排序。

      main()

      { int a[11],i,j,k,t;

      printf("Please input 10 numbers: ");

      for(i=1;i<11;i++) scanf("%d",&a[i]);

      printf(" ");

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

      { (7) ;

      for(j=i+1; (8) ;j++)

      if(a[j]>a[k]) k=j;

      if(k!=i)

      { t=a[k]; a[k]=a[i]; a[i]=t;}

      }

      printf("The sorted numbers: ");

      for(i=1;i<11;i++) printf("%d ",a[i]);

      }

      答案

      一 選擇題(7分,每小題0.5分)

      1. B 2. C 3. B 4. B 5. C

      6. A 7. B 8. A 9. A 10. C

      11. A 12. A 13. B 14. D

      二 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分)

      1.× 2.× 3.√ 4.√ 5.×

      6.× 7.× 8.× 9.√ 10.√

      三 寫出下列程序的運行結果(10分,每小題2分)

      1. 2. 3.

      4. 5.

      四 閱讀下列程序,在 處填入適當內容,使程序完整(8分,每個空1分)

      1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j])

      2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)

      3.(7) (8)

      2003C語言試題3

      一 選擇題(24分,每小題2分)

      1.已知函數fread的調用形式為fread(buffer,size,count,fp),其中buffer代表的是( )。

      A 存放讀入數據項的存儲區 B 存放讀入數據的地址或指向此地址的指針

      C 一個指向所讀文件的文件指針 D 一個整形變量,代表要讀入的數據項總數

      2.以下程序的輸出結果為( )。

      main( )

      { int i=010,j=10;

      printf("%d,%d ",i++,j--);

      }

      A 11,9 B 9,10 C 8,10 D 9,9

      3.設a為int型變量,執行下列賦值語句后,a的取值分別是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;

      A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20

      4.設i和k都是int類型,則for循環語句( )。

      for(i=0,k=-1;k=1;i++,k++) printf("****");

      A 循環結束的條件不合法 B 循環體一次也不執行 C 循環體只執行一次 D 是無限循環

      5.以下程序的輸出結果為( )。

      main( )

      { char c;

      int i;

      for(i=65;i<68;i++)

      { c=i+32;

      switch(c)

      { case a:case b:case c:printf("%c,",c);break; default:printf("end");}

      }

      }

      A a,b,c,end B a,a,a,end C a,a,a, D a,b,c,

      6.函數調用語句:fseek(fp,-10L,2);的含義是( )。

      A 將文件位置指針從文件末尾處向文件頭的方向移動10個字節

      B 將文件位置指針從當前位置向文件頭的方向移動10個字節

      C 將文件位置指針從當前位置向文件末尾方向移動10個字節

      D 將文件位置指針移到距離文件頭10個字節處

      7.以下程序的輸出結果為( )。

      main( )

      { char s1[40]="country",s2[20]="side";

      int i=0,j=0;

      while(s1[i]!=) i++;

      while(s2[j]!=) s1[i++]=s2[j++];

      s1[i]=0;

      printf("%s ",s1);

      }

      A side B country C sidetry D countryside

      8.下列說法不正確的是( )。

      A 主函數main中定義的變量在整個文件或程序中有效

      B 不同函數中,可以使用相同名字的變量

      C 形式參數是局部變量

      D 在一個函數內部,可以在復合語句中定義變量,這些變量只在本復合語句中有效

      9.在下列程序段中,枚舉變量 c1的值是( )。

      enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white;

      A 1 B 3 C 5 D 6

      10.設有說明 int (*ptr)();其中標識符ptr是( )。

      A 是一個指向整形變量的指針 B 是一個指針,它指向一個函數值是int的函數

      C 是一個函數名 D定義不合法

      11.定義由n個指向整形數據的指針組成的數組p,其正確的方式為( )。

      A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );

      12.具有相同類型的指針類型變量p與數組a,不能進行的操作是( )。

      A p=a; B *p=a[0]; C p=&a[0]; D p=&a;

      二 判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分)

      1.參加位運算的數據可以是任何類型的數據。( )

      2.若有定義和語句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過鍵盤輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( )

      3.C語言把文件看作是一個字符(字節)的序列。( )

      4.若有宏定義:#define S(a,b) t=a;a=b;b=t由于變量t沒定義,所以此宏定義是錯誤的。( )

      5.在Turbo C中,下面的定義和語句是合法的:file *fp;fp=fopen("a.txt","r");( )

      6.若有定義:char s[ ]="china";則Turbo C系統為數組s開辟6個字節的內存單元。( )

      7.若有定義和語句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];則sum=21。( )

      8.若有定義和語句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);輸出結果是1。( )

      9.在程序中定義了一個結構體類型后,可以多次用它來定義具有該類型的變量。( )

      10.在Turbo C中,此定義和語句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( )

      三 寫出下列程序的運行結果(36分,每小題6分)

      1.main( )

      { int i=29,j=6,k=2,s;

      s=i+i/j%k-9;

      printf(“s=%d ”,s);

      }

      2.main( )

      { int x=31,y=2,s=0;

      do

      { s-=x*y;

      x+=2;

      y-=3;} while( x%3==0);

      printf(“x=%d y=%d s=%d ”,x,y,s);

      }

      3.main( )

      { int a[6]={10,20,30,40,50,60},i;

      invert(a,0,5);

      for(i=0;i<6;i++) printf(“%d,”,a[i]);

      printf(“ ”);

      }

      invert(int s[ ],int i,int j)

      { int t;

      if(i

      { invert(s,i+1j-1);

      t=s[i];s[i]=s[j];s[j]=t;

      }

      }

      4.#include

      main()

      { char str[ ]=“The C program”,c;

      int i;

      for(i=2;(c=str[i])!=‘’;i++)

      { switch(c)

      { case ‘g’: ++i; break;

      case ‘o’: continue;

      default: printf(“%c”,c); continue;

      }

      printf(“*”);

      }

      printf(“ ”);

      }

      5.struct w

      { char low;

      char high;

      };

      union u

      { struct w byte;

      short word;

      }uw;

      main( )

      { int result;

      uw.word=0x1234;

      printf(“word value:%04x ”,uw.word);

      printf(“high byte:%02x ”,uw.byte.high);

      printf(“low byte:%02x ”,uw.byte.low);

      uw.byte.low=0x74;

      printf(“word value:%04x ”,uw.word);

      result=uw.word+0x2a34;

      printf(“the result:%04x ”,result);

      }

      6.main()

      { char *s2=“I love China!”,**s1=&s2;

      char *s3,c,*s4=“w”;

      s3=&c;

      *s3=‘H’;

      s2=s2+2;

      printf(“%s %c %s %c ”,s2,*s3,s4,**s1);

      }

      四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分)

      1. 百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問大、中、小馬各多少匹?

      main( )

      { int hb,hm,hl,n=0;

      for(hb=0;hb<=100;hb+= (1) )

      for(hm=0;hm<=100-hb;hm+= (2) )

      { hl=100-hb- (3) ;

      if(hb/3+hm/2+2* (3) ==100)

      { n++;

      printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl);

      }

      }

      printf("n=%d ",n);

      }

      2.用“起泡法”對輸入的10個字符排序后按從小到大的次序輸出。

      #define N 10

      char str[N];

      main()

      { int i,flag;

      for(flag=1;flag==1;)

      { scanf("%s",str);

      flag=0;

      printf(" ");

      }

      sort(___(4)___);

      for(i=0;i

      printf("%c",str[i]);

      printf(" ");

      }

      sort(char str[N])

      { int i,j;

      char t;

      for(j=1;j

      for(i=0;(i

      if(str[i]>str[i+1])

      { t=str[i];

      ____(5)____;

      ____(6)____;

      }

      }

      3.以下程序是一個函數,功能是求二階矩陣(m行n列矩陣)的所有靠外側的各元素值之和。(本程序中二階矩陣用一維數組來表示。)

      例如,矩陣為:

      3 0 0 3

      2 5 7 3

      1 0 4 2

      則所有靠外側的各元素值之和為3+0+0+3+2+3+1+0+4+2=18。

      add(int m,int n,int arr[])

      { int i,j,sum=0;

      for(i=0;i

      for(j=0;j

      sum=sum+ (7) ;

      for(j=0;j

      for(i=1; (8) ;i++)

      sum=sum+arr[i*n+j];

      return(sum);

      }

      4.用指針作函數參數,編程序求一維數組中的最大和最小的元素值。

      #define N 10

      main()

      { void maxmin(int arr[],int *pt1,int *pt2,int n);

      int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

      p1=&a; p2=&b;

      maxmin(array,p1,p2,N);

      printf("max=%d,min=%d",a,b);

      }

      void maxmin(int arr[],int *pt1,int *pt2,int n)

      { int i;

      *pt1=*pt2=arr[0];

      for(i=1;i

      { if(arr[i]>*pt1) (9) ;

      if(arr[i]<*pt2) (10) ;

      }

      }

      答案

      一 選擇題(24分,每小題2分)

      1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A )

      7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D )

      二 判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分)

      1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × )

      6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ )

      三 寫出下列程序的運行結果(36分,每小題6分)

      1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10,

      4.e C pr*am 5.word value:1234 6.love China! H w l

      high byte:12

      low byte:34

      word value:1274

      the result:3ca8

      四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分)

      1.(1) 3 (2) 2 (3)hm hl

      2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t

      3.(7) arr[i*n+j](或者arr[i*10+j])

      (8) i

      4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

    【計算機二級C++基礎練習題】相關文章:

    計算機二級考試之C++基礎知識點08-05

    2016年計算機二級《C++》模擬練習題及答案07-11

    計算機二級考試C++試題06-10

    2017年計算機二級基礎練習題及答案08-26

    計算機二級公共基礎知識練習題及答案10-20

    計算機二級考試C++試題及答案08-01

    計算機二級考試C++試題及答案10-08

    計算機二級C++常見考點分析08-17

    2017年計算機二級基礎知識練習題07-27

    主站蜘蛛池模板: 国产成人亚洲精品青草天美| 国产日韩精品在线| 国产亚洲一区二区精品| 欧美日韩精品系列一区二区三区| 国产一区二区三区久久精品| 欧美精品一区二区三区免费观看| 国产精品久久久久久影院 | 久久精品成人免费观看97| 99re热这里只有精品视频中文字幕| 四虎国产精品永免费| 国产99久久久国产精品~~牛| 麻豆精品| 午夜精品久久久久成人| 在线欧美v日韩v国产精品v| 国产亚洲色婷婷久久99精品| 欧美日韩专区麻豆精品在线| 国产精品乱码一区二区三区| 国产精品国产精品国产专区不卡| 精品视频一区二区三区四区五区| 91久久福利国产成人精品| 亚洲热线99精品视频| 国产一在线精品一区在线观看 | 国产精品一区二区久久国产| 欧美日韩精品久久久久| 国产午夜精品久久久久九九电影 | 国产日韩久久久精品影院首页| 99精品全国免费观看视频..| 精品无码人妻一区二区免费蜜桃 | 国内精品久久久久影院日本| 日韩精品久久久肉伦网站| 尤物yw午夜国产精品视频| 亚洲精品无码AV人在线播放| 欧美在线精品永久免费播放| 四虎永久在线精品免费一区二区| 久久精品国产99国产精品| 久久99精品国产99久久6| 国产精品美女网站| 国产精品女同一区二区久久| 国产精品久久久久久久午夜片| 国产精品福利片免费看| 国模精品一区二区三区|