1、第二十二届全国青少年信息学奥林匹克联赛初赛提高组 C+语言试题(2 小时)选手注意: 不得使用任何 电子设备(如 计算器、手机、 电子词典等)或查阅任何书籍资料。一、单项选择题(共 15 题,每题 1.5 分,共计 22.5 分;每题有且仅有一个正确 选项)1. 以下不是微软公司出品的软件是( )。. Powerpoint . Word . Excel . Acrobat Reader2. 如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照 CapsLock、字母键 A、字母键 S 和字母键 D 的顺序来回按键,即 CapsLock、A、S、D、S、A、CapsLock、A、S、D、S
2、、A、CapsLock、A、S、D、S、A、,屏幕上输出的第 81 个字符是字母( )。. A . S . D . A3. 二进制数 00101100 和 01010101 异或的结果是( )。. 00101000 . 01111001 . 01000100 . 001110004. 与二进制小数 0.1 相等的八进进制数是( )。. 0.8 . 0.4 . 0.2 . 0.15. 以比较作为基本运算,在 N 个数中找最小数的最少运算次数为( )。. N . N-1 . N2 . log N6. 表达式 a*(b+c)-d 的后缀表达形式为( )。. abcd*+- . abc+*d- . a
3、bc*+d- . -+*abcd7. 一棵二叉树如右图所示,若采用二叉 树链表存储该二叉 树(各个结点包括结点的数据、左孩子指 针、右孩子指 针)。如果没有左孩子或者右孩子,则对应 的为空指针。那么 该链表中空指针的数目为( )。A. 6 B. 7 C. 12 . 148. G 是一个非连通简单无向 图,共有 28 条边,则该图至少有( )个顶点。. 10 . 9 .8 .79. 某计算机的 CPU 和内存之间的地址总线宽度是 32 位(bit ),这台计算机最多可以使用( )的内存。A. 2GBB. 4GBC. 8GBD. 16GB10. 有以下程序:#include using names
4、pace std;int main() int k = 4, n = 0; while (n 。如果 L 中存在 Xi(1 xi+1 . Xn, 则称 L 是单峰的,并称 xi 是 L 的“峰顶”。现在已知 L 是单峰的,请把 a-c 三行代码补全到算法中使得算法 正确找到 L 的峰顶。a. Search(k+1, n)b. Search(1, k-1)c. return LkSearch(1, n)1. k n/22. if Lk Lk-1 and Lk Lk+13. then _4. else if Lk Lk-1 and Lk using namespace std;int main()
5、 int a6 = 1, 2, 3, 4, 5, 6; int pi = 0; int pj = 5; int t , i;while (pi using namespace std;int main() char a100100, b100100; string c100; string tmp;int n, i = 0, j = 0, k = 0, total_len100, length1003;cin n;getline(cin, tmp);for (i = 0; i = lengthi2) cout lengthi1) break;if (j = lengthi2) cout usi
6、ng namespace std;int lps(string seq, int i, int j) int len1, len2;if (i = j) return 1;if (i j) return 0;if (seqi = seqj)return lps(seq, i + 1, j - 1) + 2; len1 = lps(seq, i, j - 1);len2 = lps(seq, i + 1, j); if (len1 len2) return len1; return len2;int main() string seq = “acmerandacm“; int n = seq.s
7、ize();cout #include using namespace std;int map100100;int sum100, weight100; int visit100;int n;void dfs(int node) visitnode = 1; sumnode = 1; int v, maxw = 0;for (v = 1; v maxw) maxw = sumv;if (n - sumnode maxw) maxw = n - sumnode;weightnode = maxw;int main() memset(map, 0, sizeof(map); memset(sum,
8、 0, sizeof(sum); memset(weight, 0, sizeof(weight); memset(visit, 0, sizeof(visit); cin n;int i, x, y;for (i = 1; i x y; mapxy = 1; mapyx = 1;dfs(1);int ans = n, ansN = 0; for (i = 1; i using namespace std; #define MAXN 200000#define infinity 2147483647int answerMAXN, heightMAXN, previousMAXN, nextMA
9、XN; int rankMAXN;int n;void sort(int l, int r) int x = heightrank(l + r) / 2, i = l, j = r, temp; while (i x) j-;if ( (1) ) temp = ranki; ranki = rankj;rankj = temp;i+; j-;if (i n;int i, higher, shorter; for (i = 1; i heighti; ranki = i;sort(1, n);for (i = 1; i = 2; i-) higher = shorter = infinity;
10、if (previousi !=0)shorter = heighti - heightpreviousi;if (nexti != 0)(3) ;if ( (4) )answeri = previousi;elseansweri = nexti;nextpreviousi = nexti;(5) ;for (i = 2; i 1)个城市因地震而导致交通中断时,首都到多少个城市的最短路径长度会发生改变。如果因 为无法通 过第 i 个城市而导致从首都出发无法到达某个城市,也认为 到达该城市的最短路径长 度改变。对于每一个城市 i,假定只有第 i 个城市与外界交通中断,输出有多少个城市会因此导致到
11、首都的最短路径长度改变。我 们采用邻接表的方式存储图 的信息,其中 headx表示顶点 x 的第一条 边的编号,nexti表示第 i 条边的下一条边的编号, pointi表示第 i 条边的终点,weighti表示第 i 条边的长度。 (第一空 2 分,其余 3 分)#include #include using namespace std; #define MAXN 6000 #define MAXM 100000#define infinity 2147483647int headMAXN, nextMAXM, pointMAXM, weightMAXM;int queueMAXN, distMAXN, visitMAXN;int n, m, x, y, z, total = 0, answer;