9512.net
甜梦文库
当前位置:首页 >> 学科竞赛 >>

NOIP2016提高组C试题



第二十二届全国青少年信息学奥林匹克联赛初赛
提高组 C 语言试题

选手注意: ? 试题纸共有 12 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写 在试题纸上的一律无效。 ? 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资 料。

1. 以下不是微软公司出品的软件是( A. Powerpoin

t C. Excel

2. 如果开始时计算机处于小写输入状态, 现在有一只小老鼠反复按照 CapsLock、 字母键 A、字母键 S 和字母键 D 的顺序来回按键,即 CapsLock、A、S、D、 S、A、CapsLock、A、S、D、S、A、CapsLock、A、S、D、S、A、……, 屏幕上输出的第 81 个字符是字母( )。 A. A B. S C. D D. a 3. 二进制数 00101100 和 01010101 异或的结果是( )。 A. 00101000 B. 01111001 C. 01000100 D. 00111000 4. 与二进制小数 0.1 相等的八进进制数是( ) 。 A. 0.8 B. 0.4 C. 0.2





一、单项选择题(共 15 题,每题 1.5 分,共计 22.5 分;每题有且仅有一个正确 选项) )。 B. Word D. Acrobat Reader

5. 以比较作为基本运算,在 N 个数中找最小数的最少运算次数为( A. N B. N-1 C. N2 D. log N


D. 0.1

竞赛时间:2016 年 10 月 22 日 14:30~16:30

)。



6. 表达式 a*(b+c)-d 的后缀表达形式为( )。 A. abcd*+B. abc+*dC. abc*+d-

D. -+*abcd

7. 一棵二叉树如右图所示, 若采用二叉树链表存储该二叉 树(各个结点包括结点的数据、左孩子指针、右孩子指 针) 。 如果没有左孩子或者右孩子, 则对应的为空指针。 那么该链表中空指针的数目为( )。 A. 6 B. 7 C. 12 D. 14
CCF NOIP2016 初赛提高组 C 语言试题 第 1 页,共 12 页

8. G 是一个非连通简单无向图,共有 28 条边,则该图至少有( A. 10 B. 9 C. 8 D. 7

)个顶点。

10. 有以下程序: #include <stdio.h> int main() { int k = 4, n = 0; while (n < k) { n++; if (n % 3 != 0) continue; k--; } printf("%d,%d\n", k, n); return 0; } 程序运行后的输出结果是( )。 A. 2,2 B. 2,3 C. 3,2


D. 3,3

11. 有 7 个一模一样的苹果,放到 3 个一样的盘子中,一共有( )种放法。 7 A. 7 B. 8 C. 21 D. 3 12. Lucia 和她的朋友以及朋友的朋友都在某社交网站上注册了账号。 下图是他们 之间的关系图,两个人之间有边相连代表这两个人是朋友,没有边相连代表 不是朋友。这个社交网站的规则是:如果某人 A 向他(她)的朋友 B 分享了 某张照片,那么 B 就可以对该照片进行评论;如果 B 评论了该照片,那么他 (她)的所有朋友都可以看见这个评论以及被评论的照片,但是不能对该照 片进行评论(除非 A 也向他(她)分享了该照片)。现在 Lucia 已经上传了


CCF NOIP2016 初赛提高组 C 语言试题 第 2 页,共 12 页





9. 某计算机的 CPU 和内存之间的地址总线宽度是 32 位(bit),这台计算机最 多可以使用( )的内存。 A. 2GB B. 4GB C. 8GB D. 16GB

一张照片, 但是她不想让 Jacob 看见这张照片, 那么她可以向以下朋友 ( 分享该照片。 A. Dana, Michael, Eve B. Dana, Eve, Monica C. Michael, Eve, Jacob D. Micheal, Peter, Monica



13. 周末小明和爸爸妈妈三个人一起想动手做三道菜。小明负责洗菜、爸爸负责 切菜、妈妈负责炒菜。假设做每道菜的顺序都是:先洗菜 10 分钟,然后切 菜 10 分钟,最后炒菜 10 分钟。那么做一道菜需要 30 分钟。注意:两道不 同的菜的相同步骤不可以同时进行。例如第一道菜和第二道的菜不能同时洗, 也不能同时切。那么做完三道菜的最短时间需要( )分钟。 A. 90 B. 60 C. 50 D. 40 14. 假设某算法的计算时间表示为递推关系式 T(n) = 2T ( ) + √ 4 T(1) = 1 则算法的时间复杂度为( )。 A. O() B. O(√)


)。

C. O(√ log )



Search(1, n) 1. k←?n/2? 2. if L[k] > L[k-1] and L[k] > L[k+1] 3. then __________ 4. else if L[k] > L[k-1] and L[k] < L[k+1] 5. then __________ 6. else __________ 正确的填空顺序是( )。 A. c, a, b B. c, b, a C. a, b, c



15. 给定含有 n 个不同的数的数组 L=<x1, x2, ..., xn>。 如果 L 中存在 x ( i 1 < i < n) 使得 x1 < x2 < ... < xi-1 < xi > xi+1 > ... > xn, 则称 L 是单峰的,并称 xi 是 L 的 “峰顶”。现在已知 L 是单峰的,请把 a-c 三行代码补全到算法中使得算法 正确找到 L 的峰顶。 a. Search(k+1, n) b. Search(1, k-1) c. return L[k]

二、不定项选择题(共 5 题,每题 1.5 分,共计 7.5 分;每题有一个或多个正确 选项,多选或少选均不得分) 1. 以下属于无线通信技术的有(

CCF NOIP2016 初赛提高组 C 语言试题 第 3 页,共 12 页


D. O(2 ) D. b, a, c

A. 蓝牙

B. WiFi

C. GPRS

D. 以太网 )。

2. 可以将单个计算机接入到计算机网络中的网络接入通讯设备有( A. 网卡 B. 光驱 C. 鼠标 D. 显卡 3. 下列算法中运用分治思想的有( A. 快速排序 B. 归并排序 )。 C. 冒泡排序

4. 下图表示一个果园灌溉系统,有 A、B、C、D 四个阀门,每个阀门可以打开 或关上,所有管道粗细相同,以下设置阀门的方法中,可以让果树浇上水的
有水 有水

有( )。 A. B 打开,其他都关上 C. A 打开,其他都关上

三、问题求解(共 2 题,每题 5 分,共计 10 分;每题全部答对得 5 分,没有部 分分) 1. 一个 1×8 的方格图形(不可旋转)用黑、白两种颜色填涂每个方格。如果 每个方格只能填涂一种颜色,且不允许两个黑格相邻,共有_________种填 涂方案。



2. 某中学在安排期末考试时发现,有 7 个学生要参加 7 门课程的考试,下表列 出了哪些学生参加哪些考试(用√表示要参加相应的考试)。 最少要安排_________个不同的考试时间段才能避免冲突?



5. 参加 NOI 比赛,以下能带入考场的有( )。 A. 钢笔 B. 适量的衣服 C. U 盘



B. AB 都打开,CD 都关上 D. D 打开,其他都关上

CCF NOIP2016 初赛提高组 C 语言试题 第 4 页,共 12 页


果树

D. 计数排序

D. 铅笔



√ √ √






考试 通用技术 物理 化学 生物 历史 地理 政治

学生 1 √ √ √

学生 2 √ √

学生 3

学生 4

学生 5 √

学生 6

学生 7 √ √

√ √ √ √



四、阅读程序写结果(共 4 题,每题 8 分,共计 32 分) 1. #include <stdio.h> int main() { int a[6] = {1, 2, 3, 4, 5, 6}; int pi = 0; int pj = 5; int t , i; while (pi < pj) { t = a[pi]; a[pi] = a[pj]; a[pj] = t; pi++; pj--; } for (i = 0; i < 6; i++) printf("%d,", a[i]); printf("\n"); return 0; } 输出:_________

2. #include <stdio.h> #include <string.h>



int main() { char a[100][100], b[100][100], c[100][100]; int n, i = 0, j = 0, k = 0, total_len[100], length[100][3]; scanf("%d", &n); for (i = 0; i < n; i++) { gets(c[i]);
CCF NOIP2016 初赛提高组 C 语言试题 第 5 页,共 12 页





total_len[i] = strlen(c[i]); } for (i = 0; i < n; i++) { j = 0; while (c[i][j] != ':') { a[i][k] = c[i][j]; k = k + 1; j++; } length[i][1] = k - 1; a[i][k] = 0; k = 0; for (j = j + 1; j < total_len[i]; j++) { b[i][k] = c[i][j]; k = k + 1; } length[i][2] = k - 1; b[i][k] = 0; k = 0; } for (i = 0; i < n; i++) { if (length[i][1] >= length[i][2]) printf("NO,"); else { k = 0; for (j = 0; j < length[i][2]; j++) { if (a[i][k] == b[i][j]) k = k + 1; if (k > length[i][1]) break; } if (j == length[i][2]) printf("NO,"); else printf("YES,"); } } printf("\n"); return 0;



} 输入:3 AB:ACDEbFBkBD AR:ACDBrT
CCF NOIP2016 初赛提高组 C 语言试题 第 6 页,共 12 页







SARS:Severe Atypical Respiratory Syndrome 输出:_________ (注:输入各行前后均无空格)

输出:_________

4. #include <stdio.h> #include <stdio.h> #include <memory.h> int int int int



map[100][100]; sum[100], weight[100]; visit[100]; n;

void dfs(int node) { visit[node] = 1; sum[node] = 1;
CCF NOIP2016 初赛提高组 C 语言试题 第 7 页,共 12 页



int main() { char seq[] = "acmerandacm"; int n = strlen(seq); printf("%d\n", lps(seq, 0, n - 1)); return 0; }



int lps(char seq[], int i, int j) { int len1, len2; if (i == j) return 1; if (i > j) return 0; if (seq[i] == seq[j]) 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; }



3. #include <stdio.h> #include <string.h>

int v, maxw = 0; for (v = 1; v <= n; v++) { if (!map[node][v] || visit[v]) continue; dfs(v); sum[node] += sum[v]; if (sum[v] > maxw) maxw = sum[v]; } if (n - sum[node] > maxw) maxw = n - sum[node]; weight[node] = maxw; }

int main() { memset(map, 0, sizeof(map)); memset(sum, 0, sizeof(sum)); memset(weight, 0, sizeof(weight)); memset(visit, 0, sizeof(visit)); scanf("%d", &n); int i, x, y; for (i = 1; i < n; i++) { scanf("%d%d", &x, &y); map[x][y] = 1; map[y][x] = 1; } dfs(1); int ans = n, ansN = 0; for (i = 1; i <= n; i++) if (weight[i] < ans) { ans = weight[i]; ansN = i; } printf("%d %d\n", ansN, ans); return 0; }


输入:11 1 2 1 3 2 4 2 5 2 6
CCF NOIP2016 初赛提高组 C 语言试题 第 8 页,共 12 页







五、完善程序(共 2 题,每题 14 分,共计 28 分)

#include <stdio.h> #define MAXN 200000 #define infinity 2147483647



void sort(int l, int r) { int x = height[rank[(l + r) / 2]], i = l, j = r, temp; while (i <= j) { while (height[rank[i]] < x) i++; while (height[rank[j]] > x) j--; if ( (1) ) { temp = rank[i]; rank[i] = rank[j]; rank[j] = temp; i++; j--; } } if (i < r) sort(i, r); if (l < j) sort(l, j); }



int answer[MAXN], height[MAXN], previous[MAXN], next[MAXN]; int rank[MAXN]; int n;

CCF NOIP2016 初赛提高组 C 语言试题 第 9 页,共 12 页



1. (交朋友) 根据社会学研究表明, 人们都喜欢找和自己身高相近的人做朋友。 现在有 n 名身高两两不相同的同学依次走入教室,调查人员想预测每个人在 走入教室的瞬间最想和已经进入教室的哪个人做朋友。当有两名同学和这名 同学的身高差一样时,这名同学会更想和高的那个人做朋友。比如一名身高 为 1.80 米的同学进入教室时, 有一名身高为 1.79 米的同学和一名身高为 1.81 米的同学在教室里,那么这名身高为 1.80 米的同学会更想和身高为 1.81 米 的同学做朋友。对于第一个走入教室的同学我们不做预测。 由于我们知道所有人的身高和走进教室的次序,所以我们可以采用离线 的做法来解决这样的问题,我们用排序加链表的方式帮助每一个人找到在他 之前进入教室的并且和他身高最相近的人。(第一空 2 分,其余 3 分)



3 7 7 8 7 11 6 9 9 10 输出:_________



2. (交通中断)有一个小国家,国家内有 n 座城市和 m 条双向的道路,每条道 路连接着两座不同的城市。其中 1 号城市为国家的首都。由于地震频繁可能 导致某一个城市与外界交通全部中断。这个国家的首脑想知道,如果只有第 i(i>1)个城市因地震而导致交通中断时, 首都到多少个城市的最短路径长度会 发生改变。如果因为无法通过第 i 个城市而导致从首都出发无法到达某个城 市,也认为到达该城市的最短路径长度改变。 对于每一个城市 i,假定只有第 i 个城市与外界交通中断,输出有多少个 城市会因此导致到首都的最短路径长度改变。 我们采用邻接表的方式存储图的信息,其中 head[x]表示顶点 x 的第一条 边的编号,next[i]表示第 i 条边的下一条边的编号,point[i]表示第 i 条边的终 点,weight[i]表示第 i 条边的长度。(第一空 2 分,其余 3 分)



int main() { scanf("%d", &n); int i, higher, shorter; for (i = 1; i <= n; i++) { scanf("%d", &height[i]); rank[i] = i; } sort(1, n); for (i = 1; i <= n; i++) { previous[rank[i]] = rank[i - 1]; (2) ; } for (i = n; i >= 2; i--) { higher = shorter = infinity; if (previous[i] != 0) shorter = height[i] - height[previous[i]]; if (next[i] != 0) (3) ; if ( (4) ) answer[i] = previous[i]; else answer[i] = next[i]; next[previous[i]] = next[i]; (5) ; } for (i = 2; i <= n; i++) printf("%d:%d\n", i, answer[i]); return 0; }

CCF NOIP2016 初赛提高组 C 语言试题 第 10 页,共 12 页





int head[MAXN], next[MAXM], point[MAXM], weight[MAXM]; int queue[MAXN], dist[MAXN], visit[MAXN]; int n, m, x, y, z, total = 0, answer; void link(int x,int y,int z) { total++; next[total] = head[x]; head[x] = total; point[total] = y; weight[total] = z; total++; next[total] = head[y]; head[y] = total; point[total] = x; weight[total] = z; }

int main() { int i, j, s, t; scanf("%d%d", &n, &m); for (i = 1; i <= m; i++) { scanf("%d%d%d", &x, &y, &z); link(x, y, z); } for (i = 1; i <= n; i++) dist[i] = infinity; (1) ; queue[1] = 1; visit[1] = 1; s = 1; t = 1; // 使用 SPFA 求出第一个点到其余各点的最短路长度 while (s <= t) { x = queue[s % MAXN]; j = head[x]; while (j != 0) { if ( (2) ) { dist[point[j]] = dist[x] + weight[j];





CCF NOIP2016 初赛提高组 C 语言试题 第 11 页,共 12 页





#include <stdio.h> #include <memory.h> #define MAXN 6000 #define MAXM 100000 #define infinity 2147483647

} j = next[j]; } (3) s++; ;


}

} for (i = 2; i <= n; i++) { queue[1] = 1; memset(visit, 0, sizeof(visit)); visit[1] = 1; s = 1; t = 1; while (s <= t) { // 判断最短路长度是否不变 x = queue[s]; j = head[x]; while (j != 0) { if (point[j] != i && (4) && visit[point[j]] == 0) { (5) ; t++; queue[t] = point[j]; } j = next[j]; } s++; } answer = 0; for (j = 1; j <= n; j++) answer += 1 - visit[j]; printf("%d:%d\n", i, answer - 1); } return 0;



CCF NOIP2016 初赛提高组 C 语言试题 第 12 页,共 12 页





if (visit[point[j]] == 0) { t++; queue[t % MAXN] = point[j]; visit[point[j]] = 1; }



更多相关文章:
NOIP2015提高组复赛试题Day1
NOIP2015提高组复赛试题Day1_学科竞赛_高中教育_教育专区。NOIP2015提高组复赛...message.c -lm landlords.c -lm fpcmessage.pas fpclandlords.pas 注意事项: ...
NOIP2016提高组复赛试题(Day1+Day2)
NOIP2016提高组复赛试题(Day1+Day2)_IT/计算机_专业资料。NOIP2016提高组复赛...3. C / C ++ 中函数 main() 的返回值类型必须是 int ,程序正常结束时的...
Noip2014初赛提高组C试题及答案(完整版)
Noip2014初赛提高组C试题及答案(完整版)_IT认证_资格考试/认证_教育专区。Noip2014 初赛提高组试题及答案(完整版) 提高组 C 语言试题 一、单项选择题(每题 1.5...
第22届全国青少年信息学奥林匹克联赛NOIP2016提高组试题day1
第22届全国青少年信息学奥林匹克联赛NOIP2016提高组试题day1_学科竞赛_高中教育_...-lm -lm -lm -lm -lm -lm toy.cpp toy.c toy.pas running.cpp running...
NOIP2015提高组Pascal试题及参考答案
下列物品中不允许选手自带的是 C. 身份证 D. 准考证 二、不定项选择题(共...NOIP2014提高组Pascal初... 10页 免费 ©2016 Baidu 使用百度前必读 | 文库...
noip2015提高组复赛试题答案
noip2015提高组复赛试题答案_IT认证_资格考试/认证_....c -lm fpc magic.pas message.cpp message.c ...文档贡献者 66hhyyh 贡献于2016-09-14 ...
NOIP2005提高组初赛试题答案
NOIP2005提高组初赛试题答案 这是noip历年题目,有助于你的noip初赛,下载吧!这是...(2016)10 C. (11111100000)2 D. (3006)10 E. (7E0)16 13. 二叉树 T...
NOIP2005提高组初赛试题及答案
NOIP2005提高组初赛试题及答案_财会/金融考试_资格考试/认证_教育专区。第十一...(2016)10 C. (11111100000)2 D. (3006)10 E. (7E0)16 13. 二叉树T的...
NOIP2015提高组初赛试题C++(A3版)
文档贡献者 和蔼的yxtan 贡献于2016-10-23 1/2 相关文档推荐 ...NOIP2015提高组C++试题 9页 1下载券 NOIP2015提高组C试题 9页 1下载券 ...
NOIP 2016 提高组 复赛 Day1
NOIP 2016 提高组 复赛 Day1_学科竞赛_高中教育_...(toy) 【样例2输入】 10 10 1 c 0 r 0 p ...NOIP2011提高组复赛试题... 6页 1下载券 NOIP...
更多相关标签:
2016noip提高组试题    noip2016提高组复赛    noip2016提高组初赛    noip2016初赛试题    noip2016提高组    noip2016复赛试题    noip2016提高组查分    noip2016提高组day1    

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图