Advertisement

2015第二十二届全国青少年信息学奥林匹克联赛初赛

阅读量:

第二十一届全国青少年信息学奥林匹克联赛初赛
普及组 C++语言试题
竞赛时间: 2015 年 10 月 11 日 14:30-16:30
一、单项选择题(共 20 题)
包括以下题目及正确答案:
题号 1 答案 D
题号 2 答案 C
题号 3 答案 C
题号 4 答案 A
题号 5 答案 A
题号 6 答案 D
题号 7 答案 A
题号 8 答案 B
题号 9 答案 B
题号 10 答案 A
二、问题求解(共两题)
第一题:重新排列数字使得每个数字不在原来的位置上有9种排法。
第二题:一棵结点数为2015的二叉树最多有1008个叶子结点。
三、阅读程序写结果(共四小题)
第一题输出3;第二题输出3,2;第三题输出"It has 18 lowercases";第四题输出Ab。
四、完善程序(共两小问)

第二十一届全国青少年信息学奥林匹克联赛初赛

普及组 C++语言试题

竞赛时间: 2015 年 10 月 11 日 14:30-16:30

一、单项选择题(共 20 题,每题 1.5 分,共计 30分;每题有且仅有一个正确选项) ⒈ 1MB 等于( )。

A.10000 字节 B.1024 字节 C.1000×1000 字节 D.1024×1024 字节

⒉在 PC 机中, PENTIUM(奔腾)、酷睿、赛扬等 是指( )。

A.生产厂家名称 B.硬盘的型号 C.CPU 的型号 D.显示器的型号

⒊操作系统的作用是( )。

将源代码转换为目标代码

A.二进制码 B.八进制码 C.十进制码 D.智能拼音码

⒌下列说法正确的是( )。

A.CPU 的主要任务是执行数据运算和程序控制

B.存储器具有记忆能力,其中信息任何时候都不会丢失

C.两个显示器屏幕尺寸相同,则它们的分辨率必定相同

D.个人用户只能使用Wifi 的方式连接到 Internet

⒍二进制数 00100100 和 00010100 的和是( )。

A.00101000 B.01100111 C.01000100 D.00111000

⒎与二进制小数 0.1 相等的十六进制数是( )。

A.0.8 B.0.4 C.0.2 D.0.1

⒏所谓的“中断”是指( )。

A.操作系统随意停止一个程序的运行

在遇到需求时, CPU 在处理现有任务时暂停运行, 并开始处理新的状况

C.因停机而停止一个程序的运行 D.电脑死机

⒐计算机病毒是( )。

A.通过计算机传播的危害人体健康的一种病毒

B. 故意生成具备入侵能力的行为序列,在能够能够在计算机系统内运行并引发故障

C.一种由于计算机元器件老化而产生的对生态环境有害的物质

D. 基于计算机的强大运算能力开发出一种用于疾病预防的新病毒

⒑ FTP 可以用于( )。

A.远程传输文件 B.发送电子邮件 C.浏览网页 D.网上聊天

⒒下面哪种软件不属于即时通信软件( )。

A.QQ B.MSN C.微信 D.P2P

⒓ 6 个顶点的连通图的最小生成树,其边数为( )。

A.6 B.5 C.7 D.4

⒔链表不具备的特点是( )。

A.可随机访问任何一个元素 B.插入、 删除操作不需要移动元素

C.无需事物估计存储空间大小 D.所需存储空间与存储元素个数成正比

⒕线性表若采用链表存储结构,要求内存中可用存储单元地址( )。

A.必须连续 B.部分地址必须连续 C.一定不连续 D.连续不连续均可

现有一个空栈S按照顺序依次对数据元素a,b,c,d,e,f执行入栈操作

A.f B.c C.a D.b

⒗前序遍历序列与中序遍历序列相同的二叉树为( )。

A.根结点无左子树 B.根结点无右子树

C.只有根结点的二叉树或非叶子结点只有左子树的二叉树

D.只有根结点的二叉树或非叶子结点只有右子树的二叉树

⒘如果根的高度为 1,具有 61 个结点的完全二叉树的高度为( )。

A.5 B.6 C.7 D.8

⒙下列选项中不属于视频文件格式的是( )。

A.TXT B.AVI C.MOV D.RMVB

假设某个算法的计算时间由递推关系式T(n) = T(n-1) + n(其中n为正整数)以及T(0) = 1给出,则该算法的时间复杂度是()。

A.O (logn) B.O (nlogn) C.O (n) D.O (n2)

在NOI系列赛事中参赛者必须由主办方统一提供的设备。请选出以下物品中哪些是选手不得自带的()。

A.鼠标 B.笔 C.身份证 D.准考证

二、问题求解(共 2 题,每题 5 分,共计 10 分;每题全部答对得5分)
⒈请重新排列为1234的一种形式,并满足每个数字都不在原位上的要求。共有 __ 种不同的排法能够达到这一目标。
⒉一棵拥有2015个结点的二叉树最多能够拥有 __ 个叶子结点。

三、阅读程序写结果(共 4 题,每题 8 分,共计 32分)

#include

using namespace std;

int main()

第 2 页 , 共 7 页

{ int a, a = 1;

b = 2; c = 3; if(a > if(a

b, c;

b)

c)

cout << a << ' ';

else

cout << b << ' ';

cout << c << endl;

return 0;

}

输出: __

#include

using namespace std;

struct point

{

int x;

int y;

};

int main()

{

int a, b, c;

struct EX

{

int a;

int b;

point c;

}e;

第 3 页 , 共 7 页

e.a = 1;

e.b = 2;

e.c.x = e.a + e.b;

e.c.y = e.a * e.b;

cout << e.c.x << ',' << e.c.y << endl;

return 0;

}

输出: __

#include

#include

using namespace std;

int main()

{

string str;

int i;

int count; count = 0; getline(cin, for(i = 0; i str); < str.length();

if(str[i] >= 'a' && str[i]

i++)

<= 'z')

count++;

cout << "It has " << count << " lowercases" << endl;

return 0;

}

输入: NOI2016 will be held in Mian Yang.

输出:

#include

#include

第 4 页 , 共 7 页

using namespace std;

void fun(char *a, char *b)

{

a = b;

(*a)++;

}

int main()

{

char c1, c2, *p1, *p2;

c1 = 'A';

c2 = 'a';

p1 = &c1;

p2 = &c2;

fun(p1, p2);

cout << c1 << c2 << endl;

return 0;

}

输出: __

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

输出月份日历

例如,2015 年 1 月的月历打印效果如下(第一列为周日):

S M T W

4 5 6 7

11 12 13 14

18 19 20 21

T 1 8 15

22

F 2 9 16

23

S

3

10

17

24

25 26 27 28 29 30 31

#include

#include

using namespace std;

const int dayNum[] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int m, offset, i;

int main()

{

cin >> m;

cout << "S\tM\tT\tW\tT\tF\tS" << endl; //'\t'为 TAB 制表符

__ ;

for(i = 1; i < m; i++)

offset =__ __ ;

for(i = 0; i < offset; i++)

cout << '\t';

for(i = 1; i <=__ __ ; i++)

{

cout <<__ __ ;

if(i == dayNum[m] ||__ __ == 0)

cout << endl;

else

cout << '\t';

}

return 0;

}

⒉ (中位数 median)给定 n(n 为奇数且小于 1000)个整数, 整数的范围在 0~m(0<m<2^31)之间, 请使

改写说明

#include

using namespace std;

const int MAXN = 1000;

int n, i, lbound, rbound, mid, m, count;

int x[MAXN];

第 6 页 , 共 7 页

int main()

{

cin >> n >> m;

for(i = 0; i < n; i++)

cin >> x[i];

lbound = 0;

rbound = m;

while(__ __)

{

mid = (lbound + rbound) / 2;

__ ;

for(i = 0; i < n; i++)

if(__ __)

__ ;

if(count > n / 2)

lbound = mid + 1;

else

__ ;

cout << mid << " " << lbound << " " << rbound << " " << count << endl; }

cout << rbound << endl;

return 0;

}

第21届国家级少儿计算机学科奥林匹克联赛初赛 C++语言试题参考答案

一、单项选择题(共 20题,每题1.5 分,共计 30分;每题有且仅有一个正确选项)

⒈ D ⒉C ⒊C ⒋A ⒌A ⒍D ⒎A ⒏B ⒐B ⒑A ⒒D ⒓B ⒔A ⒕D ⒖B ⒗D ⒘B ⒙A

⒚D ⒛A

二、问题求解(共 2题,每题 5分,共计 10分;每题全部答对得 5 分,没有部分分) ⒈ 9 ⒉1008

三、阅读程序写结果(共 4题,每题8分,共计 32分)

⒈ 3 ⒉3,2 ⒊It has 18 lowercases ⒋Ab

四、完善程序(共 2题,每题 14分,共计 28 分) ⒈(第三、四空 2.5 分,其余 3 分)

⑴ offset = 4 ⑵(offset + dayNum[i]) % 7

⒉(第五空 2 分,其余 3 分)

⑴ lbound <= rbound) ⑵count = 0 ⑶x[i]

⑶dayNum[m] ⑷i ⑸(offset + i) % 7

= mid) ⑷count++ ⑸rbound = mid - 1

全部评论 (0)

还没有任何评论哟~