<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            試題

            計算機二級C++上機模擬試題及答案

            時間:2025-01-16 07:44:56 試題 我要投稿

            2016計算機二級C++上機模擬試題及答案

              一、改錯題

            2016計算機二級C++上機模擬試題及答案

              使用VC6打開考生文件夾下的工程kt11_1,此工程包含一個源程序文件kt11_1.cpp,但該程序運行有問題,請改正函數中的錯誤,使該程序的輸出結果為:

              Valuesare:1,2and3

              Pressanykeytocontinue

              源程序文件kt11_1.cpp清單如下:

              #include

              classCommonBase

              { public:

              intx; };

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

              classDeriveCommonA::publicCommonBase

              { public:

              inty; };

              classDeriveCommonB:publicCommonBase

              { public:

              intz; };

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

              classOverlapping:publicDeriveCommonA;publicDeriveCommonB

              { public:

              voidDisplay()

              { cout<<"Valuesare:"<

              intmain()

              { Overlappingov;

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

              ov.x=1;

              ov.y=2;

              ov.z=3;

              ov.Display();

              return0; }

              【試題解析】

              (1)主要考查對派生類定義的理解,C++規定的繼承格式是在類名的后面加冒號,之后是繼承方式和繼承類的名稱,題目中錯誤的使用了作用域運算符;

              (2)主要考查多繼承的定義,多繼承的格式基本上和單繼承相同,不過在多個基類之間應該使用逗號分開,題目中錯誤的使用了分號,分號在C++中是結束標志;

              (3)主要考查對派生類的對象訪問的掌握,x是類CommonBase的成員,如果不加限制的訪問就會產生二義性,編譯程序不知道這個x是A類的,還是B類的,所以必須使用作用域限制符“::”,為了解決這個問題可以使用虛基類。

              二、簡單應用題

              請編寫函數fun(),該函數的功能是判斷字符串是否為回文,若是則函數返回1,主函數中輸出YES;否則返回0,主函數中輸出NO。回文是指順讀和倒讀都一樣的字符串。

              例如:字符串LEVEL是回文,而字符串123312就不是回文。

              注意:部分源程序已存在文件kt11_2.cpp中。

              請勿修改主函數main和其他函數中的任何內容,僅在函數fun的花括號中填寫若干語句。

              文件kt11_2.cpp的內容如下:

              #include

              #include

              #defineN80

              intfun(char*str)

              {

              }

              voidmain()

              { chars[N];

              cout<<"Enterastring:"<

              gets(s);

              cout<<"\n\n";

              puts(s);

              if(fun(s))

              cout<<"YES\n";

              else

              cout<<"NO\n"; }

              【參考答案】

              int fun(char *str)

              {

              int i,n=0,fg=1;

              char *p=str;

              while(*p)

              { n++; p++; }

              for(i=0;i

              if(str[i]==str[n-1-i]) ;

              else

              { fg=0; break; }

              return fg;

              }

              【試題解析】

              本題的解題思路是:先利用循環中指針的移動來求得字符串的長度n,然后用一個for循環依次取得數組中的前半部分元素,用取得的前半部分內的元素逐個與后半部分內的對應位置的元素進行比較,如果相同,不做任何工作,接著取下一個元素,繼續比較;如果不相同,可以判斷該字符串肯定不是回文,就給標志變量fg賦值0(fg的初始值為1)。最終把fg作為函數的返回值返回(fg值為1表明是回文,fg值為0表明不是回文)。

              三、綜合應用題

              使用VC6打開考生文件夾下的工程kt11_3。此工程包含一個kt11_3.cpp,其中定義了類queue,但該類的定義并不完整。請按要求完成下列操作,將程序補充完整。

              (1)完成類queue的無參數的構造函數的定義,要求把數據成員bl和el都初始化為0,同時輸出queueinitialized。請在注釋“//**1**”之后添加適當的語句。

              (2)完成類queue的成員函數qput(intj)的定義,它的功能是把新的元素加入隊列,過程是先依據bl的值判斷數組是否已經滿了,如果是就輸出queueisfull,否則bl自加一,并且把參數j的值存入bl指向的數組元素中,請在注釋“//**2**”之后添加適當的語句。

              (3)完成類queue的成員函數qget()的定義,它的功能是把隊列開頭的元素提取出隊列,并返回該值,過程是先比較el和bl的值判斷隊列是否已空,如果是就輸出queueisempty,

              否則el自加一,并且把el指向的數組元素返回,請在注釋“//**3**”之后添加適當的語句。

              程序輸出結果如下:

              queueinitialized

              queueinitialized

              3311

              4422

              注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。

              源程序文件kt11_3.cpp清單如下:

              #include

              classqueue

              { intq[100];

              intbl,el;

              public:

              queue();

              voidqput(intj);

              intqget(); };

              queue::queue()

              { //**1** }

              voidqueue::qput(intj)

              { //**2**

              { cout<<"queueisfull\n";

              return; }

              bl++;

              q[bl]=j; }

              intqueue::qget()

              { //**3**

              { cout<<"queueisempty\n";

              return0; }

              el++;

              returnq[el]; }

              voidmain()

              {

              queueaa,bb;

              aa.qput(11);

              bb.qput(22); aa.qput(33);

              bb.qput(44);

              cout<

              cout<

              }

              【參考答案】

              (1)bl=el=0;

              cout<<"queue initialized\n";

              (2)if(bl==100)

              (3)if(el==bl)

              【試題解析】

              主要考查對于具體的一個隊列類的掌握,對列是一種特殊的存儲結構,應使用先進先出原則。題目中bl和el分別指向隊列的開頭和結尾,其中(2)是隊列的標準插入操作,(3)是隊列的標準的刪除操作,注意它們的操作方式和先判斷后操作的原則。

            【計算機二級C++上機模擬試題及答案】相關文章:

            計算機二級《C++》上機試題及答案08-12

            2016計算機二級C++上機試題及答案08-02

            計算機二級C++模擬試題及答案01-23

            全國計算機二級《C++》上機試題及答案08-15

            2016年計算機二級C++上機考試模擬試題及答案05-22

            2016年計算機二級C++上機模擬試題06-05

            2017計算機二級《C++》上機模擬題及答案08-16

            全國計算機二級《C++》上機試題附答案01-15

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

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院