《noip2018普及组c++试题》由会员分享,可在线阅读,更多相关《noip2018普及组c++试题(7页珍藏版)》请在金锄头文库上搜索。
1、 CCF NOIP2018 初赛普及组 C+语言试题 第 1 页,共 7 页 第二十四届全国青少年信息学奥林匹克联赛初赛 普及组 C+语言试题 竞赛时间:2018 年 10 月 13 日 14:3016:30 选手选手注意:注意: 试题纸共有 7 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写在 试题纸上的一律无效。 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资 料。 一、 单项选择题 (共一、 单项选择题 (共 15 题, 每题题, 每题 2 分, 共计分, 共计 30 分分; 每题有且仅有一个正确选项)每题有且仅有一个正确选项) 1. 以下哪一种设备属
2、于输出设备:( ) A. 扫描仪 B. 键盘 C. 鼠标 D. 打印机 2. 下列四个不同进制的数中,与其它三项数值上不相等的是( )。 A. (269)16 B. (617)10 C. (1151)8 D. (1001101011)2 3. 1MB 等于( )。 A. 1000 字节 B. 1024 字节 C. 1000 X 1000 字节 D. 1024 X 1024 字节 4. 广域网的英文缩写是( )。 A. LAN B. WAN C. MAN D. LNA 5. 中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。 A. 1983 B. 1984 C. 1985 D. 1986
3、 6. 如果开始时计算机处于小写输入状态, 现在有一只小老鼠反复按照CapsLock、 字母键 A、 字母键 S、 字母键 D、 字母键 F 的顺序循环按键, 即 CapsLock、 A、 CCF NOIP2018 初赛普及组 C+语言试题 第 2 页,共 7 页 S、D、F、CapsLock、A、S、D、F、,屏幕上输出的第 81 个字符是字母 ( )。 A. A B. S C. D D. a 7. 根节点深度为 0,一棵深度为 h 的满 k(k1)叉树,即除最后一层无任何子 节点外,每一层上的所有结点都有 k 个子结点的树,共有( )个结点。 A. (k h+1 - 1) / (k - 1
4、) B. k h-1 C. k h D. (k h-1) / (k - 1) 8. 以下排序算法中,不需要进行关键字比较操作的算法是( )。 A. 基数排序 B. 冒泡排序 C. 堆排序 D. 直接插入排序 9. 给定一个含 N 个不相同数字的数组,在最坏情况下,找出其中最大或最小的 数,至少需要 N - 1 次比较操作。则最坏情况下,在该数组中同时找最大与 最小的数至少需要( )次比较操作。 ( 表示向上取整, 表示向下取整) A. 3N / 2 - 2 B. 3N / 2 - 2 C. 2N - 2 D. 2N - 4 10. 下面的故事与( )算法有着异曲同工之妙。 从前有座山,山里有座
5、庙,庙里有个老和尚在给小和尚讲故事:“从前有座 山,山里有座庙,庙里有个老和尚在给小和尚讲故事:从前有座山,山里 有座庙,庙里有个老和尚给小和尚讲故事” A. 枚举 B. 递归 C. 贪心 D. 分治 11. 由四个没有区别的点构成的简单无向连通图的个数是( )。 A. 6 B. 7 C. 8 D. 9 12. 设含有 10 个元素的集合的全部子集数为 S, 其中由 7 个元素组成的子集数为 T,则 T / S 的值为( )。 A. 5 / 32 B. 15 / 128 C. 1 / 8 D. 21 / 128 CCF NOIP2018 初赛普及组 C+语言试题 第 3 页,共 7 页 13.
6、 10000 以内,与 10000 互质的正整数有( )个。 A. 2000 B. 4000 C. 6000 D. 8000 14. 为了统计一个非负整数的二进制形式中 1 的个数,代码如下: int CountBit(int x) int ret = 0; while (x) ret+; _; return ret; 则空格内要填入的语句是( )。 A. x = 1 B. x int main() scanf(“%s“, st); for (int i = 0; sti; +i) if (A int main() int x; scanf(“%d“, int res = 0; for (in
7、t i = 0; i using namespace std; int n, m; int findans(int n, int m) if (n = 0) return m; if (m = 0) return n % 3; return findans(n - 1, m) - findans(n, m - 1) + findans(n - 1, m - 1); int main() cin n m; cout int n, d100; bool v100; int main() scanf(“%d“, for (int i = 0; i using namespace std; const
8、 int N = 110000, P = 10007; int n; int aN, len; int ans; void getDivisor() len = 0; for (int i = 1; (1) n; getDivisor(); ans = 0; for (int i = 1; i using namespace std; const int N = 100010; int n; int LN, RN, aN; int main() cin n; for (int i = 1; i x; (1) ; for (int i = 1; i = n; +i) Ri = (2) ; Li = i - 1; for (int i = 1; i = n; +i) L (3) = Lai; RLai = R (4) ; for (int i = 1; i = n; +i) cout (5) “ “; cout endl; return 0;