【NOIP2015普】初赛试卷分享

不要一分钱嘞!

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

普及组C++语言试题

竞赛时间:2015101114:30-16:30

 

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

1.1MB等于(  )。

A.10000字节       B.1024字节 -

C.1000×1000字节        D.1024×1024字节

 

  1. 在PC机中,PENTIUM(奔腾)、酷睿、赛扬等 是指( )。
  2. A.生产厂家名称 B.硬盘型号 C.CPU的型号      D.显示器的型号。

 

  1. 操作系统的作用是( )。

A.把源程序译成目标程序        B.便于进行数据管理

C.控制和管理系统资源        D.实现硬件之间的连接

 

  1. 在计算机内部用来传送、存贮、加工处理的数据或指令都是以( )。

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

 

  1. 下列说法正确的是( )。

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

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

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

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

 

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

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

 

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

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

 

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

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

B.当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过程

C.因停机而停止一个程序的运行

D.电脑死机

 

  1. 计算机病毒是( )。

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

B.人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合

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

D.利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒

 

  1. FTP可以用于( )。

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

 

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

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

 

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

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

 

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

A.可随机访问任何一个元素

B.插入、删除操作不需要移动元素

C.无需事物估计存储空间大小

D.所需存储空间与存储元素个数成正比

 

  1. 线性表若采用链表存储结构,要求内存中可用存储单元地址( )。
  2. 必须连续 B.部分地址必须连续  C.一定不连续     D.连续不连续均可

 

  1. 今有一空栈S,对下列待进栈的数据元素序列a,b,c,d,e,f依次进行进栈,进栈,出栈,进栈, 进栈,出栈的操作,则此操作完成后,栈S的栈顶元素为
  2. f B. c       C. a       D. b

 

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

A.根结点无左子树

B.根结点无右子树

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

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

 

  1. 如果根的高度为1,具有61个结点的完全二叉树的高度为( )。
  2. 5 B. 6       C. 7       D. 8

 

  1. 下列选项中不属于视频文件格式的是( )。
  2. TXT B. AVI C. MOV      D. RMVB

 

  1. 设某算法的计算时间表示为递推关系式T(n) = T(n-1) + n (为正整数) 及T(0)=1,则该算法的时间复杂度为( )。
  2. O(logn) B. O(nlogn)     C. O(n)     D. O(n2)

 

  1. 在NOI系列赛事中参赛选手必须使用累承办单位统一提供的设备。下列物品中不允许选手自带的是( )。
  2. 鼠标 B. 笔     C. 身份证     D. 准考证

 

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

  1. 重新排列1234使得每一个数字都不在原来的位置上,一共有   种排法。

 

  1. 一棵结点数为2015的二叉树最多有 个叶子结点。

 

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

1.

#include

using namespace std;

int main()

{

int a, b, c;

a = 1;

b = 2;

c = 3;

if(a > b)

if(a > 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;

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, str);

for(i = 0; i < str.length(); i++)

if(str[i] >= 'a' && str[i] <= 'z') count++;

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

return 0;

}

输入:NOI2016 will be held in Mian Yang.

输出:                                                                    .

 

4.

#include

#include

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)

  1. (打印月历)输入月份m(1≤m≤12),按一定格式打印2015年第m月的月历。(第三、四空2.5分, 其余3分)

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

S       M     T       W     T       F       S

1       2       3

4       5       6       7       8       9       10

11     12     13     14     15     16     17

18     19     20     21     22     23     24

25     26     27     28     29     30     31

 

#include

#include

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制表符 ;

        (1)       

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

offset =        (2)        ;

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

cout << '\t';

for(i = 1;        (3)        ; i++)

{

cout <<        (4)        ; ;

if(i == dayNum[m] ||         (5)       )  cout <<endl;

else  cout << '\t';

}

return 0;

}

 

  1. (中位数median) 给定n (n为奇数且小于1000) 个整数,整数的范围在0~m (0<m<2^31) 之间,请使用二分法求这n个整数的中位数。所谓中位数,是指将这n个数排序之后,排在正中间的数。(第五空2 分,其余3分)

 

#include

using namespace std;

const int MAXN = 1000;

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

int x[MAXN];

int main()

{

cin >>n >> m;

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

cin >> x[i];

lbound = 0;

rbound = m;

while(         (1)          )

{

mid = (lbound + rbound) / 2;

        (2)        ;

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

if(        (3)       )               (4)         ;

if(count >n / 2) lbound = mid + 1;

else           (5)       ;

}

cout <<rbound <<endl;

return 0;

}

 

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注