點擊查看:2016年計算機二級《C++》基礎練習題及答案匯總
1[單選題]設有基類定義:
派生類采用何種繼承方式可以使成員變量b成為自己的私有成員( )。
A.私有繼承
B.保護繼承
C.公有繼承
D.私有、保護、公有
參考答案:A
參考解析:類的繼承中有三種繼承方式,他們和類的訪問級別相結合在派生類中可以產生多種 訪問級別。基類中成員為保護的,在派生類中要為私有的,可以采用私有繼承。基類中的保護成員 在派生類中不是私有就是保護,即級別只能降低而不能升高。基類中的公有成員則可能為私有、保 護和私有。
2[單選題] 有下列程序:
#include
intfun(intx,inyy)
{if(x==y)return(x);
elsereturn((x+y)/2);
}
voidmain( )
{inta=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序運行后的輸出結果是( )。
A.3B.6C.8D.12
參考答案:B
參考解析:在程序中子函數fun(intX,inty)的功能是如果X的值等于y的值,則返回X的值,否則返回這兩個數的算術平均值,在主函數中首先計算fun(5,6),其值等于5,然后再計算fun(8,5),其值等于6。所以正確答案為選項B。
3[單選題]下列選項中,作為是數據庫系統的核心的是( )。
A.數據庫B.數據模型C.軟件工具D.數據庫管理系統
參考答案:D
參考解析:數據庫管理系統DBMS是數據庫系統的核心。DBMS是負責數據庫的建立、使用和維護的軟件。DBMS建立在操作系統之上,實施對數據庫的統一管理和控制。
4[單選題] 下列程序的輸出結果是( )。#include
voidmain()
(char*str="12123434";
intx1=0,x2=0,x3=0,x4=0,i;
for(i=0;str[i]!='\0';i++)
switch(str[i])
{case'1':x4++;
case'2':x3++;
case'3':x2++;
case'4':x1++;
}
cout<
<","<
}
A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6.4,2
參考答案:D
參考解析:本題考查循環的嵌套、for和switch語句的應用、C++中各種條件判斷,循環語句的用法。只要注意在C++語言中,系統在字符指針的最后位置會增加一個字符串結束符'\0',執行8次for循環,再根據switch語句中的條件易知答案。
5[單選題]
A.
B.
C.
D.
參考答案:B
參考解析:
6[單選題]請閱讀以下程序:
上面程序的輸出結果是( )。
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0D.a=2,b=2
參考答案:A
參考解析:本題考察switch語句的嵌套,以及break語句的使用規則,即break中斷當前的執行流,不再執行下面的case語句,如果沒有break語句,則會順序執行隨后語句。據此,讀程序可知,內層switch執行case 0分支,故a增1,調出內層switch后,由于沒有break語句,隨后執行外層switch的case 2分支,a又增1,b增1。故答案為A。
7[單選題]對長度為n的線性表排序,在最壞情況下,比較次數不是n(n-1)/2的排序方法是( )。
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
參考答案:D
8[單選題] 下列運算符函數中肯定不屬于類FunNumber的成員函數的是( )。
A.int operator一(FunNumber);
B.FunNumber operator一();
C.FunNumber operator一(int);
D.int operator一(FunNumber,FunNumber);
參考答案:D
參考解析:本題考查運算符重載的一些規則:①一般情況下,單目運算符最好重載為類的成員函數,雙目運算符則最好重載為類的友元函數;②雙目運算符=、()、[]、->不能重載為類的友元函數;③類型轉換函數只能定義為一個類的成員函數,而不能定義為類的友元函數;④若一個運算符的操作需要修改對象的狀態,選擇重載為成員函數較好;⑤若運算符所需的操作數(尤其是第一個操作數)希望有隱式類型轉換,則只能選用友元函數;⑥當運算符函數是一個成員函數時,最左邊的操作數(或者只有最左邊的操作數)必須是運算符類的一個類對象(或者是對該類對象的引用);如果左邊的操作數必須是一個不同類的對象,或者是一個內部類型的對象,該運算符函數必須作為一個友元函數來實現。所以答案為D。
9[單選題]下列數據結構中,插入時不需要移動其他元素的是( )。
A.有序線性鏈表B.無序線性鏈表C.棧和隊列D.以上三種都是
參考答案:D
參考解析:在線性鏈表中插入或刪除元素都不需要移動其他元素,只需改變指針即可;棧只能在一端插入或刪除元素,也不需要移動其他元素;隊列只能在一端插人元素.在另一端刪除元素,也不需 要移動其他元素。
10[單選題]有如下程序:
#include
#include
using namespace std;
int main(){
cout << setfill('*')<
return 0;
}
運行輸出結果是( )。
A.***123***456B.***123456***C.***123456D.123456
參考答案:C
參考解析:在主函數中第一次輸出時調用函數setfill('*')設置填充字符為‘*’,調用函數 setw(6)設置每次輸出的寬度為6,所以第一次輸出123時,多余的三個空位用‘*’填充,即結果為***123,第二次從輸出流中輸出456。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |