NOIP 2018 普及组初赛试题及解析

本文是2018年NOIP普及组初赛的试题解析,涵盖了单项选择题、问题求解、阅读程序写结果和完善的程序等内容。题目涉及计算机科学基础知识,包括输出设备、数据转换、存储单位、网络术语、算法等,同时也包含逻辑推理和编程题目,如排序算法、递归和广义表相关问题。

一. 单项选择题 (共15题,每题2分,共计30分。每题有且仅有一个正确答案.)。

1、以下哪一种设备属于输出设备( )

A. 扫描仪	
B. 键盘	
C. 鼠标	
D. 打印机

正确答案:D
输出设备是用于显示或输出信息的设备。
A选项: 这是一个输入设备,用于将纸质文档或图片转换为数字格式。
B选项: 这也是一个输入设备,用于输入文本或命令。
C选项: 同样是一个输入设备,用于选择、移动和点击屏幕上的对象。
D选项: 这是一个输出设备,用于将数字信息(如文档、图片等)转换为纸质格式。

2、下列四个不同进制的数中,与其它三项数值上不相等的是( )

A.(269
### NOIP2018 普及组初赛试题解析 以下为 NOIP2018 普及组初赛的部分试题及答案解析,供参考学习: #### 一、单项选择题(部分题目) 1. **下列四个不同进制的数中,与其它三项数值上不相等的是( )** A. (269)₁₆ B. (617)₁₀ C. (1151)₈ D. (1001101011)₂ **答案:D** **解析:** 需要将各个选项转换为十进制进行比较。 - A. (269)₁₆ = 2×16² + 6×16¹ + 9 = 617 - B. (617)₁₀ = 617 - C. (1151)₈ = 1×8³ + 1×8² + 5×8¹ + 1 = 617 - D. (1001101011)₂ = 1×2⁹ + 0×2⁸ + 0×2⁷ + 1×2⁶ + 1×2⁵ + 0×2⁴ + 1×2³ + 0×2² + 1×2¹ + 1 = 619 因此选项 D 的数值与其他不同[^1]。 2. **下列属于解释执行的程序设计语言是( )** A. C B. C++ C. Pascal D. Python **答案:D** **解析:** 解释执行的语言不需要编译成机器码,而是逐行解释运行。Python 是典型的解释型语言,而 C、C++、Pascal 都需要编译后运行。 3. **中国计算机学会于( )年创办全国青少年计算机程序设计竞赛** A. 1983 B. 1984 C. 1985 D. 1986 **答案:B** **解析:** 全国青少年计算机程序设计竞赛(NOI)由中国计算机学会(CCF)于 1984 年创办,旨在培养青少年的编程能力和算法思维。 4. **设根节点深度为 0,一棵深度为 h 的满 k(k>1)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有 k 个子结点的树,共有( )个结点** A. $\frac{k^{h+1} - 1}{k - 1}$ B. $\frac{k^h - 1}{k - 1}$ C. $k^{h+1} - 1$ D. $k^h$ **答案:A** **解析:** 满 k 叉树的节点总数可以通过等比数列求和公式推导得出。每一层的节点数分别为 $1, k, k^2, \dots, k^h$,总节点数为等比数列前 $h+1$ 项的和,即 $\frac{k^{h+1} - 1}{k - 1}$ [^2]。 #### 二、问题求解 1. **某学校有 30 名学生参加编程比赛,每名学生最多参加 3 个比赛项目,最少参加 1 个比赛项目。如果每个比赛项目恰好有 6 名学生参加,那么这 30 名学生至少参加了多少个比赛项目?** **答案:15** **解析:** 设比赛项目总数为 $x$,每个项目有 6 人参加,则总参与次数为 $6x$。每个学生至少参加 1 个项目,最多参加 3 个项目,因此总参与次数在 30 到 90 之间。要使 $x$ 最小,应使每个学生只参加 1 个项目,因此 $6x = 30$,解得 $x = 5$。但若每个学生都参加 2 个项目,则 $6x = 60$,解得 $x = 10$;若每个学生都参加 3 个项目,则 $6x = 90$,解得 $x = 15$。因此,最少的比赛项目数为 15。 #### 三、阅读程序写结果 1. **阅读以下 Python 程序,写出输出结果** ```python def f(n): if n == 0: return 0 elif n == 1: return 1 else: return f(n-1) + f(n-2) print(f(6)) ``` **输出结果:8** **解析:** 该函数实现的是斐波那契数列,$f(6) = f(5) + f(4) = 5 + 3 = 8$[^1]。 #### 四、完善程序 1. **补全以下 Python 程序,使其输出所有三位数中的“水仙花数”** ```python for i in range(100, 1000): a = i // 100 b = (i // 10) % 10 c = i % 10 if a**3 + b**3 + c**3 == i: print(i) ``` **解析:** 水仙花数是指各位数字立方和等于该数本身的三位数。程序通过遍历 100 到 999 的所有数,分别提取百位、十位、个位,计算立方和是否等于原数,若成立则输出该数[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青岛少儿编程-王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值