A. O(n)B. O(n*n)C. O(n*log(n))D. 以上都不對
3. 對下列四種排序方法,在排序中關鍵字比較次數與記錄初始化順序無關的是()
A. 直接排序B. 二分法插入C. 快速排序D. 歸併排序
這個答案據說是BD,我的答案是D,因爲一時反應不過來什麼是二分法插入。可以百度一下二分法插入,據說是考研的原題。
二分插入排序是穩定的與二分查找的複雜度相同;
最好的情況是當插入的位置剛好是二分位置 所用時間爲O(n);
最壞的情況是當插入的位置不在二分位置 所需比較次數爲n
S<=∑n「log₂n「-2^n「log₂n「+1
k= 1
平均時間O(n^2)
4. 已知一段文本有1382個字符,使用了1382個字節存儲,這段文本全部是由a、b、c、d、e字符組成,a 354次,b 483次,c 227次,d 96次,e 222次,對這5個字符使用哈夫曼編碼。則以下說法正確的是?()
A. 使用哈夫曼編碼後,使用編碼值來存儲這段文本將花費最少的存儲空間、
B. 使用哈夫曼編碼後,a b c d e 這5個字符對應的編碼值是唯一確定的
C. 使用哈夫曼編碼後,a b c d e 這5個字符對應的編碼值可以有多套,但每個字符的編碼位數是確定的
D. b這個字符的編碼位數最短,d這個字符的哈夫曼編碼位數應該最長
BD
6. 在編譯過程中,產生Parse tree的過程是(A)
A. 語法分析 B. 語義分析階段C. 詞法分析D. 目標代碼生成階段
http://blog.csdn.net/lixiaohuiok111/article/details/6736529
7. 閱讀下面代碼,程序會打印出來的值是()
#include<stdio.h>
void f(char **p)
{
*p+= 2;
}
int main()
{
//test();
char *a[] ={"123","abc","456"},**p;
p=a;
f(p);
//cout<<**p<<endl;
printf("%s\n",**p);
}
A. 123 B. abc C. 456 D. 3
D
9. 現在有以下兩個函數,調用test的結果是()char* getMem(void)
{
char* p = "hello world";
p[5] = 0x0;
return p;
}
void test(void)
{
char *s = 0x0;
s = getMem();
cout<<s<<endl;
}
A. hello B. 無輸出 C. Hello0world D. 不確定局部變量在函數返回的時候會刪除掉,指向內容就不確定了。答案應該是D。
14.將3個球隨機放入4個杯子中,則杯子中球的最大個數爲2的概率是()
A. 9/16 B. 3/4 C. 3/8 D. 3/16
最大個數爲1..也就是隻有一個空杯子.4*3*2/4*4*4=3/8
最大個數爲2..得先從3個球當中取出2個,(C3/2)*A(4/2)/4*4*4=9/16;
最大爲3 4/4*4*4=1/16
16.下面關於編譯器與解釋器的觀點,錯誤的是()
A. 解釋器不產生目標程序,它直接執行源程序或者源程序的內部形式
B. 解釋程序和編譯程序的主要區別在於是否產生目標程序
C. 編譯器對高級語言程序的處理過程劃分成詞法分析、語法分析、語義分析,中間代碼生成、代碼優化、目標代碼生成幾個階段
D. 解釋器參與運行控制、程序執行的速度快
18.下面哪些協議,存在源端口和目的端口是()
A. IP B. TCP C. UDP D. ICMP協議
19.下列哪些sql是等價的()
A. Select A.tname ,A.depart from teacher A joincourse B on B.tno = .A.tno
B. Select A.tname ,A.depart from teacher A whereA.tno = course.tno
C. Select A.tname ,A.depart from teacher wheretno in (select tno from course)
D. Select A.tname ,A.depart from teacher where exsist (select * from course B where B.tno = A.tno);
AC
22下列關於計算機硬件的描述,正確的是:()
A、磁盤的平均存取時間指的是磁盤的尋道時間加上磁頭在某一磁道等待記錄扇區的時間
B、計算機的控制器是由多種部件組成,其中包括,指令寄存器、程序計數器和算數邏輯單元
C、一臺計算機的字長是32位,表明該機器能處理的數值最多爲4個字節//32位CPU就是在同一時間內處理字長爲32位的二進制數據,不是數值。
D、系統總線可以分爲數據總線、地址總線和控制總線三類
B: 計算機的控制器是由由程序計數器、指令寄存器、指令譯碼器、時序產生器和操作控制器組成,它是發佈命令的“決策機構”,即完成協調和指揮整個計算機系統的操作
3、假設有關係模式R(A,B,C,D),其數據依賴集:F={(A,B)- >C,C->D},則關係模式R的規範化程度最高達到:()
B.2NF
C.3NF
D.BCNF
B
24.以下爲一段瀏覽器中可運行的Javascript 代碼,則運行該段Javascript代碼的頁面彈出框中顯示的結果是:()
Var obj = { “key”:”1”,”value”:2};
Var newObj = obj;
newObj.value += obj.key;
alert(obj.value);
A、2 B、12 C、3 D、21
D
25.有足夠量的2分、5分、1分硬幣,如果想湊齊一元錢,可以有()種方法
A、541 B、270 C、1024 D、128
說明:看成50個2分和20個5分構成小於一元,不夠的用1分來補。當20個5分,2分0個共1種;當19個5分時,2分可能有:0,1,2共3種;。。。。。。當有2個5分時,2分可能有0,1,2...45共46種;當有一個5分時,2分可能有:0,1,2...47共48種;當有0個5分,2分可能有:0,1,2...50共51種。所以共有1+3+...+48+51=(1+48)+(3+46)+...+(23+26)+51=49*(20/2)+51=541
28.在一個採用頁式虛擬存儲管理的系統中,有一用戶作業,它依次要訪問的也沒序列是1,2,3,4,1,2,5,1,2,3,4,5.假定分配給該作業的頁數爲3且作業初始時未裝載頁面,那麼採用FIFO調度算法產生的缺頁中斷數爲(),採用LRU調度算法產生的缺頁中斷數爲()
9,10,當時寫了一個6,7,錯在初始未裝載
<pre name="code" class="cpp">class Base
{
public:
virtual int foo(int x){return x*10;}
int foo(char x[14]){return sizeof(x)+10;}
};
class Derived:public Base
{
int foo(int x){return x*20;}
virtual int foo(char x[10]){return sizeof (x)+20;}
};
int main(void)
{
Derived stDerived;
Base * pstBase=& stDerived;
char x[10];
printf(“%d\n”,pstBase->foo(100)+pstBase->foo(x));
return 0;
}
在32位環境下,以上程序的輸出結果是()
2014, 蠻經典的考到兩點,1)虛函數,基類指着指向派生類時,如果調用的是基類已經聲明過的虛函數,動態綁定,如果不是虛函數,那麼基類指針將會體現裁割的性質,就是隻能指向派生類對象的基類部分;2)數組在傳遞給函數時退化成了指針,當數組作爲非引用類型的形參時,編譯器不會檢查數組大小,x就是指針,只有當引用傳遞數組纔會檢查傳遞的數組大小,傳遞的不再是數組的指針而是數組的引用本身
A. 珠寶商甲需要去鑑定一批41克以下的寶石(可能是41克以下不包括41克的任意重量),他只能攜帶一個天平和四個砝碼去稱重,請問他會攜帶那些重量的砝碼? 1 3 9 27
說明:我第一反應有兩種思路。1、由上往下嘗試,假設需要40/2=20,轉化爲有3個發嗎解決1-20的問題,發現走不通;2、然後嘗試由下往上,首先以2倍爲步長,明顯不行,再以3倍爲步長1,3,9,27,短暫嘗試發現確實可以經過加減構造出任意1-40.