第1題
在計算機內(nèi)部用來傳送、存貯、加工處理的數(shù)據(jù)或指令都是以( )形式進行的。
二進制碼
八進制碼
十進制碼
智能拼音碼
第2題
下列說法正確的是( )。
CPU的主要任務(wù)是執(zhí)行數(shù)據(jù)運算和程序控制
存儲器具有記憶能力,其中信息任何時候都不會丟失
兩個顯示器屏幕尺寸相同,則它們的分辨率必定相同
個人用戶只能使用Wifi的方式連接到Internet
第3題
與二進制小數(shù)0.1相等的十六進制數(shù)是( )。
0.8
0.4
0.2
0.1
第4題
下面有四個數(shù)據(jù)組,每個組各有三個數(shù)據(jù),其中第一個數(shù)據(jù)為八進制數(shù),第二個數(shù)據(jù)為 十進制數(shù),第三個數(shù)據(jù)為十六進制數(shù)。這四個數(shù)據(jù)組中三個數(shù)據(jù)相同的是( )。
120 82 50
144 100 68
300 200 C8
1762 1010 3F2
第5題
線性表若采用鏈表存儲結(jié)構(gòu),要求內(nèi)存中可用存儲單元地址( )。
必須連續(xù)
部分地址必須連續(xù)
一定不連續(xù)
連續(xù)不連續(xù)均可
第6題
今有一空棧S,對下列待進棧的數(shù)據(jù)元素序列a,b,c,d,e,f依次進行進棧,進棧,出棧, 進棧,進棧,出棧的操作,則此操作完成后,棧S的棧頂元素為( )。
f
c
a
b
第7題
前序遍歷序列與后序遍歷序列相同的二叉樹為( )。
非葉子結(jié)點只有左子樹的二叉樹
只有根結(jié)點的二叉樹
根結(jié)點無右子樹的二叉樹
非葉子結(jié)點只有右子樹的二叉樹
第8題
如果根的高度為1,具有61個結(jié)點的完全二叉樹的高度為( )。
5
6
7
8
第9題
6個頂點的連通圖的最小生成樹,其邊數(shù)為( )。
4
第10題
設(shè)某算法的計算時間表示為遞推關(guān)系式T(n) = T(n - 1) + n(n為正整數(shù))及T(0) = 1,則 該算法的時間復(fù)雜度為( )。
O(log n)
O(n log n)
O(n)
O(n^2)
第11題
具有n個頂點,e條邊的圖采用鄰接表存儲結(jié)構(gòu),進行深度優(yōu)先遍歷和廣度優(yōu)先遍歷運 算的時間復(fù)雜度均為( )。
O(e^2)
O(ne)
O(n+e)
第12題
在數(shù)據(jù)壓縮編碼的應(yīng)用中,哈夫曼(Huffman)算法是一種采用了( )思想的算法
貪心
分治
遞推
回溯
第13題
雙向鏈表中有兩個指針域,llink和rlink,分別指回前驅(qū)及后繼,設(shè)p指向鏈表中的 一個結(jié)點,q指向一待插入結(jié)點,現(xiàn)要求在p前插入q,則正確的插入為( )。
p^.llink := q; q^.rlink := p; p^.llink^.rlink := q; q^.llink := p^.llink;
q^.rlink := p; p^.rlink := q; p^.llink^.rlink := q; q^.rlink := p;
p^.llink^.rlink := q; q^.rlink := p; q^.llink := p^.llink; p^.llink := q;
第14題
對圖G中各個結(jié)點分別指定一種顏色,使相鄰結(jié)點顏色不同,則稱為圖G的一個正常 著色。正常著色圖G所必需的最少顏色數(shù),稱為G的色數(shù)。那么下圖的色數(shù)是( )。
3
第15題
在NOI系列賽事中參賽選手必須使用由承辦單位統(tǒng)一提供的設(shè)備。下列物品中不允許選 手自帶的是( )。
鼠標(biāo)
筆
身份證
準(zhǔn)考證
第16題
Windows XP
UNIX
Linux
Mac OS
第17題
下列屬于視頻文件格式的有( )。
AVI
MPEG
WMV
JPEG
第18題
下列選項不是正確的IP地址的有( )。
202.300.12.4
192.168.0.3
100:128:35:91
11110335-21
第19題
下列有關(guān)樹的敘述中,敘述正確的有( )。
在含有n個結(jié)點的樹中,邊數(shù)只能是(n-1)條
在哈夫曼樹中,葉結(jié)點的個數(shù)比非葉結(jié)點個數(shù)多1
完全二叉樹一定是滿二叉樹
在二叉樹的前序序列中,若結(jié)點u在結(jié)點v之前,則u一定是v的祖先
第20題
以下圖中一定可以進行黑白染色的有( )。(黑白染色:為各個結(jié)點分別指定黑白 兩種顏色之一,使相鄰結(jié)點顏色不同。)
二分圖
完全圖
樹
連通圖
第21題
在 1 和 2015 之間(包括 1 和 2015 在內(nèi))不能被 4、5、6 三個數(shù)任意一個數(shù)整除的數(shù)有_____個。
第22題
結(jié)點數(shù)為 5 的不同形態(tài)的二叉樹一共有_____種。(結(jié)點數(shù)為 2 的二叉樹一共有 2 種:一種是根結(jié)點和左兒子,另一種是根結(jié)點和右兒子。)
第23題
#include <iostream> using namespace std; struct point{ int x; int y; }; int main() { struct EX{ int a; int b; point c; }e; e.a=1; e.b=2; e.c.x=e.a+e.b; e.c.y=e.a*e.b; cout<<e.c.x<<','<<e.c.y<<endl; return 0; }
輸出:( )
第24題
#include <iostream> using namespace std; void fun(char *a,char *b) { a=b; (*a)++; } int main() { char c1,c2,*p1,*p2; c1='A'; c2='a'; p1=&c1; p2=&c2; fun(p1,p2); cout<<c1<<c2<<endl; return 0; }
第25題
#include <iostream> using namespace std; int main() { int len,maxlen; string s,ss; maxlen=0; do { cin>>ss; len=ss.length(); if(ss[0]=='#')break; if(len>maxlen) { s=ss; maxlen=len; } }while(true); cout<<s<<endl; return 0; }
輸入:
I
am
citizen
of
China
#
第26題
#include <iostream> using namespace std; int fun(int n,int fromPos,int toPos) { int t,tot; if(n==0)return 0; for(t=1;t<=3;t++) if(t!=fromPos && t != toPos)break; tot=0; tot+=fun(n-1,fromPos,t); tot++; tot+=fun(n-1,t,toPos); return tot; } int main() { int n; cin>>n; cout<<fun(n,1,3)<<endl; return 0; }
輸入:5
第27題
(雙子序列最大和)給定一個長度為n(3≤n≤1000) 的整數(shù)序列,要求從中選出兩個連續(xù)子序列,使得這兩個連續(xù)子序列的序列和之和最大,最終只需輸出這個最大和。一個連續(xù)子序列的序列和為該連續(xù)子序列中所有數(shù)之和。要求:每個連續(xù)子序列長度至少為 1,且兩個連續(xù)子序列之間至少間隔 1 個數(shù)。
#include <iostrea m> using namespace std; const int MAXN = 1000; int n, i, ans, sum; int x[MAXN]; int lmax[MAXN]; // lmax[i] 為僅含 x[i] 及 x[i] 左側(cè)整數(shù)的連續(xù)子序列的序列和中,最大的序列和 int rmax[MAXN]; // rmax[i] 為僅含 x[i] 及 x[i] 右側(cè)整數(shù)的連續(xù)子序列的序列和中,最大的序列和 int main() { cin >> n; for (i = 0; i < n; i++) cin >> x[i]; lmax[0] = x[0] ; for (i = 1; i < n; i++) if (lmax[i - 1] <= 0) lmax[i] = x[i]; else lmax[i] = lmax[i - 1] + x[i]; for (i = 1; i < n; i++) if (lmax[i] < lmax[i - 1]) lmax[i] = lmax[i - 1]; ①; for (i = n - 2; i >= 0; i --) if (rmax[i + 1] <= 0) ②; else ③; for (i = n - 2; i >= 0; i --) if (rmax[i] < rmax[i + 1]) ④; ans = x[ 0] + x [2]; for (i = 1; i < n - 1; i++) { sum = ⑤; if (sum > ans) ans = sum; } cout << ans << endl; return 0; }
第28題
(最短路徑問題)無向連通圖 G 有 n 個結(jié)點,依次編號為 0,1,2,…,(n?1)。用鄰接矩陣的形式給出每條邊的邊長,要求輸出以結(jié)點 0 為起點出發(fā),到各結(jié)點的最短路徑長度。
使用 Dijkstra 算法解決該問題:
利用 dist 數(shù)組記錄當(dāng)前各結(jié)點與起點的已找到的最短路徑長度;
每次從未擴展的結(jié)點中選取 dist 值最小的結(jié)點 v 進行擴展,更新與 v 相鄰的結(jié)點的 dist 值;
不斷進行上述操作直至所有結(jié)點均被擴展,此時 dist 數(shù)據(jù)中記錄的值即為各結(jié)點與起點的最短路徑長度。
#include <iostream> using namespace std; const int MAXV = 100; int n, i , j, v; int w[MAXV][MAXV]; // 鄰接矩陣,記錄邊長 // 其中 w[i][j] 為連接結(jié)點 i 和結(jié)點 j 的無向邊長度,若無邊則為 -1 int dist[MAXV]; int used[MAXV]; // 記錄結(jié)點是否已擴展(0:未擴展;1:已擴展) int main() { cin >> n; for (i = 0; i < n; i+ +) for (j = 0; j < n; j++) cin >> w[i][j]; dist[0] = 0; for (i = 1; i < n; i+ +) dist[i] = -1; for (i = 0; i < n; i+ +) used[i] = 0; while (true) { ① ; for (i = 0; i < n; i++) if (used[i] != 1 && dist[i] != -1 && (v == -1 || ② )) ③ ; if(v == -1) break; ④ ; for (i = 0; i < n; i++) if (w[v][i] != -1 && (dist[i] == -1 || ⑤ )) dist[i] = dist[v] + w[v][i]; } for (i = 0; i < n; i++) cout << dist[i] << endl; return 0; }
一、單項選擇題(1-15 共 10 題 ); 二、不定項選擇題(16-20 共 5 題); 三、問題求解(21-22 共 2 題); 四、閱讀程序?qū)懡Y(jié)果(23-26 共 4 題); 五、完善程序(27-28 共2題)。