范文范例 指导参考
NOIP2016第二十二届全国青少年信息学奥林匹克联赛 赛初
普及组 C++语言题试
竞赛时间: 2016 年 10 月 22 日 14:30 ~16:30
一、单项选择题(共
20 题,每题 1.5 分,共计 30 分;每题有且仅有一个正确选项)
( ) 。
.Word C.Excel D. Acrobat Reader
1.以下不是微软公司出品的软件是 A . Powerpoint B
2.如果 256 种颜色用二进制编码来表示,至少需要 ( ) 位。 A . 6 B .7 C .8 D .9 3.以下不属于无线通信技术的是
( ) 。
A .蓝牙B .WiFi C .GPRS D .以太网 4.以下不是 CPU生产厂商的是 ( ) 。 A.Intel B.AMD C.Microsoft D.IBM 5.以下不是存储设备的是 A .光盘
B .磁盘
( ) 。 C .固态硬盘
D .鼠标
字母键A、字母键S
81 个
6.如果开始时计算机处于小写输入状态,现在有一只小老鼠反CapsLock、 照按复字符是字母 ( ) 。
A . A B .S C .D D .a
7.二进制数 00101100 和 00010101 的和是 ( ) 。 A.00101000 B.01000001 C.01000100 D.00111000 8.与二进制小数 A . 0.8 B
0.1 相等的八进制数是 ( ) 。
.0.2 D
.0.1
.0.4 C
和字母键D的顺序循环按键,即CapsLock、A、 S、D、CapsLock、A、S、D、? ? ,屏幕上输出的第
9.以下是 32 位机器和 64 位机器的区别的是 ( ) 。 A.显示器不同B .硬盘大小不同 C.寻址空间不同D .输入法不同
10.以下关于字符串的判定语句中正确的是 A.字符串是一种特殊的线性表 C.字符串不可以用数组来表示 叉树中的结点(根结点的下标为 A.6 B s=a;
for (b=1;b<=c;b++) s=s+1;
则与上述程序段修改s 值的功能等价的赋值语句是 A. s=a+b; B. s=a+c; C. s=s+c; D. s=b+c; 13.有以下程序: #include 学习资料整理 ( ) B .串的长度必须大于零 D .空格字符组成的串就是空串 维数组元素存储该二 i ,则其左孩子位于下标2i ( ) 。 a、c 均己赋值( c 大于 0)。 1,若某结点的下标为 11.一棵二叉树如右图所示,若采用顺序存储结构,即用一 处、右孩子位于下标(2i+1) 处),则图中所有结点的最大下标为 . 10 C .12 D .15 12.若有如下程序段,其中 s、a、b、c 均己定义为整型变量,且 ( ) 。 范文范例 指导参考 conntinue; k--; ) cout< 程序运行后的输出结果是 ( ) 。 A .2,2 B .2,3 C .3,2 D .3,3 , Xn>。如 果 L 中 存 在 xi(1 使 得 14. 给 定 含 有 n 个不 同的 数 的 数组 L= 把 a-c 三行代码补全到算法中使得算法正确找到 L 的峰顶。 ,,则称 L 是单峰的,并称 xi 是 L 的“峰顶” 。现在己知 L 是单峰的,请 正确的填空顺序是 ( ) 。 A.c,a,b B. c,b,a C.a,b,c D.b,a,c 15.设简单无向图 G有 16 条边且每个顶点的度数都是 A .10 B .12 C .8 D .16 16.有 7 个一模一样的苹果,放到 17.下图表示一个果园灌溉系统,有 3 个一样的盘子中,一共有 ( ) 种放法。 A、B、C、D 四个阀门,每个阀门可以打开或关上,所有管道粗细相 ( ) 。 A .7 B .8 C .21 D .37 同,以下设置阀门的方法中,可以让果树浇上水的是 2,则图 G有( ) 个顶点。 A.B 打开,其他都关上 C.A 打开,其他都关上 B .AB都打开, CD都关上 D .D打开,其他都关上 A向他 18.Lucia 和她的朋友以及朋友的朋友都在某社交网站上注册了账号。下图是他们之间的关系图,两个人 之间有边相连代表这两个人是朋友,没有边相连代表不是朋友。这个社交网站的规则是:如果某人 (她)的朋友 B 分享了某张照片,那么 B就可以对该照片进行评论;如果 的所有朋友都可以看见这个评论以及被评论的照片,但是不能对该照片进行评论(除非 享了该照片) 。现在 Lucia 已经上传了一张照片,但是她不想让 朋友( ) 分享该照片。 B 评论了该照片,那么他(她) A也向他(她)分 Jacob 看见这张照片,那么她可以向以下 学习资料整理 范文范例 指导参考 A.Dana, Michael, Eve B.Dana, Eve, Monica C.Michael, Eve, Jacob D.Micheal, Peter, Monica 19.周末小明和爸爸妈妈三个人一起想动手做三道菜。小明负责洗菜、爸爸负责切菜、妈妈负责炒菜。假 设做每道菜的顺序都是:先洗菜 10 分钟,然后切菜 10 分钟,最后炒菜 10 分钟。那么做一道菜需要 ( ) 分钟。 ( ) 。 5 分,没有部分分;第二题第一空 2 30 分 钟。注意:两道不同的菜的相同步骤不可以同时进行。例如第一道菜和第二道的菜不能同时洗,也不能同 时切。那么做完三道菜的最短时间需要 A .90 B .60 C .50 D .40 20.参加 NOI比赛,以下不能带入考场的是 A.钢笔 B .适量的衣服 C .U盘 D .铅笔 二、问题求解(共 2 题,每题 5 分,共计 10 分;第一题全部答对得 分,第二空 3 分) 1.从一个 4× 4 的棋盘(不可旋转)中选取不在同一行也不在同一列上的两个方格,共有 2.约定二叉树的根节点高度为 三、阅读程序写结果(共 1.#include 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 cout< 学习资料整理 _______种方法。 1。一棵结点数为 2016 的二叉树最少有 ________ 个叶子结点;一棵结点数 为 2016 的二叉树最小的高度值是 ___________。 4 题,每题 8 分,共计 32 分) 范文范例 指导参考 } 输入: 1 2 3 4 5 6 0 7 2.#include int i=100,x=0,y=0; while (i>0) { i--; x=i%8; if (x==1) y++; } cout< 3. #include int a[6]={1,2,3,4,5,6}; int pi=0; int pj=5; int t,i; while (pi { t=a[pi]; a[pi]=a[pj]; a[pj]=t; pi++; pj--; } for (i=0;i<6;i++) cout< 4. #include int i,length1, length2; string s1,s2; s1=\ 学习资料整理 输出: 范文范例 指导参考 s2=\length1=s1.size(); length2=s2.size(); for (i=0;i if (s1==s2) cout<<\else if (s1>s2) cout <<\else cout<<\return 0; } 输出: _________ 四、完善程序( 共 2 题,每题 14 分,共计 28 分) 1. (读入整数)请完善下面的程序,使得程序能够读入两个 int 范围内的整数,并将这两个整数分别输出,每行一个。 (第一、五空 2.5 分,其余 3 分) 输入的整数之间和前后只会出现空格或者回车。 输入数据保证合法。 例如: 输入: 123 -789 输出: 123 -789 #include int num = 0; // 存储读取到的整数 int negative = 0; // 负数标识 char c; // 存储当前读取到的字符 c = cin.get(); while ((c < '0' || c > '9') && c != '-') c = (1) ; if (c == '-') negative = 1; else (2) ; c=cin.get(); while ( (3) ) { (4) ; c=cin.get(); } if (negative == 1) (5) ; return num; } int main() { 学习资料整理 范文范例 指导参考 int a, b; a = readint(); b = readint(); cout< 2.( 郊游活动 ) 有 n 名同学参加学校组织的郊游活动,已知学校给这n 名同学的郊游总经费为 同时第 i 位同学自己携带了 辆自行车的价 为格 Mi 元。为了方便郊游,活动地点提供 A 元,与此 j B( ≥ n) 辆自行车供人租用,租用第 Cj 元,每位同学可以使用自己携带的钱或者学校的郊游经费,为了方便账务管理,每 位同学只能为自己租用自行车,且不会借钱给他人,他们想知道最多有多少位同学能够租用到自行车。 ( 第四、五空 2.5 分,其余 3 分) 本题采用二分法。对于区间[l, r] , 我们取中间点 的过程是利用贪心算法实现的。 #include int n, B, A, M[MAXN], C[MAXN], l, r, ans, mid; bool check(int nn) { int count = 0, i, j; i = (1) ; j = 1; while (i <= n) { if ( (2) ) count += C[j] - M[i]; 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 <= j) { while (a[i] < x) i++; while (a[j] > x) j--; if (i <= j) { y = a[i]; a[i] = a[j]; a[j] = y; i++; j--; } } if (i < r) sort(a, i, r); if (l < j) sort(a, l, j); 学习资料整理 mid 并判断租用到自行车的人数能否达到 mid 。判断 范文范例 指导参考 } int main() { int i; cin >> n >> B >> A; for (i = 1; i <= n; i++) cin >> M[i]; for (i = 1; i <= B; i++) cin >> C[i]; sort(M, 1, n); sort(C, 1, B); l = 0; r = n; while (l <= r) { mid = (l + r) / 2; if ( (4) ) { ans = mid; l = mid + 1; } else r = (5) ; } cout << ans << endl; return 0; } 学习资料整理 范文范例 指导参考 第二十二届全国青少年信息学奥林匹克联赛初赛 普及组参考答案 一.选择题 DCDCD CBBCA DBDAD BAACC 二.问题求解 1. 72 2. 1(2 分) 11 (3分) 三.阅读程序写结果 1. 6,1,3 2. 13 3. 6,5,4,3,2,1, 4. = 四.完善程序 1. (1)cin.get() (2)num=c- ‘0’ 或 num=c-48 (3)c>= ’0’&&c<=’9’ 或 c>=48&&c<=57 (4) num=num*10+c-'0' (5) num=-num 2. (1) n-nn+1 (2) M[i] 或 M[i]<=C[j] 或 num=num*10+c-48 或 return-num 学习资料整理