通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
在计算机内部用来传送、存贮、加工处理的数据或指令都是以( )形式进行的。
二进制码
八进制码
十进制码
智能拼音码
第2题
下列说法正确的是( )。
CPU的主要任务是执行数据运算和程序控制
存储器具有记忆能力,其中信息任何时候都不会丢失
两个显示器屏幕尺寸相同,则它们的分辨率必定相同
个人用户只能使用Wifi的方式连接到Internet
第3题
与二进制小数0.1相等的十六进制数是( )。
0.8
0.4
0.2
0.1
第4题
下面有四个数据组,每个组各有三个数据,其中第一个数据为八进制数,第二个数据为 十进制数,第三个数据为十六进制数。这四个数据组中三个数据相同的是( )。
120 82 50
144 100 68
300 200 C8
1762 1010 3F2
第5题
线性表若采用链表存储结构,要求内存中可用存储单元地址( )。
必须连续
部分地址必须连续
一定不连续
连续不连续均可
第6题
今有一空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f依次进行进栈,进栈,出栈, 进栈,进栈,出栈的操作,则此操作完成后,栈S的栈顶元素为( )。
f
c
a
b
第7题
前序遍历序列与后序遍历序列相同的二叉树为( )。
非叶子结点只有左子树的二叉树
只有根结点的二叉树
根结点无右子树的二叉树
非叶子结点只有右子树的二叉树
第8题
如果根的高度为1,具有61个结点的完全二叉树的高度为( )。
5
6
7
8
第9题
6个顶点的连通图的最小生成树,其边数为( )。
4
第10题
设某算法的计算时间表示为递推关系式T(n) = T(n - 1) + n(n为正整数)及T(0) = 1,则 该算法的时间复杂度为( )。
O(log n)
O(n log n)
O(n)
O(n^2)
第11题
具有n个顶点,e条边的图采用邻接表存储结构,进行深度优先遍历和广度优先遍历运 算的时间复杂度均为( )。
O(e^2)
O(ne)
O(n+e)
第12题
在数据压缩编码的应用中,哈夫曼(Huffman)算法是一种采用了( )思想的算法
贪心
分治
递推
回溯
第13题
双向链表中有两个指针域,llink和rlink,分别指回前驱及后继,设p指向链表中的 一个结点,q指向一待插入结点,现要求在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中各个结点分别指定一种颜色,使相邻结点颜色不同,则称为图G的一个正常 着色。正常着色图G所必需的最少颜色数,称为G的色数。那么下图的色数是( )。
3
第15题
在NOI系列赛事中参赛选手必须使用由承办单位统一提供的设备。下列物品中不允许选 手自带的是( )。
鼠标
笔
身份证
准考证
第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题
下列有关树的叙述中,叙述正确的有( )。
在含有n个结点的树中,边数只能是(n-1)条
在哈夫曼树中,叶结点的个数比非叶结点个数多1
完全二叉树一定是满二叉树
在二叉树的前序序列中,若结点u在结点v之前,则u一定是v的祖先
第20题
以下图中一定可以进行黑白染色的有( )。(黑白染色:为各个结点分别指定黑白 两种颜色之一,使相邻结点颜色不同。)
二分图
完全图
树
连通图
第21题
在 1 和 2015 之间(包括 1 和 2015 在内)不能被 4、5、6 三个数任意一个数整除的数有_____个。
第22题
结点数为 5 的不同形态的二叉树一共有_____种。(结点数为 2 的二叉树一共有 2 种:一种是根结点和左儿子,另一种是根结点和右儿子。)
第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) 的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出这个最大和。一个连续子序列的序列和为该连续子序列中所有数之和。要求:每个连续子序列长度至少为 1,且两个连续子序列之间至少间隔 1 个数。
#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] 左侧整数的连续子序列的序列和中,最大的序列和 int rmax[MAXN]; // rmax[i] 为仅含 x[i] 及 x[i] 右侧整数的连续子序列的序列和中,最大的序列和 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 个结点,依次编号为 0,1,2,…,(n−1)。用邻接矩阵的形式给出每条边的边长,要求输出以结点 0 为起点出发,到各结点的最短路径长度。
使用 Dijkstra 算法解决该问题:
利用 dist 数组记录当前各结点与起点的已找到的最短路径长度;
每次从未扩展的结点中选取 dist 值最小的结点 v 进行扩展,更新与 v 相邻的结点的 dist 值;
不断进行上述操作直至所有结点均被扩展,此时 dist 数据中记录的值即为各结点与起点的最短路径长度。
#include <iostream> using namespace std; const int MAXV = 100; int n, i , j, v; int w[MAXV][MAXV]; // 邻接矩阵,记录边长 // 其中 w[i][j] 为连接结点 i 和结点 j 的无向边长度,若无边则为 -1 int dist[MAXV]; int used[MAXV]; // 记录结点是否已扩展(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 题); 四、阅读程序写结果(23-26 共 4 题); 五、完善程序(27-28 共2题)。