全国第二十二届青少年信息学奥林匹克竞赛分区联赛初赛试题.docx
《全国第二十二届青少年信息学奥林匹克竞赛分区联赛初赛试题.docx》由会员分享,可在线阅读,更多相关《全国第二十二届青少年信息学奥林匹克竞赛分区联赛初赛试题.docx(15页珍藏版)》请在冰豆网上搜索。
全国第二十二届青少年信息学奥林匹克竞赛分区联赛初赛试题
全国第二十二届青少年信息学奥林匹克竞赛分区联赛初赛试题
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)
1.以下不是微软公司出品的软件是()。
A.Powerpoint
B.Word
C.Excel
D.AcrobatReader
查看
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.鼠标
查看
6.如果开始时计算机处于小写输入状态现在有一只小老鼠反复按照CapsLock、字母键A、字母键S和字母键D的顺序循环按键即CapsLock、A、S、D、CapsLock、A、S、D、……屏幕上输出的第81个字符是字母()。
A.A
B.S
C.D
D.a
查看
7.二进制数00101100和00010101的和是()。
A.00101000
B.01000001
C.01000100
D.00111000
查看
8.与二进制小数0.1相等的八进制数是()。
A.0.8
B.0.4
C.0.2
D.0.1
查看
9.以下是32位机器和64位机器的区别的是()。
A.显示器不同
B.硬盘大小不同
C.寻址空间不同
D.输入法不同
查看
10.以下关于字符串的判定语句中正确的是()。
A.字符串是一种特殊的线性表
B.串的长度必须大于零
C.字符串不可以用数组来表示
D.空格字符组成的串就是空串
查看
11.一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为1,若某结点的下标为i则其左孩子位于下标2i处、右孩子位于下标(2i1)处),则图中所有结点的最大下标为()。

A.6
B.10
C.12
D.15
查看
12.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。
s=a;for(b=1;b<=c;b)s=s1;则与上述程序段修改s值的功能等价的赋值语句是()。
A.s=ab;
B.s=ac;
C.s=sc;
D.s=bc;
查看
13.有以下程序#includeusingnamespacestd;intmain(){intk=4,n=0;while(n=0)continue;k--;}cout<A.2,2
B.2,3
C.3,2
D.3,3
查看
14.给定含有n个不同的数的数组L=。
如果L中存在xi(1xi1>...>xn,则称L是单峰的并称xi是L的“峰顶”。
现在已知L是单峰的请把a-c三行代码补全到算法中使得算法正确找到L的峰顶。
a.Search(k1,n)b.Search(1,k-1)c.returnL[k]Search(1,n)1.k←[n/2]2.ifL[k]>L[k-1]andL[k]>L[k1]3.then__________4.elseifL[k]>L[k-1]andL[k]A.c,a,b
B.c,b,a
C.a,b,c
D.b,a,c
查看
15.设简单无向图G有16条边且每个顶点的度数都是2,则图G有()个顶点。
A.10
B.12
C.8
D.16
查看
16.有7个一模一样的苹果,放到3个一样的盘子中,一共有()种放法。
A.7
B.8
C.21
D.3^7
查看
17.下图表示一个果园灌溉系统,有A、B、C、D四个阀门,每个阀门可以打开或关上,所有管道粗细相同,以下设置阀门的方法中可以让果树浇上水的是()。

A.B打开,其他都关上
B.AB都打开,CD都关上
C.A打开,其他都关上
D.D打开,其他都关上
查看
18.Lucia和她的朋友以及朋友的朋友都在某社交网站上注册了账号。
下图是他们之间的关系图,两个人之间有边相连代表这两个人是朋友,没有边相连代表不是朋友。
这个社交网站的规则是:
如果某人A向他(她)的朋友B分享了某张照片,那么B就可以对该照片进行评论;如果B评论了该照片,那么他(她)的所有朋友都可以看见这个评论以及被评论的照片,但是不能对该照片进行评论(除非A也向他(她)分享了该照片)。
现在Lucia已经上传了一张照片(但是她不想让Jacob看见这张照片,那么她可以向以下朋友()分享该照片。

A.Dana,Michael,Eve
B.Dana,Eve,Monica
C.Michael,Eve,Jacob
D.Micheal,Peter,Monica
查看
19.周末小明和爸爸妈妈三个人一起想动手做三道菜。
小明负责洗菜、爸爸负责切菜、妈妈负责炒菜。
假设做每道菜的顺序都是:
先洗菜10分钟,然后切菜10分钟,最后炒菜10分钟。
那么做一道菜需要30分钟。
注意:
两道不同的菜的相同步骤不可以同时进行。
例如第一道菜和第二道的菜不能同时洗也不能同时切。
那么做完三道菜的最短时间需要()分钟。
A.90
B.60
C.50
D.40
查看
20.参加NOI比赛,以下不能带入考场的是()。
A.钢笔
B.适量的衣服
C.U盘
D.铅笔
查看
二、问题求解(共2题,每题5分,共计10分;第一题目全部答对得5分,没有部分分;第二题第一空2分,第二空3分)
1.从一个4×4的棋盘(不可旋转)中选取不在同一行也不在同一列上的两个方格,共有_________种方法。
答案:
72
查看
2.约定二叉树的根节点高度为1。
一棵结点数为2016的二叉树最少有_________个叶子结点;一棵结点数为2016的二叉树最小的高度值是_________。
答案:
1,11
查看
三、阅读程序写结果(共4题,每题8分,共计32分)
1.
#include
usingnamespacestd;
intmain(){
intmax,min,sum,count=0;
inttmp;
cin>>tmp;
if(tmp==0)
return0;
max=min=sum=tmp;
count;
while(tmp!
=0){
cin>>tmp;
if(tmp!
=0){
sum=tmp;
count;
if(tmp>max)
max=tmp;
if(tmp min=tmp;
}
}
cout< return0;
}
输入:
12345607
输出:
6,1,3
查看
2.
#include
usingnamespacestd;
intmain(){
inti=100,x=0,y=0;
while(i>0){
i--;
x=i%8;
if(x==1)
y;
}
cout< return0;
}
输出:
13
查看
3.
#include
usingnamespacestd;
intmain(){
inta[6]={1,2,3,4,5,6};
intpi=0;
intpj=5;
intt,i;
while(pi t=a[pi];
a[pi]=a[pj];
a[pj]=t;
pi;
pj--;
}
for(i=0;i<6;i)
cout< cout< return0;
}
输出:
6,5,4,3,2,1,
查看
4.
#include
usingnamespacestd;
intmain(){
inti,length1,length2;
strings1,s2;
s1="Ihaveadream.";
s2="IHaveADream.";
length1=s1.size();
length2=s2.size();
for(i=0;i if(s1[i]>='a'&&s1[i]<='z')
s1[i]-='a'-'A';
for(i=0;i if(s2[i]>='a'&&s2[i]<='z')
s2[i]-='a'-'A';
if(s1==s2)
cout<<"="< elseif(s1>s2)
cout<<">"< else
cout<<"<"< return0;
}
输出:
=
查看
四、完善程序(共2题,每题14分,共计28分)
1.(读入整数)请完善下面的程序,使得程序能够读入两个int范围内的整数,并将这两个整数分别输出,每行一个。
(第一、五空2.5分,其余3分)
输入的整数之间和前后只会出现空格或者回车。
输入数据保证合法。
例如:
输入:
123-789
输出:
123
-789
#include
usingnamespacestd;
intreadint(){
intnum=0; //存储读取到的整数
intnegative=0;//负数标识
charc; //存储当前读取到的字符
c=cin.get();
while((c<'0'||c>'9')&&c!
='-')
c= cin.get() ;
if(c=='-')
negative=1;
else
num=c-'0' ;
c=cin.get();
while( c>='0'&&c<='9' ){
num=num*10c-'0' ;
c=cin.get();
}
if(negative==1)
return-num ;
returnnum;
}
intmain(){
inta,b;
a=readint();
b=readint();
cout< return0;
}
查看
2.(郊游活动)有n名同学参加学校组织的郊游活动,已知学校给这n名同学的郊游总经费为A元,与此同时第i位同学自己携带了Mi元。
为了方便郊游,活动地点提供B(≥n)辆自行车供人租用,租用第j辆自行车的价格为Cj元,每位同学可以使用自己携带的钱或者学校的郊游经费,为了方便账务管理,每位同学只能为自己租用自行车,且不会借钱给他人,他们想知道最多有多少位同学能够租用到自行车。
(第四、五空2.5分,其余3分)
本题采用二分法。
对于区间[l,r],我们取中间点mid并判断租用到自行车的人数能否达到mid。
判断的过程是利用贪心算法实现的。
#include
usingnamespacestd;
#defineMAXN1000000
intn,B,A,M[MAXN],C[MAXN],l,r,ans,mid;
boolcheck(intnn){
intcount=0,i,j;
i= n-nn1 ;
j=1;
while(i<=n){
if( M[i]count=C[j]-M[i];
i;
j;
}
return count<=A ;
}
voidsort(inta[],intl,intr){
inti=l,j=r,x=a[(lr)/2],y;
while(i<=j){
while(a[i] while(a[j]>x)j--;
if(i<=j){
y=a[i];a[i]=a[j];a[j]=y;
i;j--;
}
}
if(i if(l}
intmain(){
inti;
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=(lr)/2;
if( check(mid) ){
ans=mid;
l=mid1;
}else
r= mid-1 ;
}
cout< return0;
}