2023年計(jì)算機(jī)二級(jí)模擬試題及答案解析通用

字號(hào):

    在日常的學(xué)習(xí)、工作、生活中,肯定對(duì)各類范文都很熟悉吧。范文書寫有哪些要求呢?我們?cè)鯓硬拍軐懞靡黄段哪??下面是小編幫大家整理的?yōu)質(zhì)范文,僅供參考,大家一起來看看吧。
    計(jì)算機(jī)二級(jí)模擬試題及答案解析篇一
     計(jì)算機(jī)考試來啦!今天小編就給大家分享一些計(jì)算機(jī)二級(jí)考試的模擬試題,供大家參考~
     1算法的空間復(fù)雜度是指()。
     a.算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲(chǔ)空間
     b.算法所處理的數(shù)據(jù)量
     c.算法程序中的語句或指令條數(shù)
     d.算法在執(zhí)行過程中所需要的臨時(shí)工作單元數(shù)
     參考答案:a
     參考解析:一個(gè)算法的空間復(fù)雜度,一般是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。
     2每個(gè)c++程序中都必須有且僅有一個(gè)()。
     a.類b.預(yù)處理命令c.主函數(shù)d.語句
     參考答案:c
     參考解析:每個(gè)c++程序中都要有且僅有一個(gè)主函數(shù),該函數(shù)是程序的入口,而語句、預(yù)處理命令和函數(shù)及類在程序中都可以有多個(gè)。
     3對(duì)長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。
     a.快速排序b.冒泡排序c.直接插入排序d.堆排序
     參考答案:d
     參考解析:首先知道有哪些排序的方法及各種排序方法在最壞情況下需要比較的次數(shù),冒泡排序n(n-1)/2、希爾排序0(n1.5)、簡單選擇排序n(n-1)/2、堆排序o(nl0g2n)。
     4數(shù)據(jù)庫系統(tǒng)的三級(jí)模式不包括()。
     a.概念模式b.內(nèi)模式c.外模式d.數(shù)據(jù)模式
     參考答案:d
     參考解析:數(shù)據(jù)庫三級(jí)模式包括:概念模式、內(nèi)模式、外模式。
     5sql語言又稱為()。
     a.結(jié)構(gòu)化定義語言
     b.結(jié)構(gòu)化控制語言
     c.結(jié)構(gòu)化查詢語苦
     d.結(jié)構(gòu)化操縱語言
     參考答案:c
     參考解析:sql語言的全稱為structuredquerylanguage,它是一種介于關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語言,是一種面向數(shù)據(jù)庫的通用數(shù)據(jù)處理語言規(guī)范。它包含數(shù)據(jù)查詢語言、數(shù)據(jù)操縱語言、數(shù)據(jù)定義語言和數(shù)據(jù)控制語言四個(gè)部分。
     6數(shù)據(jù)處理的最小單位是()。
     a.數(shù)據(jù)b.數(shù)據(jù)元素c.數(shù)據(jù)項(xiàng)d.數(shù)據(jù)結(jié)構(gòu)
     參考答案:c
     7假定myclass為一個(gè)類,那么下列的函數(shù)說明中,()為該類的析構(gòu)函數(shù)。
     ~myclass();b.~myc|ass(intn);s();d.~myclass();
     參考答案:d
     參考解析:c++語言中析構(gòu)函數(shù)為符號(hào)“~”加類名,且析構(gòu)函數(shù)沒有返回值和參數(shù),故前不加void關(guān)鍵字。所以正確的形式應(yīng)該是~myclass()。第7題 筆記記錄我的筆記(0) | 精選筆記(1)選擇筆記標(biāo)簽:試題內(nèi)容(1)答案解析(0)
     8有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后的語句是()。
     structnode
     {chardata;
     structnode*next;
     }a,b,*p=&a,*q=&b;
     =q;=&b;c.p->next=&b;d.(*p).next=q;
     參考答案:b
     9若有表達(dá)式“(w)?(--x):(++y)”,則其中與w等價(jià)的表達(dá)式是()。
     a.w==1b.w==0c.w!=1d.w!=0
     參考答案:d
     參考解析:本題考查三目運(yùn)算等。條件表達(dá)式的格式為a?b;c。它的含義是,當(dāng)a為真時(shí),取b的值,否則取c的值。在c語言程序中“為真”即“不等于零”,“為假”即等于0。所以和w等價(jià)的表達(dá)式是w非零。
     10有如下函數(shù)模板聲明:
     template
     tmax(ta,tb){return(a>b)?a:b;}
     下列對(duì)函數(shù)模板max()的調(diào)用中錯(cuò)誤的是()。
     (3.5,4.5)(3.5,4)(35,4.5)(3.5,4)
     參考答案:b
     參考解析:本題考查函數(shù)模板的引用。引用模板函數(shù)和引用一般函數(shù)在語法形式上基本相同。需要注意的是,說明一個(gè)函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個(gè)對(duì)應(yīng)的函數(shù)調(diào)用時(shí),將根據(jù)實(shí)參中的類型來確認(rèn)是否調(diào)用函數(shù)模板中的對(duì)應(yīng)形參。本題選項(xiàng)b中,編譯系統(tǒng)從第一個(gè)參數(shù)“3.5”獲得信息“double型數(shù)據(jù)”和從第二個(gè)參數(shù)獲得信息“int型數(shù)據(jù)”,兩者矛盾。
     11c++語言中關(guān)于構(gòu)造函數(shù)的說法正確的是()。
     a.構(gòu)造函數(shù)的函數(shù)名不必和類名相同
     b.構(gòu)造函數(shù)只能有一個(gè)
     c.每個(gè)類必定有構(gòu)造函數(shù)
     d.構(gòu)造函數(shù)必有返回值
     參考答案:c
     參考解析:本題考查構(gòu)造函數(shù)的概念。構(gòu)造函數(shù)可以被重載,函數(shù)名必須和類名相同;構(gòu)造函數(shù)可以有一個(gè),也可以有多個(gè);構(gòu)造函數(shù)沒有返回值。
     12下列描述中,錯(cuò)誤的是()。
     a.公有繼承時(shí)基類中的公有成員在派生類中仍是公有成員
     b.公有繼承時(shí)基類中的保護(hù)成員在派生類中仍是保護(hù)成員
     c.保護(hù)繼承時(shí)基類中的公有成員在派生類中仍是公有成員
     d.保護(hù)繼承時(shí)基類中的.保護(hù)成員在派生類中仍是保護(hù)成員
     參考答案:c
     參考解析:保護(hù)繼承時(shí),類成員的訪問級(jí)別只能降低為保護(hù)模式,因此即使是基類的公有成員也被縮小為保護(hù)模式。
     13結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括()。
     跳轉(zhuǎn)c.選擇(分支)結(jié)構(gòu)d.重復(fù)(循環(huán))結(jié)構(gòu)
     參考答案:b
     參考解析:結(jié)構(gòu)化程序設(shè)計(jì)的三種結(jié)構(gòu)是順序、分支和循環(huán),不包括goto跳轉(zhuǎn),它只是分支結(jié)構(gòu)的一種,也是一個(gè)關(guān)鍵字。
     14在e—r圖中,用來表示實(shí)體聯(lián)系的圖形是()。
     a.橢圓圖b.矩形c.菱形d.三角形
     參考答案:c
     參考解析:e—r圖中用矩形表示實(shí)體(等同于表),用橢圓形表示實(shí)體的屬性(等同于表中字段),用菱形表示實(shí)體關(guān)系(等同于外鍵)。
     15下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是()。
     a.循環(huán)隊(duì)列b.帶鏈隊(duì)列c.二叉樹d.帶鏈棧
     參考答案:c
     參考解析:隊(duì)列是一種允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的線性表。棧也是一種特殊的線性表,其插入與刪除只能在線性表的一端進(jìn)行。
     16對(duì)長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為()。
     2nb.n/.n+1
     參考答案:c
     參考解析:對(duì)線性表進(jìn)行順序查找,最壞情況下,如果從表頭進(jìn)行查找,要查找到表尾才能得出結(jié)果,因此需要比較n次。
     17下面程序的運(yùn)行結(jié)果為()。#include
     voidswap(int&a,intb)
     {
     inttemp;
     temp=a++;
     a=b:
     b=temp:
     }
     voidmain()
     {
     inta=2,b=3;
     swap(a,b);
     cout<
     }
     a.2,3b.3,2c.2,2d.3,3
     參考答案:d
     參考解析:本題考查引用調(diào)用,因?yàn)楹瘮?shù)swap引用調(diào)用參數(shù)a,所以在swap函數(shù)中a的變化會(huì)改變主函數(shù)中a的值,即a自加1。但b的值并未改變。
     18若有以下程序:
     #include
     usingnamespacestd;
     classbase
     {public:
     base()
     {x=0;}
     intx;};
     classderivedl:virtualpublicbase
     {public:
     derivedl()
     {x=10;}};
     classderived2:virtua11publicbase
     {public:
     derived2()
     {x=20;}};
     classderived:publicderivedl,protectedderived2{};intmain()
     {derivedobj;
     cout<
     return0;}
     該程序運(yùn)行后的輸出結(jié)果是()。
     a.20b.30c.10d.0
     參考答案:a
     參考解析:本題考查虛基類的應(yīng)用。雖然derivedl和derived2都是由共同的基類x派生而來的,但由于引入了虛基類,使得它們分別對(duì)應(yīng)基類的不同副本。這時(shí)數(shù)據(jù)成員x只存在一份副本,不論在類derivedl中修改,還是在derived2中修改,都是直接對(duì)這唯一副本進(jìn)行操作。本題程序執(zhí)行語句“derivedobj;”時(shí).就會(huì)先調(diào)虛基類base的構(gòu)造函數(shù),使得x=0,然后執(zhí)行類derivedl的構(gòu)造函數(shù)使得x=10,再執(zhí)行類derived2的構(gòu)造函數(shù),使得x=20。最后輸出x的值為20。
     19下列選項(xiàng)中不合法的標(biāo)識(shí)符是()。
     .&ad.-00
     參考答案:c
     參考解析:標(biāo)識(shí)符的概念只能由數(shù)字、字母和下畫線組成,并且只能以字母和下畫線開頭,所以選項(xiàng)c不正確。
     20考慮函數(shù)原型voidtest(inta,intb=7,charz='*'),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是()。
     (5);(5,8);(6,'#');(0,0,'*');
     參考答案:c
     參考解析:題中函數(shù)聲明帶有默認(rèn)參數(shù),那么在c選項(xiàng)的調(diào)用中,將會(huì)把字符型實(shí)參#賦值給整型形參b,這不符合參數(shù)傳遞規(guī)則。
     21當(dāng)需要將一個(gè)函數(shù)boolisnunlber(charc)聲明為內(nèi)聯(lián)函數(shù)時(shí),此內(nèi)聯(lián)函數(shù)的函數(shù)原型為()。
     olisnumber(charc);
     boolisnumber(charc);
     boolisnumber(charc);
     oolisnumber(charc);
     參考答案:c
     參考解析:本題考查內(nèi)聯(lián)函數(shù)的相關(guān)知識(shí)點(diǎn)。函數(shù)原型應(yīng)指出函數(shù)名、返回值類型以及在調(diào)用函數(shù)時(shí)提供的參數(shù)的個(gè)數(shù)和類型,因?yàn)橐暶鳛閮?nèi)聯(lián)函數(shù),故應(yīng)加inline關(guān)鍵字。
     22有如下程序:
     #include
     usingnamespacestd;
     intmain(){
     inta[6]={23,l5,64,33,40,58};
     ints1,s2;
     s1=s2=a[0];
     for(int*p=a+1;p
     if(sl>*p)s1=*p;
     if(s2<*p)s2=*p;
     }
     cout<
     return0;
     }
     運(yùn)行時(shí)的輸出結(jié)果是()。
     a.23b.58c.64d.79
     參考答案:d
     參考解析:根據(jù)題意,找出數(shù)組a中最大值sl和最小值s2并計(jì)算二者的和。
     23以下程序中調(diào)用cin函數(shù)給變量a輸入數(shù)值的方法是錯(cuò)誤的,其錯(cuò)誤的原因是()。
     #include(iostream.h)
     voidmain()
     {int*p,*q,a,b;
     p=&a;
     cout<<"inputa:";
     cin>>p;
     }
     a.*p表示的是指針變量p的地址
     b.p表示的是變量a的地址,而不是變量a的值
     c.*p表示的是指針變量p的值
     d.*p只能用來說明p是一個(gè)指針變量
     參考答案:b
     參考解析:p表示的是變量a的地址,定義后*p表示的是變量a的值。
     24有以下程序:
     classdate
     {
     public:
     date(inty,intm,intd);
     {
     year=y:
     month=m;
     day=d;
     }
     date(inty=2000)
     {
     year=y;
     month=10;
     day=1;
     }
     date(date&d)
     {
     year=;
     month=;
     day=;
     }
     voidprint()
     {
     cout<
     }
     private:
     intyear,month,day;
     };
     datefun(dated)
     {
     datetemp;
     temp=d;
     returntemp;
     }
     intmain()
     {
     datedatel(2000,1,1),date2(0,0,0);
     datedate3(datel);
     date2=fun(date3);
     return0;
     }
     程序執(zhí)行時(shí),date類的拷貝構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。
     a.2b.3c.4d.5
     參考答案:b
     參考解析:本題考核拷貝構(gòu)造函數(shù)。上述程序中,拷貝構(gòu)造函數(shù)一共被調(diào)用了3次:第1次是在執(zhí)行語句datedate3(date1)時(shí),用已經(jīng)建立的對(duì)象date1對(duì)正在建立的對(duì)象date3進(jìn)行初始化;第2次是在調(diào)用fun函數(shù)時(shí),由于是傳值調(diào)用,因此實(shí)參對(duì)象date3要對(duì)形參對(duì)象d進(jìn)行初始化;第3次是在執(zhí)行fun函數(shù)中的返回語句returntemp;時(shí),系統(tǒng)初始化一個(gè)匿名對(duì)象時(shí)使用了拷貝構(gòu)造函數(shù)。
     25下面程序的輸出結(jié)果是()。
     #include
     usingnamespacestd;
     classbase{
     public:
     base(intx=o){count<
     }
     };
     classderived:publicbase{
     public:derved(intx=0{count<
     }
     private;
     baseval;
     };
     intmina(){
     derivedd(1);
     retrun0;
     }
     a.0b.1c.01d.001
     參考答案:d
     26軟件設(shè)計(jì)中劃分模塊的一個(gè)準(zhǔn)則是()。
     a.低內(nèi)聚低耦合b.高內(nèi)聚低耦合c.低內(nèi)聚高耦合d.高內(nèi)聚高耦合
     參考答案:b
     參考解析:耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各個(gè)模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。
     27下列程序的運(yùn)行結(jié)果是()。
     #include
     intx=5;
     intfun(inta)
     {
     intc:
     c=x*a:
     returnc;
     }
     voidmain()
     {
     intx=3,a=4;
     x=x+fun(a);
     cout<<"x="<
     }
     a.x=15b.x=17c.x=23d.x=25
     參考答案:c
     參考解析:由主函數(shù)main入手,首先x被賦值為3,a被賦值為4,然后調(diào)用fun函數(shù),參數(shù)為4,所以在fun函數(shù)中的a=4。而主程序中的x作用域是由它定義開始到cout輸出,在fun函數(shù)中無效。而在fun函數(shù)定義前的變量x作用域是整個(gè)程序,所以fun函數(shù)中的x值為5,這樣c的值就為20。在主函數(shù)中的x+fun(a)中的x為靠近這條語句的x定義,即3,所以最后x的值為20+3=23。第27題 筆記記錄我的筆記(0) | 精選筆記(0)選擇筆記標(biāo)簽:試題內(nèi)容(0)答案解析(0)
     28數(shù)據(jù)庫db、數(shù)據(jù)庫系統(tǒng)dbs、數(shù)據(jù)庫管理系統(tǒng)dbms之間的關(guān)系是()。
     包含db和dbmsd.沒有任何關(guān)系
     參考答案:c
     參考解析:數(shù)據(jù)庫系統(tǒng)(dbs)是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng),一般有數(shù)據(jù)庫(db)、數(shù)據(jù)庫管理系統(tǒng)(dbms)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。
     29在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。
     a.軟件集成測試計(jì)劃b.軟件詳細(xì)設(shè)計(jì)說明書c.用戶手冊(cè)d.軟件需求規(guī)格說明書
     參考答案:d
     參考解析:需求分析階段只能產(chǎn)生需求分析規(guī)格說明書,a測試說明書是軟件測試階段生成的,b軟件詳細(xì)設(shè)計(jì)說明數(shù)是設(shè)計(jì)階段生產(chǎn),c用戶手冊(cè)是軟件發(fā)布時(shí)隨軟件一同交付給用戶的。
     30有如下程序:
     #include
     usingnamespacestd;
     classxa{
     inta;
     public:
     staticintb;
     xa(intaa):a(aa){b++;}
     ~xa(){}
     intget(){returna;}
     };
     intxa::b=0
     intmain(){
     xad1(1),d2(3);
     cout<
     return0;
     }
     運(yùn)行時(shí)的輸出結(jié)果是()。
     a.5b.6c.7d.8
     參考答案:c
     參考解析:每調(diào)用一次get函數(shù)時(shí),對(duì)新的類a對(duì)象進(jìn)行一次實(shí)例化,調(diào)用一次構(gòu)造函數(shù),類a的靜態(tài)成員變量b便加1。
     41使用vc++,該程序運(yùn)行時(shí)有錯(cuò)。請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為
     100
     37
     32
     注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即可。
     試題程序:
     #include
     //******error******
     voidmain
     {
     //******error******
     intm=0142:
     //******error******
     intn=0x27:
     intq=32;
     cout<
     cout<
     cout<
     return;
     }
     參考解析:
     (1)“voidmain()”。
     (2)“intm=0144;”。
     (3)“intn=ox25;”或“intn===0x25;”。
     【解析】本題主要考查了主函數(shù)定義及冪同進(jìn)制之間的轉(zhuǎn)換,包括十進(jìn)制到八進(jìn)制,十進(jìn)制到十六進(jìn)制。主函數(shù)定義的定義形式為“main()”,函數(shù)名之后必須是一對(duì)括號(hào),因此第1處應(yīng)改為“voidmain()”。cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)現(xiàn)變量的初值不正確,十進(jìn)制的100對(duì)應(yīng)八進(jìn)制的144,卡進(jìn)制的37對(duì)應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。
     42使用vc++。請(qǐng)完成函數(shù)fun(intn),使其實(shí)現(xiàn)以下功能:當(dāng)i等于3時(shí),則打印如下內(nèi)容。
     a
     aa
     aaa
     注意:不能修改程序的其他部分,只能修改fun函數(shù)。
     試題程序:
     #include
     voidfun(intn)
     {
     }
     voidmain()
     {
     intn;
     cout<<"請(qǐng)輸入打印的行數(shù):"<
     cin>>n;
     if(n<1)
     {
     cout<<"輸入的行數(shù)必須大于0"<
     return;
     }
     fun(n);
     return;
     }
     參考解析:
     inti;
     for(i=0;i
     {
     intj;
     for(j=0;j(n-i-1;j++)//循環(huán)打印空格
     {
     cout<<'';
     }
     for(;j
     {
     cout<<"a":
     }
     cout<
     }
     【解析】本題利用外層循環(huán)打印每一行。內(nèi)層循環(huán)分為
     打印空格和打印a。打印空格由第一個(gè)位置到第n-i-1。打印a,是由打印完空格開始一直到行結(jié)束。在外循環(huán)中打印每一行的結(jié)束符。
     43使用vc++。請(qǐng)完成以下部分,實(shí)現(xiàn)在屏幕上輸出為
     c3
     c2
     這個(gè)程序需要修改的部分,請(qǐng)按照以下部分實(shí)現(xiàn)。
     (1)類c0不能被實(shí)例化,請(qǐng)定義一個(gè)純虛函數(shù)print,在注釋1后添加適當(dāng)?shù)恼Z句。
     (2)類c1私有虛繼承類c0,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
     (3)類c2公有繼承于c0,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
     (4)類c3公有繼承于c2與c1,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
     注意:增加代碼或者修改代碼的位置已經(jīng)用符號(hào)表示出來。請(qǐng)不要修改其他的程序代碼。
     試題程序:
     #include(iostream.h)
     classco
     {
     //********1********
     };
     //********2********
     classc1:
     {
     public:
     voidprint()
     {
     cout<"”c1"<
     }
     };
     //********3********
     classc2:
     {
     public:
     voidprint()
     {
     cout<<"c2"<
     }
     };
     //********4***x****
     classc3:
     {
     public:
     voidprint()
     {
     cout<<"c3"<
     }
     };
     voidmain()
     {
     c30bj3;
     c20bj2;
     ();
     ();
     return;
     }
     參考解析:
     (1)應(yīng)添加“virtualvoidprint()=0,”。
     (2)“classc1:”應(yīng)改為“classc1:virtualprivatec0”。
     (3)“classc2:”應(yīng)改為“classc2:publicc0”。
     (4)“classc3:”應(yīng)改為“classc3:publicc2,publicc1”。
     【解析】本題考查了類的繼承。根據(jù)題意,第1處應(yīng)該添加“virtualvoidprint()=0;”。第2處根據(jù)題意,在冒號(hào)后面應(yīng)添加“virtualprivateco”。第3處根據(jù)題意,冒號(hào)后應(yīng)添加“publicco”。第4處根據(jù)題意,冒號(hào)后應(yīng)添加“publicc2,publicc1”。
    s("content_relate");