noip提高组初赛试题-c++含答案.doc

上传人:豆**** 文档编号:23970981 上传时间:2022-07-03 格式:DOC 页数:54 大小:1.06MB
返回 下载 相关 举报
noip提高组初赛试题-c++含答案.doc_第1页
第1页 / 共54页
noip提高组初赛试题-c++含答案.doc_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《noip提高组初赛试题-c++含答案.doc》由会员分享,可在线阅读,更多相关《noip提高组初赛试题-c++含答案.doc(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateNOIP2011提高组初赛试题-C+含答案1、NOIP2011第十七届全国青少年信息学奥林匹克联赛初赛试题( 提高组 C+语言 两小时完成 ) 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 一、单项选择题 (共10题,每题1.5分,共计15分。每题有且仅有一个正确选项。)1在二进制下,1011001 + ( )= 1100110。 A1011 B 1101 C

2、1010 D11112 字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的( )。 A66 B5A C50 D视具体的计算机而定3右图是一棵二叉树,它的先序遍历是( )。AABDEFC BDBEFAC CDFEBCA DABCDEF 4寄存器是( )的重要组成部分。 A硬盘 B高速缓存 C内存 D中央处理器(CPU)5 广度优先搜索时,需要用到的数据结构是( )。 A链表 B队列 C栈 D散列表 6在使用高级语言编写程序时,一般提到的“空间复杂度”中的空间是指( )。A程序运行时理论上所占的内存空间B程序运行时理论上所占的数组空间C程序运行时理论上所占的硬盘空间D程

3、序源文件理论上所占的硬盘空间7应用快速排序的分治思想,可以实现一个求第K大数的程序。假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为( )。AO (n2) BO (n log n ) CO (n) D O (1) 8为解决web应用中的不兼容问题,保障信息的顺利流通,( )制定了一系列标准,涉及HTML、XML、CSS等,并建议开发者遵循。 A微软 B美国计算机协会(ACM) C联合国教科文组织 D万维网联盟(W3C)9体育课的铃声响了,同学们都陆续的奔向操场,按老师的要求从高到低站成一排。每个同学按顺序来到操场时,都从排尾走到排头,找到第一个比自己高的同学,并站在他的后面。这

4、种站队的方法类似于( )算法。 A快速排序 B插入排序 C冒泡排序 D归并排序101956年( )授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain) A诺贝尔物理学奖 B约翰冯诺依曼奖 C图灵奖 D高德纳奖 (Donald E. Knuth Prize)二、不定项选择题 (共10题,每题1.5分,共计15分。每题正确答案的个数不少于1。多选或少选均不得分)。1如果根结点的深度记为1,则一棵恰有2011个叶子结点的二叉树的深度可能是( )。 A10 B11 C12 D2011 2在布尔逻辑中,逻辑“或”的性质有( )。 A交

5、换律:PVQ = QVP B结合律:PV(QVR)=(PVQ)VR C幂等律:PVP = P D有界律:PV1 = 1(1表示逻辑真)3一个正整数在十六进制下有100位,则它在二进制下可能有( )位。 A399 B400 C401 D4044 汇编语言( )。 A是一种与具体硬件无关的程序设计语言 B在编写复杂程序时,相对于高级语言而言代码量大,且不易调试 C可以直接访问寄存器、内存单元、I/O端口 D随着高级语言的诞生,如今已被完全淘汰,不再使用5现有一段文言文,要通过二进制哈夫曼编码进行压缩。简单起见,假设这段文言文只由4个汉字“之”、“乎”、“者”、“也”组成,它们出现的次数分别为700

6、、600、300、400。那么,“也”字的编码长度可能是( )。A1 B2 C3 D4 6 生物特征识别,是利用人体本身的生物特征进行身份认证的一种技术。目前,指纹识别、虹膜识别、人脸识别等技术已广泛应用于政府、银行、安全防卫等领域。以下属于生物特征识别技术及其应用的是( )。 A指静脉验证 B步态验证 CATM机密码验证 D声音验证 7对于序列“7、5、1、9、3、6、8、4”,在不改变顺序的情况下,去掉( )会使逆序对的个数减少3。 A7 B5 C3 D68计算机中的数值信息分为整数和实数(浮点数)。实数之所以能够表示很大或者很小的数,是由于使用了( )。A阶码 B补码 C反码 D较长的尾

7、数9对右图使用Dijkstra算法计算S点到其余各点的最短路径长度时,到B点的距离dB初始时赋为8,在算法的执行过程中还会出现的值有( )。A3 B 7 C6 D510为计算机网络中进行数据交换而建立的规则、标准或约定的集合称为网络协议。下列英文缩写中,( )是网络协议 AHTTP BTCP/IP CFTP DWWW三问题求解(共2题,每空5分,共计10分)1平面图可以在画在平面上,且它的边仅在顶点上才能相交的简单无向图。4个顶点的平面图至少有6条边,如右图所示。那么,5个顶点的平面图至少有 条边。2定义一种字符串操作,一次可以将其中一个元素移到任意位置。举例说明,对于字符串“BCA”可以将A

8、移到B之前,变字符串“ABC”。如果要将字符串“DACHEBGIF”变成“ABCDEFGHI”最少需要_次操作。四阅读程序写结果(共4题,每题8分,共计32分)1#include#includeusing namespace std;const int SIZE = 100;int main() int n,i,sum,x,aSIZE; cinn; memset(a,0,sizeof(a); for(i=1;ix; ax+; i=0; sum=0; while(sum(n/2+1) i+; sum+=ai; coutiendl; return 0;输入:114 5 6 6 4 3 3 2 3

9、2 1输出: 2#includeusing namespace std;int n;void f2(int x,int y);void f1(int x,int y) if(xn) f2(y,x+y);void f2(int x,int y) coutxn; f1(0,1); return 0; return 0;输入:30 输出:_3#includeusing namespace std;const int V=100;int n,m,ans,eVV;bool visitedV;void dfs(int x,int len) int i; visitedx= true; if(lenans)

10、 ans=len; for(i=1;inm; for(i=1;i=n;i+) for(j=1;j=m;j+) eij=-1; for(i=1;iabc; eab=c; eba=c; for(i=1;i=n;i+) visitedi=false; ans=0; for(i=1;i=n;i+) dfs(i,0); coutansendl; return 0;输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60 输出:_4#include#include#includeusing namespace std;const int SIZE=10000;const int

11、 LENGTH=10;int n,m,aSIZELENGTH;int h(int u,int v) int ans,i; ans=0; for(i=1;in; memset(a,0,sizeof(a); m=1; while(1) i=1; while( (in) break; m+; ami=1; for(j=i+1;j=n;j+) amj=am-1j; sum=0; for(i=1;i=m;i+) for(j=1;j=m;j+) sum+=h(i,j); coutsumendl; return 0;输入:7输出:_五 完善程序 (第1题,每空2分,第2题,每空3分,共28分)1.(大整数开

12、方) 输入一个正整数n(1n10100),试用二分法计算它的平方根的整数部分。#include#includeusing namespace std;const int SIZE=200;struct hugeint int len,numSIZE;/其中len表示大整数的位数;num1表示个位,num2表示十位,以此类推hugeint times(hugeint a,hugeint b)/ 计算大整数a和b的乘积 int i,j; hugeint ans; memset(ans.num,0,sizeof(ans.num); for(i=1;i=a.len;i+) for(j=1;j=b.le

13、n;j+) +=a.numi*b.numj; for(i=1;i0) ans.len=a.len+b.len; else ans.len=a.len+b.len-1; return ans;hugeint add(hugeint a,hugeint b)/计算大整数a和b 的和 int i; hugeint ans; memset(ans.num,0,sizeof(ans.num); if(a.lenb.len) ans.len=a.len; else ans.len=b.len; for(i=1;i0) ans.len+; return ans;hugeint average(hugeint

14、 a,hugeint b)/计算大整数a和b的平均数的整数部分 int i; hugeint ans; ans=add(a,b); for(i=ans.len;i=2;i-) ans.numi-1+=( )*10; ans.numi/=2; ans.num1/=2; if(ans.numans.len=0) ans.len-; return ans;hugeint plustwo(hugeint a)/ 计算大整数a加2之后的结果 int i; hugeint ans; ans=a; ans.num1+=2; i=1; while( (i=10) ) ans.numi+1+=ans.numi/

15、10; ans.numi%=10; i+; if(ans.numans.len+10) ; return ans;bool over(hugeint a,hugeint b)/ 若大整数ab则返回true,否则返回false int i; if( ) return false; if( a.lenb.len ) return true; for(i=a.len;i=1;i-) if(a.numib.numi) return true; return false;int main() string s; int i; hugeint target,left,middle,right; cins;

16、 memset(target.num,0,sizeof(target.num); target.len=s.length(); for(i=1;i=1;i-) coutleft.numi; return 0;2. (笛卡尔树)对于一个给定的两两不等的正整数序列,笛卡尔树是这样的一棵二叉树:首先,它是一个最小堆,即除了根结点,每个节点的权值都大雨父节点的权值;其次,它的中序遍历恰好就是给定的序列。例如,对于序列7、2、12、1、10、5、15、3,下图就是一棵对应的笛卡尔树。现输入序列的规模n(1n100)和序列的n个元素,试求其对应的笛卡尔树的深度d(根节点深度为1),以及有多少个叶子节点的深

17、度为d。#includeusing namespace std;const int SIZE=100+5;const int INFINITY=1000000;int n,aSIZE,maxDeep,num;void solve(int left,int right,int deep)int i,j,min; if(deepmaxDeep) maxDeep=deep; num=1; else if(deep=maxDeep) ; min= INFINITY; for(i=left;iai) min=ai; ; if(leftj) ; if(jn; for(i=1;iai; maxDeep=0;

18、 solve(1,n,1); coutmaxDeep numendl; return 0;NOIP2011年提高组(C+语言)参考答案与评分标准一、单项选择题:(每题1.5分) 1. B 2. B 3. A 4. D 5. B6. A 7. C 8. D 9. B 10. A二、 不定项选择题 (共10题,每题1.5分,共计15分。每题正确答案的个数大于或等于1。多选或少选均不得分)。1. CD 2. ABCD3. AB 4. BC 5. BC 6. ABD 7. CD 8. A 9. BCD 10. ABC 三、问题求解:(共2题,每空5分,共计10分)19 24四、阅读程序写结果(共4题,

19、每题8分,共计32分) 13 21 2 5 13 34 3150 457344五、完善程序(第1题,每空2分,第2题,每空3分,共计28分)(说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委员会审查)1 ans.numi + j - 1 ans.numi = ans.numi mod 10 a.numi + b.numi ans.numi % 2 (或 ans.numi & 1) ans.len+ (或 ans.len = ans.len + 1) a.len b.len 0(或48) times(middle, middle), target 2 num+ (或 num = num + 1) j = i solve(left, j - 1, deep + 1) solve(j + 1, right, deep + 1) -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁