ImageVerifierCode 换一换
格式:DOCX , 页数:105 ,大小:307.70KB ,
资源ID:5858181      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5858181.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信息学奥林匹克竞赛资料初赛资料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

信息学奥林匹克竞赛资料初赛资料.docx

1、信息学奥林匹克竞赛资料初赛资料青少年信息学竞赛简要介绍青少年信息学(计算机)奥林匹克竞赛(早期称为青少年计算机程序设计竞赛)是旨在广大青少年中普及计算机教育,推广计算机应用的一项学科性竞赛活动。全国从1984年开始举办全国性竞赛。而自从1989年我国参加第一届国际信息学奥林匹克(International Olympiad in Informatics, 简称IOI)以来,全国青少年计算机程序设计竞赛也更名为全国青少年信息学(计算机)奥林匹克(National Olympiad in Informatics, 简称NOI)。全国信息学奥林匹克竞赛是经国家教委批准,中国科协具体领导,由中国计算机

2、学会主办的。浙江省信息学奥林匹克竞赛活动从84年参加全国赛开始,由省科学技术协会、省教育厅和省计算机学会联合组织。 为促进计算机普及并兼顾提高,从95年开始全国举办信息学奥林匹克竞赛分区联赛,根据浙江实际情况,我省将分区联赛初、复赛作为省信息学奥赛的初赛和复赛。浙江省开始几年初赛试题自己命题,现在采用全国卷。一 信息学奥林匹克竞赛的内容和考核方式:对学生学习计算机理论知识和实践能力有一个整体性的全面要求,也即整个信息学(计算机)竞赛已成为智力和应用计算机能力的竞赛,涉及到有关计算机基础知识、计算机软件知识、程序设计知识、组合数学和运筹学的知识、人工智能初步知识以及计算机应用知识等,同时要求学生

3、有较强的编程和上机调试的实践能力。 1 NOI全国分区联赛初赛 (每年10月左右)对象:在校中学生, 分初中、高中组考试形式:笔试 性质: 普及确定获初级选手证书名单及进入复赛名单,在各地市举行。2NOI全国分区联赛复赛 (每年11月左右)对象:初赛优胜者 分初中、高中组考试形式:上机试 性质:普及兼顾提高确定全国分区联赛一、二等奖,省各等奖及全国各级证书获得者名单,在杭州进行,省派评委协助测评。信息学奥林匹克竞赛复赛的考核方式是采用封闭式(连续34小时)上机编程解题的形式,编程语言基本限于BASIC与 PASCAL,竞赛难度较大。程序完成后要通过严格的数据测试,这就对同学们编程能力有更高的要

4、求:不但要能编程,编好的程序能运行,而且所设计的程序还要能通过在各种边界条件下和各种环境下设置的测试数据。二 全国青少年信息学奥林匹克联赛大纲竞赛大纲一、初赛内容与要求:(表示普及组可不涉及,以下同)计基算本机常的识*诞生与发展 *特点 *在现代社会中的应用 *计算机系统的基本组成 *计算机中的数的表示 *计算机的工作原理# *计算机信息安全基础知识 *计算机网络 计 基算 本机 操的 作*常见操作系统的使用基础*常用输入/输出设备的种类、功能、使用*汉字输入/输出方法 *常用计算机屏示信息程序设计基本知识程序的表示*自然语言的描述 *PASCAL或BASIC语言数据结构*简单数据的类型 *构

5、造类型:数组、字符串*了解基本数据结构(线性表、队列与栈)程序设计*结构化程序的基本概念 *阅读理解程序的基本能力*具有完成下列过程的能力:现实世界(指知识范畴的问题)信息世界(表达解法)计算机世界(将解法用计算机能实现的数据结构和算法描述出来)基本算法处 理*简单搜索 *字串处理 *排序 *查找 *统计 *分类 *合并 *简单的回溯算法 *简单的递归算法二、复赛内容与要求: 在初赛的内容上增加以下内容:计算机软 件*操作系统的使用知识 *编程语言的使用 数据结构*结构类型中的记录类型 *指针类型 *文件(提高组必须会使用文本文件输入)*链表 *树 *图#程序设计*程序设计能力 *设计测试数据

6、的能力*运行时间和占用空间的估算能力#算法处理*排列组合的应用 *进一步加深回溯算法、递归算法*分治法 *搜索算法:宽度、深度优先算法*表达式处理:计算、展开、化简等# *动态规划#三、初赛试题类型:注:试题语言两者选一、高中学生必须参加提高组联赛。 ( 程序设计语言:基本BASIC或TURBO PASCAL) *判断 *填空 *完善程序 *读程序写运行结果 *问答四、推荐读物: *分区联赛辅导丛书 *学生计算机世界报三 Pascal语言一、 结构化程序设计结构化程序设计实际上就是为了使程序具有合理的结构,以便保证和验证程序的正确性而规定的一套进行结构程序设计的方法。用结构化程序设计的方法设计

7、出来的程序称为结构化程序。结构化程序设计语言就是反映了结构化程序设计的要求和限制,便于用来书写结构化程序的语言。用这种语言书写的程序易于保证正确性。 二、 PASCAL语言的特色 从使用者的角度看,PASCAL语言有以下几个主要特点: 1、它是结构化语言 PASCAL语言是结构化的程序设计语言。PASCAL语言提供了直接实现3种基本结构的语句心以及定义子程序(“过程”和“函数”)的功能。可以方便的书写出结构化的程序。在编写程序时可以完全不使用转向语句。这就易于保证程序的正确性和易读性。PASCAL语言强调的是可靠性、易读性和概念性的清晰性。 2、有丰富的数据类型 PASCAL语言提供了整型、实

8、型、字符型、布尔型、枚举型、子域型以及由以上类型构成的数组类型、集合类型、记录类型和文件类型。此外,还提供了指针类型。PASCAL语言所提供的丰富的数据结构和上述的结构化性质,使得它可以被方便地用来描述复杂的算法,得到质量较高的程序。 3、能适应于数值计算和非数值信息处理领域 在PASCAL语言出现之前,FORTRAN语言主要处理科学计算,而COBOL语言则主要用于非数值信息处理。PASCAL语言则兼顾了这两个不同领域的应用。PASCAL语言可广泛应用于各种领域,还可以用于计算机辅助教育、计算机绘图等应用领域。 4、PASCAL程序的书写格式比较自由 PASCAL允许一行写多个语句,一个语句可

9、以分写在多行上,这样就可以使PASCAL程序写得像讲诗歌格式一样优美,便于阅读。 除了以上优点外,PASCAL语言还具有简单易学的特点,许多学校把PASCAL作为程序设计课程的第一种程序设计语言。 PASCA:L语言的主要缺点:不够灵活,书写较麻烦。四 数据结构 数据结构是计算机专业基础课程之一,是十分重要的核心课程。计算机的所有系统软件和应用软件都要用到各种类型的数据结构。要想更好地运用计算机来解决实际问题,仅仅学习计算机语言而缺乏数据结构知识是远远不够的,而打好“数据结构”这门课程的扎实基础,对于学习计算机专业的其他课程都是十分重要的。随着计算机应用领域不断扩大,非数值计算问题占据了当今计

10、算机应用的绝大多数,简单的数据类型已经远远不能满足需要,各数据元素之间的复杂联系已经不是普通数学方程所能表达的。因此,掌握好数据结构方面的知识,对于提高我们解决实际问题的能力将会有莫大的帮助。实际上一个好的程序无非是选择一个合适的数据结构和好的算法,而好的算法的选择很大程度上取决于描述实际问题的数据结构的选取。所以,学好数据结构,将是进一步提高我们程序设计的关键之一。五 算法例子1称小球重量:有6个小球分别用16编号, 其中5个重量相同。现在有一架台称,一次能称出放在上面的若干物体的总重,要求编一个程序,让计算机找出一种称法,只要称3次就可以知道每个小球的重量。具体操作时由操作者默想6个物体的

11、重量,然后由计算机用编号提问若干物体的重量,如此3次后程序应能输出每个物体的重量。PROGRAM EX02; VAR S1, S2, S3, p: integer; BEGIN P:=0; write(请输入1号+2号+3号+4号的重量总和:); read(s1); write(请输入1号+2号+5号的重量总和:); read(S2); IF 3*s14*s2 THEN BEGIN write(请输入1号+3号的重量总和:); read(s3); IF S1+S3=2*S2 THEN BEGIN P:=1; Writeln(第1号重, S3+S2-S1,其余重,S2-S3); END; IF

12、S3+2*S2 =2*S1 THEN BEGIN p:=1; writen(第2号重, 3*S2-2*S1, ,其余重,S1-S2); END; IF 2*S2+3*S33*S1 THEN BEGIN p:=1; writeln(第3号重,S3-(S2 div 3),其余重,S2 div 3); END; IF 2*S23*S3 THEN BEGIN p:=1; writeln(第4号重,S1-3*(S3 div 2),其余重,S3 div 2); END; IF S1 =2*S3 THEN BEGIN p:=1; writeln(第5号重,s2-2*(s3 div 2),其余重, s3 di

13、v 2), END; IF p:=0 THEN writeln(输入的数据不正确!); END ELSE IF 3*s1 = 4*s2 THEN BEGIN write(请输入6号的重量:); read(s3); writeln(第6号重,s3, 其余重 ,s2 div 3); END; Writeln; END.2打印奇数阶幻方: 方法:MM 阶奇数幻方,在最后一行(第 M行)的中间(M+1)/2处填上1,左下方向填2, .,若前方已经有数,在原数的上方填入。 三阶: 2 9 4 7 5 3程序如下: 6 1 8program huafang; var i,j,k,n :integer; a

14、: array1.20,1.20 of integer; 五阶:9 2 25 18 11 begin 3 21 19 12 10 for i:= 1 to 20 do 22 20 13 6 4 for j:= 1 to 20 do ai,j:=0; 16 14 7 5 23 write(Input n:); readln(n); 15 8 1 24 17 while (n mod 2=1) and (n=19) do begin i:=n; j:=(n div 2)+1; ai,j:=1; for k:= 2 to n*n do begin i:=i+1; j:=j-1; if i=n+1 t

15、hen i:=1; if j=0 then j:=n; if ai,j=0 then ai,j:=k else begin i:=i-2; j:=j+1; if i0 then i:=i+n; if j=n+1 then j:=1; ai,j:=k; end; end; for i:= 1 to n do begin for j:= 1 to n do write(ai,j:4); writeln; end; exit; end; write(Error!); end.313个人编号围成一圈,从1开始,4个一数,数到者出列,打印出列的顺序。(方法一:) Program EX1301; Cons

16、t m=13;t=4; Var i,k,p :integer; A:array1.m of integer; Begin For i:= 1 to m do ai:=1; I:=0; k:=0; p:=0; Repeat I:=i+1;if i=m+1 then i:=1; K:=k+ai; If k=t then Begin Write(i:4);ai:=0; p:=p+1; k:=0; End; Until p=m; Writeln; End. (方法二:链接表) Program EX1302; Const m=13;t=4; Var i,j,k,p :integer; A:array1.

17、m of integer; Begin For i:= 1 to m-1 do ai:=i+1; Am:=1; i:=m; k:=1; p:=0; Repeat i:=ai; k:=k+1; If k=t then Begin Write(ai:4); ai:=aai; p:=p+1; k:=1; End; Until p=m; writeln; End.出列顺序: 4 8 12 3 9 1 7 2 11 10 13 6 5计算机的数制、码制及其运算1 计算机是智能化的电器设备计算机就其本身来说是一个电器设备,为了能够快速存储、处理、传递信息,其内部采用了大量的电子元件,在这些电子元件中,电路

18、的通和断,电压高和低,这两种状态最容易实现,最稳定;也最容易实现对电路本身的控制。我们将计算机所能表示这样的状态,用0,1来表示,就形成了用二进制数表示计算机内部的所有运算和操作。计算机内部是以二进制形式表示数据的(指令、被处理的数据)。二进制数的运算规则:00=0 01=1 10=1 11=10;00=0 01=0 10=0 11=12 进位基数和位权值数的进制与基数计数的进制不同,则它们的基数也不相同,用到的数码也不一样。如表1-1所示。进制基数数码二进制201三进制3012四进制40123八进制801234567十进制100123456789十六进制160123456789ABCDEF进

19、制基数:指的是该进位记数制中可能用到的数码个数。对于任意计数进制:每一位计满这个基数后,都应向高位进位。二进制,逢二进一;八进制,逢八进一;十进制,逢十进一;十六进制,逢十六进一;R进制(R为任意正整数):数码个数为R个,分别为0R-1,每一位数当计满R后,应向高位进位。数的权不同进制的数,基数不同,其每位上所代表的值的大小也不相同,我们称之为“权”。如:(219)10=210211019100 (按权展开式)2在百位上代表2个100即200;1在十位上代表1个10即10;9在个位上代表9个1即9。注:以后我们用下标来注明圆括号内数的进制。 (11010)2=124123022121020(2

20、73)8=282781380(27B)16=2162716111160任意R进制S:S=knkn-1k0.k-1k-2k-m = knRnkn-1Rn-1k0R0.k-1R-1k-2R-2k-mR-mR为进位基数,Ri是对应的权值。3 任意进制的数转换成十进制整数将任意进制数转换成十进制数的基本方法是按权展开,然后求和按权相加法。因为在上式中基数我们已经转换成了相应的十进制数,所以展开式即是一个十进制数的表达式。(11010.1011)2=124123022121020 +12-1+02-2+12-3 +12-4=(26.6875)10(123)8=182281380=(83)10 (1AB)

21、16=(427)104 十进制整数转换成任意进制数将十进制整数转换成任意进制数的基本方法是:将十进制数除以所给定的进制的基数,再反向取余。例如:将十进制数39用二进制数表示,用除二反向取余法。 (39)10=(100111)2(245)10=(365)8减权定位法:把十进制数展开成所指定进制的基数的整数次幂之和,然后找到对应位上取值。例如:将十进制数123用二进制数表示。(123)10=64+32+16+8+0+2+1=126+125+124+123+022+121+120 =(1111011)25 十进制小数转换成任意进制数常用把给定的十进制小数乘以给定进制数的基数,取积的整数部分,得到给定

22、进制小数的小数点的第1位;乘积的小数部分再乘以基数,积的整数部分为小数点后的第2位;一直重复做下去,就可以得到希望的进制小数。例如:将十进制小数0.75转换成二进制小数。0.752=1.50.52=1 (0.75)10=(0.11)2(0.315)10=(0.0101)2不是所有的十进制小数都可以用一个精确的二进制小数表示。6 二进制与八进制之间的转换三位二进制,正好能完全表示八进制的8个数码。二进制000001010011100101110111八进制01234567二进制数转换成八进制数的方法是:从小数点开始,分别向左向右,每3位二进制数为一组,用八进制来书写。若左侧位数不是3的倍数,则最

23、左侧用0补充,若右侧位数不是3的倍数,则最右侧用0补充。例如:(10110111.01101)2=(267.32)8反过来,八进制数转换成二进制数的方法:将每个八进制数用3位二进制数来书写。例如:(1234.45)8=(1010011.100101)27 二进制与十六进制之间的转换二进制0000000100101001101010111100110111101111十六进制0129ABCDEF每四位二进制数可以用一位十六进制数表示。二进制数转换成十六进制数方法:从小数点开始,分别向左向右,每4位二进制数为一组,用十六进制来书写。若左侧位数不是4的倍数,则最左侧用0补充,若右侧位数不是4的倍数,

24、则最右侧用0补充。例如:(110110111.01101)2=(1B7.68)16十六进制数转换成二进制数方法:将每个十六进制数用4位二进制来书写,其最左或最右侧的0可以省去。例如:(7AC.DE)16=(11110101100.1101111)2综合例子:(3/32)10转换成二进制解:(3/32)10=32-5=(11)2(0.00001)2=(0.00011)2总之:十进制数与二进制数之间的转换必须用前面讲的繁琐方法进行,因为10不能用2的整数次幂进行表示。也就是不能象八进制或十六进制数那样用几位二进制数表示十进制数的十个数码。把十进制数27.625转换成二进制、八进数和十六进制数。解:

25、(27)10=(11011)2(0.625)10=(0.101)2(27.625)10=(11011.101)2=(33.5)8=(1B.A)16要把一个十进制数转换为八进制数或十六进制,最先把它转换成二进制数,再由二进制数转换成八进制或十六进制。课后练习:1 请用等号或不等号联接下列不同进位制数值的大小。(98.375)10 (142.3)8 (58.5)16 (1011000.0101)22 下面四个不同进制的数,最小的数是 。A (11011001)2 B (75)10 C (37)8 D (A7)163 小张用十六进制、八进制和十进制写了如下一个等式:52-19=33式中三个数是各不相

26、同进位制的数,请问52、19、33,分别为 。A 八进制,十进制,十六进制 B 十进制,十六进制,八进制C 八进制,十六进制,十进制 D 十进制,八进制,十六进制4 十进制算术表达式:3*512+7*64+4*8+5的运算结果,用二进制表示为( )A 10111100101 B 11111100101 C 11110100101 D 11111101101二进数在计算机内的表示数值数据是用于表示数量的大小,经常用到数值范围和数据精度。数值范围指的是一种类型的数据所能表示的最大值和最小值;数据精度通常用实数所能指出的有效数字位数来表示。与用多少个二进制位表示某类数据,以及怎么对这些位进行编码有关

27、。机器数与真值计算机中数的符号用数码表示。一般情况下,用0表示正,用1表示负。且符号位放在数的最高位。例:X1=(+1011011)2 真值数X2=(-1011011)20101101111011011机器数 连同符号位在一起作为一个数,称为机器数。而它的数值部分称为真值数。一、 数的定点和浮点表示计算机在处理数据时,要考虑到小数点的位置。如果将小数点固定在某一位置,则称为定点表示;如果小数点可以任意移动,则称为浮点表示。1 数的定点表示法定点小数和定点整数定点小数格式:小数点的位置固定在最高数据位的左边,小数点前面再设一位符号位。任何m位二进制小数在计算机中用m+1位二进制表示。由于小数点总

28、是在符号位与最高数据位之间,因此在计算机中不明确表示出来定点整数格式:小数点位置固定在最低数据位的右边。整数又分为带符号和不带符号的两类。带符号的整数,符号位安排在最高(最左)位。NsNn-1Nn-2N1N0符号位 n位数值 小数点由于小数点固定在最低数据右边,因此在计算机中不明确表示出来。n位带符号整数N=NsNn-1Nn-2N1N0在计算机中用n+1位二进制表示。对于不带符号的整数,把所有n+1位二进制位全部视为数值。在不同计算机中,使用多种位数的整数。16位,32位,64位,64位二进制来表示一个整数。2 数的浮点表示法浮点数是指小数点数据中的位置可以左右移动的数。一个数N要用浮点数表示

29、可以写:N=M*REM:浮点数的尾数。E:浮点数的指数或阶码。R:浮点数的基数,是常数一般取2、8或16一旦机器的浮点部件设计好了,基数的大小也就确定了,不能再改变了,基数在浮点数表示中不出现,是隐含的。浮点数的表示方法:EsEmE2E1MsMnM2M1 阶符 阶码 数符 数码M:尾数。用定点小数表示,表示浮点数的有效位,其位数 n的大小决定了浮点数的精度。E:阶码。用定点整数表示。阶码用于表示小数点在浮点数中的位置。其位数m的大小反映此浮点数所能表示的数的范围。浮点数的规格化:规定计算机内浮点数的尾数用纯小数形式给出,而且当尾数的值不为0时,其绝对值应大于或等于0.5,不符合这一规定的浮点数要进行规格化。(通过修改阶码的大小并同时左右移尾数的办法使其满足要求。)正数:1/2S1,二进制表示S=0.1 负数:-1/2S-1,二进制表示S=1.1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1