一、選擇題(1~10每小題2分,11~50每小題1分,共60分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填涂在答題卡相應位置上,答在試卷上不得分。
。1)算法的時間復雜度是指()。
A)執(zhí)行算法程序所需要的時間
B)算法程序的長度
C)算法執(zhí)行過程中所需要的基本運算次數
D)算法程序中的指令條數
(2)用鏈表表示線性表的優(yōu)點是()。
A)便于隨機存取 B)花費的存儲空間較順序存儲少
C)便于插入和刪除操作 D)數據元素的物理順序與邏輯順序相同
。3)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是()。
A)ABCED B)DCBEA C)DBCEA D)CDABE
(4) 在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。
A)冒泡排序 B)選擇排序 C)快速排序 D)歸并排序
。5)在設計程序時,應采納的原則之一是
A)不限制goto語句的使用 B)減少或取消注解行
C)程序越短越好 D)程序結構應有助于讀者理解
。6)下列不屬于軟件工程的3個要素的是( )。
。粒┕ぞ B)過程 C)方法 D)環(huán)境
。7) 在軟件工程中,白箱測試法可用于測試程序的內部結構。此方法將程序看做是()。
A)路徑的集合B)循環(huán)的集合
C)目標的集合D)地址的集合
(8)下列數據模型中,具有堅實理論基礎的是()。
A)層次模型 B)網狀模型 C)關系模型 D)以上3個都是
。9)下列有關數據庫的描述,正確的是()。
A)數據庫是一個DBF文件 B)數據庫是一個關系
C)數據庫是一個結構化的數據集合 D)數據庫是一組文件
10)下列說法中,不屬于數據模型所描述的內容的是()。
A)數據結構 B)數據操作
C)數據查詢 D)數據約束
。11)一個C語言程序是由
A)一個主程序和若干子程序組成
B)函數組成
C)若干過程組成
D)若干子程序組成
。12)下列數據中,不合法的C語言實型數據是
A)0.123 B)123e3 C)2.1e3.5 D)789.0
。13)已知
int t=0;
while (t=1)
{...}
則以下敘述正確的是
A)循環(huán)控制表達式的值為0
B)循環(huán)控制表達式的值為1
C)循環(huán)控制表達式不合法
D)以上說法都不對
。14)有以下定義語句
double a,b;int w; long c;
若各變量已正確賦值,則下列選擇中正確的表達式是
A) a=a+b=b++ B)w%((int)a+b) C)(c+w)%(int)a D)w=a==b
。15)以下程序的輸出結果是
main()
{inti;
for(i=0;i<3;i++)
switch(i){
case 0:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d",i);
}
}
A) 022111B)021021C)000122D)012
。16)設有以下程序段:
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
則
A)運行程序段后輸出0
B)運行程序段后輸出1
C)程序段中的控制表達式是非法的
D)程序段執(zhí)行無限次
。17)以下正確的說法是
A)定義函數時,形參的類型說明可以放在函數體內
B)return后邊的值不能為表達式
C)如果函數值的類型與返回值類型不一致,以函數值類型為準
D)如果形參與實參類型不一致,以實參類型為準
。18)以下敘述中不正確的是
A)在不同的函數中可以使用相同的名字的變量
B)函數中的形式參數是局部變量
C)在一個函數內定義的變量只在本函數范圍內有效
D)在一個函數內的復合語句中定義的變量在本函數范圍內有效
(19)以下程序的輸出結果是
main()
{inta=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
printf("%d",d+++1);
else
printf("%d",++d+1);
printf("%d\n",d);
}
A) 2 B)3 C)43 D)44
。20)有以下語句,則對a數組元素的引用不正確的是(0≤i≤9)
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A) a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))
。24)答案:(C) 解析: int a,b,k=4,m=6,*p1=&k,*p2=&m;聲明整型變量a,b,k,m和指針p1,p2,并分別將4和6賦給k和m,將k和m的地址賦給p1和p2;a=p1==&m;等價于a=(p1==&m);將p1是否等于地址m的值(0)賦給變量a,b=(*p1)/(*p2)+7;該句的含義是將后面表達式的的值7賦給變量b。
。25)答案:(B) 解析:本題考查函數的遞歸調用。fib(3)=fib(2)+ fib(1),而fib(2)的返回值為2,fib(1)的返回值也為2,故輸出的fib(3)的值為4。
(26)答案:(C)解析: 由于()優(yōu)先級高于*,所以void *fun()說明了一個函數,該函數的返回值是無值型的指針類型,而void(*fun)()說明指針fun指向一個函數,該函數無返回值。
(27)答案:(B) 解析: 本題考查的函數形參與實參的傳遞規(guī)則,當形參與實參都是簡單的數據類型時,形參值的改變不能影響實參值的改變,即本題中c的值未改變,仍然是6。
。28)答案:(B) 解析: 本題中,a[1][2]是二維數組中的第6個元素,對應for循環(huán)中i的值為5,p[5]=5+1。
。29)答案:(C) 解析: fun()函數的功能是從數組的頭尾開始,將第一個元素和最后一個元素對換,將第二個元素和倒數第二個元素對換,直到數組的中間。調用fun函數后,再將對換了元素的數組依次輸出。
。30)答案:(B) 解析:函數的參數不僅可以是整型、實型、字符型等數據,還可以是指針類型。它的作用是將一個變量的地址傳送到另一個函數中去。在本題解析中,我們試圖將這一問題解釋清楚!
大家可以考慮一下利用下面這函數可不可以實現a和b的互換。
swap(int x, int y)
{ int t;
t=x;
x=y;
y=t;
}
如果在main函數中用swap(a,b),會有什么結果呢?在函數調用開始時,a的值傳送給x,b的值傳遞給y 。執(zhí)行完swap函數后,x和y的值是互換了,但main函數中的a和b并未互換。也就是說由于“單向傳遞”的“值傳遞”方式,形參值的改變無法傳遞給實參。
為了使在函數中改變了的變量值能被main函數所用,不能采取上述把要改變值的變量作為參數的辦法,而應該用指針變量做函數參數。在函數執(zhí)行過程中使指針變量所指向的變量值發(fā)生變化,函數調用結束后,這些變量值的變化被保留下來,這樣就實現了調用函數改變變量的值,在主調函數中使用這些改變了的值的目的。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |