一、選擇題((1)~(10)每小題2分,(11)~(50)每小題1分,共60分)
下列各題A)、B)、c)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應位置上,答在試卷上不得分。
(1)算法的空間復雜度是指________。
A)算法程序的長度 B)算法程序中的指令條數(shù)
c)算法程序所占的存儲空間 D)算法執(zhí)行過程中所需要的存儲空間
答案:D
評析:一個算法的空間復雜度,一般是指執(zhí)行這個算法所需的內存空間。
一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。
(2)下列關于棧的敘述中正確的是________。
A)在棧中只能插入數(shù)據(jù) B)在棧中只能刪除數(shù)據(jù)
C)棧是先進先出的線性表 D)棧是先進后出的線性表
答案:D
評析:棧是限定在一端進行插入與刪除的線性表。
棧是按照"先進后出"的或"后進先出"的原則組織數(shù)據(jù)的,因此,棧也被稱為"先進后出"表或"后進先出"表。
(3)在深度為5的滿二叉樹中,葉子結點的個數(shù)為________。
A)32 B)31 C)16 D)15
答案:C
評析:所謂滿二叉樹是指除最后一層外,每層上的所有結點都有兩個子結點。也就是說,在滿二叉樹中,每一層上的結點數(shù)都達到最大值,即在滿二叉樹的第K層上有2K-1個結點,且深度為m的滿二叉樹有2m個結點。
在滿二叉樹中,最后一層的結點個數(shù)就是葉子結點的個數(shù),本題中深度為5,故葉子結點數(shù)為25-1=24=16。
(4)對建立良好的程序設計風格,下面描述正確的是________。
A)程序應簡單、清晰、可讀性好 B)符號名的命名要符合語法
c)充分考慮程序的執(zhí)行效率 D)程序的注釋可有可無
答案:A
評析:要形成良好的程序設計風格,主要應注重和考慮下述一些因素:符號名的命名應具有一定的實際含義,以便于對程序功能的理解;正確的注釋能夠幫助讀者理解程序;程序編寫應優(yōu)先考慮清晰性,除非對效率有特殊要求,程序編寫要做到清晰第一,效率第二。
(5)下面對對象概念描述錯誤的是________。
A)任何對象都必須有繼承性 B)對象是屬性和方法的封裝體
C)對象間的通訊靠消息傳遞 D)操作是對象的動態(tài)性屬性
答案:A
評析:對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接的對應關系。對象之間通過傳遞消息互相聯(lián)系,以模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)系。
(6)下面不屬于軟件工程的3個要素的是________。
A)512具 B)過程 C)方法 D)環(huán)境
答案:D
評析:軟件工程包括3個要素,即方法、工具和過程。
(7)程序流程圖(PFD)中的箭頭代表的是________。
A)數(shù)據(jù)流 B)控制流 C)調用關系 D)組成關系
答案:B
評析:程序流程圖(PFD)是一種傳統(tǒng)的、應用廣泛的軟件過程設計表示工具,通常也稱為程序框圖,其箭頭代表的是控制流。
(8)在數(shù)據(jù)管理技術的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階 段。其中數(shù)據(jù)獨立性最高的階段是________。
A)數(shù)據(jù)庫系統(tǒng) B)文件系統(tǒng) c)人工管理 D)數(shù)據(jù)項管理
答案:A
評析:在數(shù)據(jù)管理技術的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)。
(9)用樹形結構來表示實體之間聯(lián)系的模型稱為________。
A)關系模型 B)層次模型 C)網(wǎng)狀模型 D)數(shù)據(jù)模型
答案:B
評析:層次模型是最早發(fā)展出來的數(shù)據(jù)庫模型。它的基本結構是樹形結構,這種結構方式在現(xiàn)實世界中很普遍,如家族結構、行政組織機構,它們自頂向下、層次分明。
(10)關系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關系運算包括________。
A)排序、索引、統(tǒng)計 B)選擇、投影、連接
C)關聯(lián)、更新、排序 D)顯示、打印、制表
答案:B
評析:關系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關系運算,包括選擇運算、投影運算、連接運算。
(11)下列語句中符合C語言語法的賦值語句是________。
A)a--7+b+c--a+7 B)a=a+7
C)a=7+b,b++,a+7; D)a=7+b,c=a十7;
答案:D
評析:由于賦值語句是由賦值表達式加分號構成,所以選項A、B均不是合法的賦值語句;選項c中,存在兩種運算符:逗號運算符和賦值運算符,其中賦值運算符的優(yōu)先級高,選項c也不是。
(12)下面程序
main()
{ int y=9;
for(;y>O;y--i){
if (y%3==O)
{ printf("%d",--y);
continuei
}
}
}
的輸出是________。
A)741 B)852 C)963 D)875421
答案:B
評析:"%"是求余運算符,所以if判斷語句中實際是指出只有當y可以被3整除時方可以繼續(xù);--y是先進行y的自減運算,再使用y值。所以,最后的打印結果應當為"852"。
(13)下列四個敘述中,錯誤的是________。
A)C語言中的關鍵字必須小寫
B)c語言中的標識符必須全部由字母組成
C)c語言不提供輸入輸出語句
D)C語言中的注釋行可以出現(xiàn)在程序的任何位置
答案:B
評析:c語言規(guī)定標識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個字符必須為字母或下劃線。
(14)下面程序
main()
{
int a=-l,b=4,k;
k=(a++<=0)&&(!(b一一<=O));
printf("%d%d%d\n",k,a,b);
}
的輸出是________。
A)0 0 3 B)0 1 2 C)1 0 3 D)1 1 2
答案:C
評析:a++是先使用a值再將a的值加1,b--是先使用b的值再將b的值減1,所以題中的邏輯運算表達式的值應當為真,即為1,而經(jīng)過運算后,a和b的值已經(jīng)分別變成0和3了。
(15)以下敘述中正確的是________。
A)預處理是指完成宏替換和文件包含中指定文件的調用
B)預處理也是C語句
C)C源程序中,凡是行首以掙標識的控制行都是預處理指令
D)預處理就是完成c編譯程序對c源程序的第一遍掃描,為編譯的詞法分析和語法分析作準備
答案:C
評析:預處理功能主要有以下三種:宏定義、文件包含和條件編譯,所以A不正確。預處理不是c語句,所以B不正確。預處理命令是由ANSI c統(tǒng)一規(guī)定的,編譯程序不能識別它們,D也不正確。
(16)下面的程序片段
y=-l;
If(x!=0)
If(x>0) y=1;else y=0;
所表示的數(shù)學函數(shù)關系是_________.
-1(x<O) l (x<O)
A)y= 0 (x=0) B)y= -1(x=0)
1 (x>0) 0 (x>0)
0 (x<0) -1 (x<0)
C)y= -1(x=O) D)y= l (x=O)
1 (x>O) 0 (x>O)
答案:C
評析:本題的考查點是根據(jù)程序寫出數(shù)學函數(shù)關系。
題中的兩個判斷語句實際上指出了y取值的條件,即是當x大于零時y取l;當x小于零時y取0;當x等于零時y值不變,為-1。
(17)下面的程序
main()
{ int x=3,y=O,z=O;
if(x=y+z)printf("* * * *");
else printf("####");
}
_________。
A)有語法錯誤不能通過編譯
B)輸出* * * *。
c)可以通過編譯,但是不能通過連接,因而不能運行
D)輸出####
答案:D
評析:本題的考查點是運算符在表達式中的處理原則。
本題中把y+z的值賦給x,由于y和z都等于0,所以x的值也為0,表達式值為false,輸出撐撐撐撐。if語句中if后面的表達式一般為邏輯或關系表達式,但也可以是任意的數(shù)值類型。
(18)在c語言中,合法的長整型常數(shù)是________。
A)OL B)4962710 C)04312765 D)0xa34b7fe
答案:A
評析:在一個整常量后面加一個字母l或L,則認為是long int型常量。
(19)下面函數(shù)
int funl(char*x)
{ char*y=x;
while(*y++);
return(y-x-1);
}
的功能是__________。
A)求字符串的長度 B)比較兩個字符串的大小
C)將字符串x復制到字符串y D)將字符串x連接到字符串y后面
答案:A
評折:本題的考查點是while()循環(huán)語句。
本題首先要注意的是對*y++的運算,由于++和*為同一優(yōu)先級別,且結合方向為自右向左,因此它相當于*(y++)。由于++在y的右側,是"后加",因此先對y的原值進行*運算,然后使y的值改變。
(20)設int i=2j=l,k=3,則表達式i&&(i+j)&k︱i+j的值是________。
A)O B)2 C)l D)3
答案:C
評析:本題表達式中優(yōu)先級順序從高到低為括號、+、&、︱、&&。
(21)已知字母A的ASCII碼為十進制的65,下面程序
main()
{ char chl,ch2;
chl='A'+'5'-'3':
ch2='A'+'6'-'3':
printf("%d,%Cn",chl,ch2);
}
的輸出_________。
A)67,D B)B,C C)C,D D)不確定的值
答案:A
評析:由于字符"5"和"3"的ASCII碼相差為2,所以ch1過運算后的值應為65+2=67;同理,ch2經(jīng)過運算后的值應為65+3=68,即是字符"D"。
(22)以下程序的輸出結果是________。
#include<stdio.h>
main()
{
int a,b,d=24l:
a=d/l00%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
A)6,1 B)2,1 C)6,0 D)2,0
答案:B
評析:第一個表達式中,運算的方向是從左至右,所以a的值為2;第二個表達式中,等式右邊是一個邏輯表達式,由于結果為真,所以表達式的值為l,即b為1。
(23)下列選項中非法的表達式是________。
A)0<=x<100 B)I=j==0 C)(char)(65+3) D)x-t-l=x+l
答案:D
評析:值表達式的左側不能為常量或表達式,所以D是非法的表達式。
(24)以下程序的輸出結果是________。
#include<stdio.h>
main()
{
print刖%~n",NULL);
}
A)不確定的(因變量無定義) B)0
C)-l D)l
答案:B
評析:NULL在c編譯器中是一個值為0的常量,它的定義在頭文件"stdio.h"中,本題的程序在一開始就包含了這個頭文件',所以,在打印的時候,將打印出0。
(25)在下面的語句中,賦值語句錯誤的是________。
A)a=(b=(c=2,d=3)); B)i++:
C)a--a/b=2; D)a=a<a+1:
答案:C
評析:c語言中的賦值號"="是一個運算符;②賦值語句是由賦值表達式加上一個分號構成。賦值表達式的左側不能為常量或表達式。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |