1、 选手注 意: 第 二 十 一 届 全 国 青 少 年 信 息 学 奥 林 匹 克 联 赛 初 赛普及组 C+ 语言 试题 竞赛时间:2015 年 10 月 11 日 14:30 16:30 试 题 纸共 有 7 页, 答题纸 共有 2 页,满 分 100 分。 请在答 题纸 上作 答, 写 在 试题纸 上的 一 律无 效。 不 得 使用 任何 电子 设备(如计 算 器、 手机 、 电 子词 典等 ) 或 查 阅 任 何书 籍资 料。 一、单 项选择 题 ( 共 20 题,每 题 1.5 分,共计 30 分;每题 有且仅 有一个 正 确 选 项 ) 1. 1MB 等 于( ) 。 A. 100
2、0 字 节 B. 1024 字节 C.1000 X 1000 字节 D. 1024 X 1024 字节 2. 在 PC 机 中 ,PENTIUM ( 奔腾) 、酷 睿 、 赛扬 等 是 指( ) 。 A. 生产 厂家 名称 B. 硬盘 的型 号 C. CPU 的 型号 D. 显示 器的 型号 3. 操作系 统的 作用 是( ) 。 A. 把源 程序 译成 目标 程序 B. 便于 进行 数据 管理 C. 控制 和 管理 系统 资源 D. 实现 硬件 之间 的连 接 4. 在计算 机内 部用 来传 送 、 存贮、 加 工 处理 的 数 据或 指令都 是以 ( ) 形式 进 行 的。 A. 二 进
3、制 码 B. 八进 制码 C. 十进 制码 D. 智能 拼音 码 5. 下列说 法正 确的 是( ) 。 A. CPU 的 主要 任务 是执 行 数 据运算 和 程 序控 制 B. 存储 器具 有记 忆 能 力, 其中信 息任 何 时 候 都 不会 丢 失 C. 两个 显示 器屏 幕 尺 寸相 同,则 它们 的 分 辨 率 必定 相 同 D. 个人 用 户只 能使 用 Wifi 的 方式连接 到 Internet 6. 二进制 数 00100100 和 00010100 的 和是 ( ) 。 A. 00101000 B. 01000001 C. 01000100 D. 00111000 7.
4、与二进 制小 数 0.1 相 等的 十六进 制数 是( ) A. 0.8 B. 0.4 C. 0.2 D. 0.1 8. 所谓的 “中 断” 是指 ( ) 。 A. 操作 系 统随 意停 止一 个 程 序的运 行 B. 当出 现 需要 时,CPU 暂 时 停止当 前 程 序的 执 行 转而 执行 处 理新 情况 的 过 程 C. 因停 机 而停 止一 个程 序 的 运行 D. 电脑 死 机 9. 计算机 病毐 是( ) 。 A. 通过 计 算机 传播 的危 害 人 体健康 的 一 种 病 毒 B. 人为 制 造的 能够 侵入 计 算 机系统 并 给 计算 机 带 来故 障的 程 序或 指令 集
5、合 C. 一种 由 于计 算机 元器 件 老 化而产 生 的 对生 态 环 境有 害的 物 质 D. 利用 计 算机 的海 量高 速 运 算能力 而 研 制出 来 的 用于 疾病 预 防的 新型 病 毒 10. FTP 可 以 用 于( ) 。 A. 远程 传输 文件 B. 发送 电子 邮件 C. 浏览 网页 D. 网上 聊天 11. 下面哪 种软 件不 属 于 即时 通信 软 件( ) 。 A. QQ B. MSN C. 微信 D. P2P 12. 6 个顶 点 的 连通 图 的 最小 生成树 ,其 边数 为( )。 A. 6 B. 5 C. 7 D. 4 13. 链表不 具备 的特 点 是
6、 ( ) 。 A. 可随 机 访问 任何 一个 元素 B. 插入、 删除 操作 不需 要 移 动元素 C. 无需 事 先估 计存 储空 间 大 小D. 所需存 储空 间与 存储 元 素 个数成 正比1 / 6 14. 线性表 若采 用链 表 存 储结 构, 要 求内 存 中 可用 存储 单元 地 址( ) A. 必须 连续 B. 部分 地址 必须 连续 C. 一 定不 连续 D. 连续 不连 续均 可 15. 今有一空 栈 S , 对下 列 待 进栈的 数 据 元素序 列 a,b,c,d,e,f 依 次 进 行进 栈 , 进栈, 出栈 ,进 栈, 进 栈, 出 栈的 操 作 ,则 此操 作完
7、成 后, 栈 S 的栈 顶元 素 为( )。 A. f B. c C. a D. b 16. 前序遍 历序 列与 中 序 遍历 序列 相 同的 二 叉 树为 ( )。 A. 根结 点 无左 子树 的二 叉树 B. 根结 点 无右 子树 的二 叉树 C. 只有 根 结点 的二 叉树 或 非 叶子结 点 只 有左 子 树 的二 叉树 D. 只有 根 结点 的二 叉树 或 非 叶子结 点 只 有右 子 树 的二 叉树 17. 如果根 的高度为 1 , 具有 61 个结 点的 完全 二 叉 树的 高度 为 ( )。 A. 5 B. 6 C. 7 D. 8 18. 下列选 项中 不属 于 视 频文 件格
8、 式 的是 ( )。 A. TXT B. AVI C. MOV D. RMVB 19. 设某算 法的 计算 时 间 表示 为递 推 关系 式 T(n)=T(n-1)+n(n 为 正 整数 )及 T(0) = 1 , 则 该 算法 的时 间复 杂 度为 ( )。 A. O(logn) B. O(n log n) C. O(n) D. O(n 2 ) 20. 在 NOI 系 列赛 事 中 参赛选手必 须 使用 由 承 办单 位统 一提 供 的设 备 。 下列 物 品 中不允 许选 手 自带 的 是 ( )。 A. 鼠标 B. 笔 C. 身份 证 D. 准考 证 二、问 题求解 (共 2 题 ,每题
9、 5 分,共计 10 分;每题全部答对得 5 分 ,没有部分 分 ) 1. 重新 排 列 1234 使得 每一个 数字都 不在 原来 的位 置 上 ,一 共 有 种 排法。 2. 棵结 点数 为 2015 的二叉 树最多 有 个叶子 结点 。 三、阅 读程序 写结果(共 4 题,每 题 8 分,共计 32 分) 1. #include using namespace std; int main() int a,b,c; a=1; b=2; c=3; if (a c) if(ac) cout a “ “; else cout b “ “; cout c endl; return 0; 输出:2
10、/ 6 2. #include using namespace std; struct point int x; int y; ; int main() struct EX inta; 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 #include using namespace std; int main() string str; int i; int count; count = 0; getline(cin,str); for (i = 0; i = a cout “It has
11、“ count “ lowercases“ endl; return 0; 输入:NOI2016 will be held in Mian Yang. 输出: 3 / 6 4. #include using namespace std; void fun(char *a, char *b) a = b; (*a)+; int main() char cl, c2, *p1, *p2; cl = A; c2 = a; p1 = p2 = fun(p1, p2); cout using namespace std; const int dayNum= -l, 31, 28, 31, 30, 31,
12、 30, 31, 31, 30, 31, 30, 31; int mj offset, i; int main() cin m; cout “ StMtTtWtTtFtS “ endl; / t 为 TAB 制表符 (1) ; for (i = 1; i m; i+) offset = (2) ; for (i = 0; i offset; i+) cout t; for (i = 1; i = (3) ;i+) cout using namespace std; const int MAXN = 1000; int n, i, lbound, rbound, mid, m, count; i
13、nt xMAXN; int main() cin n m; for (i = 0; i xi; lbound=0; rbound=m; while ( (1) ) mid = (lbound + rbound )/2; (2) ; for (i = 0; i n / 2) lbound = mid + 1; else (5) ; cout rbound endl; return 0; 5 / 6 NOIP2015 初赛普及组 参考答案 C for (b = 1; b using namespace std; int main() int k = 4, n = 0; while (n 。 如果
14、L 中存在 x (1 x . x , 则称 L 是单峰的, 并称 x 是 L 的 1 2 i-1 i i+1 n i CCF NOIP2016 初赛普及组 C+ 语言试题 第 2 页,共 9 页 “峰顶”。现在已知 L 是单峰的,请把 a-c 三行代码补全到算法中使得算法 正确找到 L 的峰顶 。 a. Search(k+1, n) b. Search(1, k-1) c. return Lk Search(1, n) 1. kn/2 2. if Lk Lk-1 and Lk Lk+1 3. then _ 4. else if Lk Lk-1 and Lk Lk+1 5. then _ 6.
15、else _ 正确的填空顺序是( )。 15. 设简单无向图 有 条边且每个顶点的 度数都是 , 则图 有 ( 点。 )个顶 16. 有 7 个一模一样的苹果 ,放到 3 个一样的盘子中 ,一共有( )种放法。 17. 下图表 示一个 果园 灌溉系 统 ,有 A 、B 、C 、D 四个阀门 ,每 个阀 门可以 打开 或关上 ,所有 管道 粗细 相同, 以下设 置阀 门的 方法中 ,可以 让果 树浇 上水的 有水 有水 果树 是( )。 打开,其他都关上 打开,其他都关 上 都打开, 都 关上 打开,其他都关 上 CCF NOIP2016 初赛普及组 C+ 语言试题 第 3 页,共 9 页 18
16、. Lucia 和她的朋友 以及朋友的朋友都在某社交网站上注册了账号 。下图是他 们之间 的关系 图, 两个 人之间 有边相 连代 表这 两个人 是朋友 ,没 有边 相连代 表不是朋友。这个社交网站的规则是 : 如果某人 A 向他(她) 的朋友 B 分 享了某张照片 , 那么 B 就 可 以 对 该 照 片 进 行 评 论 ; 如果 B 评 论 了 该 照 片 , 那 么他( 她)的 所有 朋友 都可以 看见这 个评 论以 及被评 论的照 片, 但是 不能对 该照片进行评论 (除非 A 也向他 (她 ) 分享 了 该照片 )。现在 Lucia 已经上 传了一张照片, 但是她不想让 Jacob
17、看见这张照片 ,那么她可以向以下朋友 ( )分享该照片。 19. 周末小 明和爸 爸妈 妈三个 人一起 想动 手做 三道菜 。小明 负责 洗菜 、爸爸 负责 切菜、妈妈负责炒菜 。假设做每道菜的顺序都是 :先洗菜 分钟 ,然后切 菜 分钟,最后炒菜 分钟。那么做一道 菜需要 分钟。注意 :两道不 同的菜 的相同 步骤 不可 以同时 进行。 例如 第一 道菜和 第二道 的菜 不能 同时洗 , 也不能同时切。 那么做完三道菜的最短时间需要 ( )分钟。 20. 参加 比赛, 以下不能带入考场的是 ( 钢笔 适量的衣服 盘 )。 铅笔 二 、问 题求 解 (共 2 题 ,每题 5 分,共计 10 分
18、;第 一题 全部答 对得 5 分,没有 部分分 ; 第 二题第 一空 2 分,第 二空 3 分 ) 1. 从一个 的棋 盘 (不可旋转 )中选取不在同一行也不在同一列上的两个 方格,共有_ 种方法。 CCF NOIP2016 初赛普及组 C+ 语言试题 第 4 页,共 9 页 2. 约定二叉树的根节点高度为 1。一棵结点 数为 2016 的二叉树最 少有 _ 个叶子结点 ;一棵结点数为 2016 的二叉树最小的高 度值是 _ 。 三 、阅 读程 序写结 果 ( 共 4 题 ,每题 8 分,共计 32 分) 1. #include using namespace std; int main()
19、int max, min, sum, count = 0; int tmp; cin tmp; if (tmp = 0) return 0; max = min = sum = tmp; count+; while (tmp != 0) cin tmp; if (tmp != 0) sum += tmp; count+; if (tmp max) max = tmp; if (tmp using namespace std; int main() CCF NOIP2016 初赛普及组 C+ 语言试题 第 5 页,共 9 页 int i = 100, x = 0, y = 0; while (i
20、 0) i-; x = i % 8; if (x = 1) y+; cout using namespace std; int main() int a6 = 1, 2, 3, 4, 5, 6; int pi = 0; int pj = 5; int t , i; while (pi using namespace std; int main() int i, length1, length2; string s1, s2; s1 = “I have a dream.“; CCF NOIP2016 初赛普及组 C+ 语言试题 第 6 页,共 9 页 s2 = “I Have A Dream.“
21、; length1 = s1.size(); length2 = s2.size(); for (i = 0; i = a int readint() int num = 0; / 存储读取到的整数 int negative = 0; / 负数标识 char c; / 存储当前读取到的字符 c = cin.get(); while (c 9) CCF NOIP2016 初赛普及组 C+ 语言试题 第 7 页,共 9 页 if (c = -) negative = 1; else (2) c = cin.get(); while ( (3) (4) c = cin.get(); ; ) ; if
22、 (negative = 1) (5) ; return num; int main() int a, b; a = readint(); b = readint(); cout using namespace std; #define MAXN 1000000 int n, B, A, MMAXN, CMAXN, l, r, ans, mid; bool check(int nn) int count = 0, i, j; i = (1) ; j = 1; while (i = n) if ( (2) ) CCF NOIP2016 初赛普及组 C+ 语言试题 第 8 页,共 9 页 coun
23、t += Cj - Mi; i+; j+; return (3) ; void sort(int a, int l, int r) int i = l, j = r, x = a(l + r) / 2, y; while (i x) j-; if (i n B A; for (i = 1; i Mi; for (i = 1; i Ci; sort(M, 1, n); sort(C, 1, B); l = 0; r = n; while (l = r) mid = (l + r) / 2; if ( ) ans = mid; l = mid + 1; else r = (4) (5) ; cout ans endl; return 0; CCF NOIP2016 初赛普及组 C+ 语言试题 第 9 页,共 9 页