初赛试题及答案.docx
- 文档编号:3713925
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:17
- 大小:21.40KB
初赛试题及答案.docx
《初赛试题及答案.docx》由会员分享,可在线阅读,更多相关《初赛试题及答案.docx(17页珍藏版)》请在冰豆网上搜索。
初赛试题及答案
第十一届全国青少年信息学奥林匹克联赛初赛试题
(普及组pascal&C语言二小时完成)
●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●
由OIFans(www.OIF)整理
一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,共30分)
1.在字符串“ababacbabcbdecced”中出现次数最多的字母出现了()次。
A.6B.5C.4D.3E.2
2.设全集I={a,b,c,d,e,f,g,h},集合A={a,b,c,d,e,f},B={c,d,e},C={a,d},那
么集合CBA~ÇÇ为()。
A.{c,e}B.{d,e}C.{e}D.{c,d,e}E.{d,f}
3.和十进制数23的值相等的二进制数是()。
A.10110B.11011C.11011D.10111E.10011
4.完全二叉树的结点个数为11,则它的叶结点个数为()。
A.4B.3C.5D.2E.6
5.平面上有五个点A(5,3),B(3,5),C(2,1),D(3,3),E(5,1)。
以这五点作为完全图G的顶点,
每两点之间的直线距离是图G中对应边的权值。
以下哪条边不是图G的最小生成树中
的边()。
A.ADB.BDC.CDD.DEE.EA
6.Intel的首颗16位处理器是()。
A.8088B.80386C.80486D.8086E.Pentium
7.处理器A每秒处理的指令数是处理器B的2倍。
某一特定程序P分别编译为处理器A
和处理器B的指令,编译结果处理器A的指令数是处理器B的4倍。
已知程序P在处
理器A上执行需要1个小时,那么在输入相同的情况下,程序P在处理器B上执行需
要()小时。
A.4B.2C.1D.1/2E.1/4
8.以下哪个不是计算机的输出设备()。
A.音箱B.显示器C.打印机D.扫描仪E.绘图仪
9.下列活动中不属于信息学奥赛的系列活动的是()。
A.NOIPB.NOIC.IOID.冬令营E.程序员等级考试
10.以下断电之后仍能保存数据的是()。
A.硬盘B.寄存器C.显存D.内存E.高速缓存
11.以下哪个软件不是即时通信软件()。
A.网易泡泡B.MSNMessengerC.GoogleTalkD.3DSMaxE.QQ
12.下列关于高级语言的说法错误的是()。
A.Fortran是历史上的第一个面向科学计算的高级语言
B.Pascal和C都是编译执行的高级语言
C.C++是历史上的第一个支持面向对象的语言
D.编译器将高级语言程序转变为目标代码
E.高级语言程序比汇编语言程序更容易从一种计算机移植到另一种计算机上
13.下列设备不具有计算功能的是()。
A.笔记本电脑B.掌上电脑C.智能手机
D.电子计算器E.液晶显示器
14.常见的邮件传输服务器使用()协议接收邮件。
A.HTTPB.SMTPC.TCPD.FTPE.POP3
15.下列浏览器中,由微软公司开发的浏览器是()。
A.InternetExploreB.NetscapeC.OperaD.FirefoxE.Mozilla
16.一位艺术史学家有20000幅真彩色图像,每幅图像约占3M空间。
如果将这些图像以位
图形式保存在CD光盘上(一张CD光盘的容量按600M计算),大约需要()张CD
光盘。
A.1B.10C.100D.1000E.10000
17.设A=true,B=false,C=false,D=true,以下逻辑运算表达式值为真的是()。
A.(AB∧)∨(CD∧)B.((AB∧)C∨)D∧C.A∧((BC∨)D∧)
D.(A∧(BC∨))D∨E.(AB∨)∧(CD∧)
18.(3725)8+(B)16的运算结果是()。
A.(3736)8B.(2016)10C.(1111110000)2D.(3006)10E.(7B0)16
19.二叉树T的宽度优先遍历序列为ABCDEFGHI,已知A是C的父结点,D是G的
父结点,F是I的父结点,树中所有结点的最大深度为3(根结点深度设为0),可知F
的父结点是()。
A.无法确定B.BC.CD.DE.E
20.设栈S的初始状态为空,元素a,b,c,d,e,f,g依次入栈,以下出栈序列不可能出现的是
()。
A.a,b,c,e,d,f,gB.b,c,a,f,e,g,dC.a,e,d,c,b,f,g
D.d,c,f,e,b,a,gE.g,e,f,d,c,b,a
二.问题求解(请在空格处填上答案,每空5分,共10分)
1.将数组{32,74,25,53,28,43,86,47}中的元素按从小到大的顺序排列,每次可以交换任
意两个元素,最少需要交换次。
2.有3个课外小组:
物理组,化学组和生物组。
今有张、王、李、赵、陈5名同学,已知
张、王为物理组成员,张、李、赵为化学组成员,李、赵、陈为生物组成员。
如果要在
3个小组中分别选出3位组长,一位同学最多只能担任一个小组的组长,共有种
选择方案。
三.阅读程序(共4题,每题8分,共计32分)
==================PASCAL语言==================
1.var
a,b:
integer;
begin
read(a);
b:
=(a*(a*a))+1;
ifbmod3=0thenb:
=bdiv3;
ifbmod5=0thenb:
=bdiv5;
ifbmod7=0thenb:
=bdiv7;
ifbmod9=0thenb:
=bdiv9;
ifbmod11=0thenb:
=bdiv11;
ifbmod13=0thenb:
=bdiv13;
ifbmod15=0thenb:
=bdiv15;
writeln((100*a-b)div2);
end.
输入:
10
输出:
499
2.var
str:
string;
i:
integer;
begin
str:
='Today-is-terrible!
';
fori:
=7to11do
ifstr='-'thenstr[i-1]:
='x';
fori:
=13downto1do
ifstr='t'thenstr[i+1]:
='e';
writeln(str);
end.
输出:
'Today-ix-terrible!
3.var
a,b,c,p,q:
integer;
r:
array[0..2]ofinteger;
begin
read(a,b,c);
p:
=adivbdivc;
q:
=b-c+a+p;
r[0]:
=a*pdivq*q;
r[1]:
=r[0]*(r[0]-300);
if(3*q-pmod3<=r[0])and(r[2]=r[2])then
r[1]:
=r[r[0]divpmod2]
elser[1]:
=qmodp;
writeln(r[0]-r[1]);
end.
输入:
10073
输出:
-7452
4.var
str:
string;
len,i,j:
integer;
nchr:
array[0..25]ofinteger;
mmin:
char;
begin
mmin:
='z';
readln(str);len:
=length(str);
i:
=len;
whilei>=2dobegin
ifstr[i-1] end; ifi=1thenbegin writeln('Noresult! ');exit; end; forj: =1toi-2dowrite(str[j]); fillchar(nchr,sizeof(nchr),0); forj: =itolendobegin if(str[j]>str[i-1])and(str[j] mmin: =str[j]; inc(nchr[ord(str[j])-ord('a')]); end; dec(nchr[ord(mmin)-ord('a')]); inc(nchr[ord(str[i-1])-ord('a')]); write(mmin); fori: =0to25do forj: =1tonchrdo write(chr(i+ord('a'))); writeln; end. 输入: zzyzcccbbbaaa 输出: zzzaaabbbcccy ==================C语言================== 1.#include intmain(){ inta,b; scanf(“%d”,&a); b=(a*(a*a))+1; if(b%3==0)b=b/3; if(b%5==0)b=b/5; if(b%7==0)b=b/7; if(b%9==0)b=b/9; if(b%11==0)b=b/11; if(b%13==0)b=b/13; if(b%15==0)b=b/15; printf(“%d\n”,(100*a–b)/2); return0; } 输入: 10 输出: 2.#include intmain(){ charstr[20]=“Today-is-terrible! ”; inti; for(i=6;i<=10;i++) if(str==‘-‘)str[i–1]=‘x‘; for(i=12;i>=0;i--) if(str==‘t’)str[i+1]=‘e’; printf(“%s\n”,str); return0; } 输出: 3.#include intmain(){ inta,b,c,p,q,r[3]; scanf(“%d%d%d”,&a,&b,&c); p=a/b/c; q=b–c+a+p; r[0]=a*p/q*q; r[1]=r[0]*(r[0]–300); if(3*q–p%3<=r[0]&&r[2]==r[2]) r[1]=r[r[0]/p%2]; else r[1]=q%p; printf(“%d\n”,r[0]–r[1]); return0; } 输入: 10073 输出: 4.#include #include intmain(){ charstr[60]; intlen,i,j,chr[26]; charmmin='z'; scanf("%s",str); len=strlen(str); for(i=len-1;i>=1;i--) if(str[i-1] if(i==0){ printf("Noresult! \n");return0; } for(j=0;j memset(chr,0,sizeof(chr)); for(j=i;j if(str[j]>str[i-1]&&str[j] mmin=str[j]; chr[str[j]-'a']++; } chr[mmin-'a']--; chr[str[i-1]-'a']++; putchar(mmin); for(i=0;i<26;i++) for(j=0;j putchar(i+'a'); putchar('\n'); return0; } 输入: zzyzcccbbbaaa 输出: 四.完善程序(前4空,每空2分,后5空,每空4分,共28分) ==================PASCAL语言================== 1.判断质数 题目描述: 给出一个正整数,判断这个数是否是质数。 输入: 一个正整数n(1≤n≤10000)。 输出: 如果n是质数,输出”YES”;否则,输出”NO”。 输入样例: 10 输出样例: NO 程序: var ①n,i: integer; begin read(n); ifn=2thenwriteln(②yes) elseif(③n=1)or(nmod2=0)thenwriteln('NO') elsebegin i: =3; whilei*i<=ndobegin if④nmodi=0thenbegin writeln('NO');exit; end; i: =i+2; end; writeln('YES'); end; end. 2.木材加工 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定的。 当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段木头的最大长度。 木头长度的单位cm。 原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。 输入: 第一行是两个正整数N和K(1≤N≤10000,1≤K≤10000),N是原木的数目,K是需要得到的小段的数目。 接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。 输出: 输出能够切割得到的小段的最大长度。 如果连1cm长的小段都切不出来,输出”0”。 输入样例: 37 232 124 456 输出样例: 114 程序: var n,k: integer; len: array[1..10000]ofinteger; i,left,right,mid: integer; functionisok(t: integer): boolean; var num,i: integer; begin num: =0; fori: =1tondobegin ifnum>=kthenbreak; num: =①num+len[i]divt; end; if②num>=knumthenisok: =true elseisok: =false; end; begin readln(n,k); right: =0; fori: =1tondobegin readln(len); ifright =len; end; inc(right);③left: =0; while④left+1 mid: =(left+right)div2; if⑤notisok(mid)thenright: =mid elseleft: =mid; end; writeln(left); end. ==================C语言================== 1.判断质数 题目描述: 给出一个正整数,判断这个数是否是质数。 输入: 一个正整数n(1≤n≤10000)。 输出: 如果n是质数,输出”YES”;否则,输出”NO”。 输入样例: 10 输出样例: NO 程序: #include intmain(){ int①; scanf("%d",&n); if(n==2)puts(②); elseif(③||n%2==0)puts("NO"); else{ i=3; while(i*i<=n){ if(④){ puts("NO");return0; } i=i+2; } puts("YES"); } return0; } 2.木材加工 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小 段的数目是给定的。 当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段 木头的最大长度。 木头长度的单位是cm。 原木的长度都是正整数,我们要求切割得到的小段木头的长度 也是正整数。 输入: 第一行是两个正整数N和K(1≤N≤10000,1≤K≤10000),N是原木的数目, K是需要得到的小段的数目。 接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。 输出: 输出能够切割得到的小段的最大长度。 如果连1cm长的小段都切不出来,输出”0”。 输入样例: 37 232 124 456 输出样例: 114 程序: #include intn,k,len[10000]; intisok(intt){ intnum=0,i; for(i=0;i if(num>=k)break; num=①; } if(②)return1; elsereturn0; } intmain(){ inti,left,right,mid; scanf("%d%d",&n,&k); right=0; for(i=0;i scanf("%d",&(len)); if(right } right++; ③; while(④ mid=(left+right)/2; if(⑤)right=mid; elseleft=mid; } printf("%d\n",left); return0; 第十一届全国青少年信息学奥林匹克联赛初赛试题普及组(P&C)参考答案 由OIFans(www.OIF)整理 一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分,多选无分,共30分) 题号 1 2 3 4 5 6 7 8 9 10 选择 B A D E D D D D E A 题号 11 12 13 14 15 16 17 18 19 20 选择 D C E E A C D B C E 二.问题解答(每题5分,共10分) 1.答: 5 2.答: 11 三.阅读程序,并写出程序的正确运行结果: (每题8分,共32分) (1)程序的运行结果是: 499 (2)程序的运行结果是: Today-ix-terrible! (3)程序的运行结果是: -7452 (4)程序的运行结果是: zzzaaabbbcccy 四.根据题意,将程序补充完整(前4空,每空2分,后5空,每空4分,共28分) pascal语言 ================= 1. ① n,i (或者i,n) ② 'YES' ③ n=1 (或者n–1=0) ④ nmodi=0 2. ① num+len[i]divt ② num>=k ③ left: =0 ④ left+1 ⑤ notisok(mid)(或者isok(mid)=false) C语言 ================= 1. ① n,i(或者i,n) ② 'YES' ③ n==1(或者n–1==0) ④ n%i==0 (或者! n%i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 初赛 试题 答案