信息学奥赛培训教程C++版

信息学奥赛培训教程C++版
信息学奥赛培训教程C++版

目录

青少年信息学奥林匹克竞赛情况简介 (5)

第一章计算机基础知识 (7)

1.1 计算机的基本常识 (7)

1.1.1 计算机的产生与发展 (7)

1.1.2 计算机系统及工作原理 (7)

1.1.3 计算机中有关数及编码的知识 (8)

1.1.4 原码、反码与补码 (10)

1.1.5 逻辑运算 (10)

1.2 操作系统 (11)

1.2.1 DOS(Disk Operating System)的组成 (11)

1.2.2 DOS的文件和目录 (11)

1.2.3 DOS命令 (12)

1.2.4 Windows简介 (12)

1.3 计算机网络常识 (13)

1.3.1 网络基础知识 (13)

1.3.2 Internet简介 (14)

1.4 计算机信息安全基础知识 (16)

1.4.1 计算机的网络安全 (16)

1.4.2 计算机病毒 (17)

1.4.3 病毒的分类 (17)

第2章C++编程简介 (19)

2.1 机器语言、汇编语言和高级语言 (19)

2.2 C语言与C++的历史 (20)

2.3 C++标准库 (20)

2.4 结构化编程 (21)

2.5 简单程序 (22)

2.6 简单程序:两个整数相加 (25)

2.7 算术运算 (27)

2.8 判断:相等与关系运算符 (29)

2.9 新型头文件与名字空间 (31)

第3章 C++输入/输出流 (33)

3.1 简介 (33)

3.2 流 (33)

3.2.1 iostream类库的头文件 (34)

3.2.2 输入/输出流类和对象 (34)

3.3 输出流 (35)

3.3.1 流插入运算符 (35)

3.3.2 连续使用流插入/流读取运算符 (37)

3.3.3 输出char*类型的变量 (37)

3.3.4 用成员函数put输出字符和put函数的连续调 (38)

3. 4 输入流 (39)

3.4.1 流读取运算符 (39)

3.4.2 成员函数get和getline (41)

3.5 成员函数read、gcount和write的无格式输入/输出 (44)

3.6 流操纵算子 (45)

3.6.1 整数流的基数:流操纵算子dec、oct、hex和setbase (45)

3.6.2 设置浮点数精度(precision、setprecision) (46)

3.6.3 设置域宽(setw、width) (47)

3.6.4 用户自定义的流操纵算子 (48)

3.7 流格式状态 (49)

3.7.1 格式状态标志 (50)

3.7.2 尾数零和十进制小数点(ios::showpoint) (50)

3.7.3 对齐(ios::left、ios::right、ios::internal) (51)

3.7.4 设置填充字符(fill、setfill) (53)

3.7.5 整数流的基数:(ios::dec、ios::oct、ios::hex、ios::showbase) (54)

3.7.6 浮点数和科学记数法(ios::scientific、ios::fixed) (55)

3.7.7 大/小写控制(ios::upercase) (56)

3.7.8 设置及清除格式标志(flags、setiosflags、resetosflags) (57)

3.8 流错误状态 (58)

第4章文件处理 (61)

4.1 简介 (61)

4.2 文件和流 (61)

4.3 建立并写入文件 (61)

4.4 读取文件中的数据 (65)

4.5 更新访问文件 (67)

第5章 C++的字符串流 (68)

5.1 流的继承关系 (68)

5.2 字串流的输入操作 (68)

5.3 字串流的输出操作 (69)

5.4 字串流在数据类型转换中的应用 (70)

5.5 输入/输出的状态标志 (71)

第6章控制结构 (74)

6.1 简介 (74)

6.2 算法 (74)

6.3 控制结构 (74)

6.4 if选择结构 (75)

6.5 if/else选择结构 (76)

6.7 构造算法:实例研究1(计数器控制重复) (78)

6.8 构造算法与自上而下逐步完善:实例研究2(标记控制重复) (80)

6.9 构造算法与自上而下逐步完善:实例研究3(嵌套控制结构) (85)

6.10 赋值运算符 (88)

6.11 自增和自减运算符 (88)

6.12 计数器控制循环的要点 (91)

6.13 for重复结构 (92)

6.14 for结构使用举例 (94)

6.15 switch多项选择结构 (97)

6.16 do/while重复结构 (101)

6.17 break和continue语句 (102)

6.18 逻辑运算符 (104)

6.19 混淆相等(==)与赋值(=)运算符 (105)

6.20 结构化编程小结 (106)

第7章函数 (108)

7.1 简介 (108)

7.2 数学函数库 (108)

7.3 函数 (109)

7.4 函数定义 (109)

7.5 头文件 (112)

7.6 作用域规则 (113)

7.7 递归 (116)

7.8 使用递归举例,Fibonacci数列 (118)

7.9 递归与迭代 (120)

7.10 带空参数表的函数 (121)

7.11 内联函数 (122)

7.12 函数重载 (123)

第8章数组 (125)

8.1 简介 (125)

8.2 数组 (125)

8.3 声明数组 (126)

8.4 使用数组的举例 (126)

8.5 将数组传递给函数 (137)

8.6 排序数组 (141)

8.7 查找数组:线性查找与折半查找 (142)

8.8 多维数组 (147)

第9章指针与字符串 (153)

9.1 简介 (153)

9.2 指针变量的声明与初始化 (153)

9.3 指针运算符 (154)

9.5 指针与常量限定符 (158)

9.6 按引用调用的冒泡排序 (163)

9.7 指针表达式与指针算法 (167)

9.8 指针与数组的关系 (169)

9.9 指针数组 (173)

9.10 函数指针 (173)

9.11 字符与字符串处理简介 (177)

9.11.1 字符与字符串基础 (177)

9.11.2 字符串处理库的字符串操作函数 (179)

第10章信息学奥赛中的常用算法 (185)

10.1 算法简介 (185)

10.2 枚举算法 (187)

10.3 回溯算法 (191)

10.4 递归算法 (193)

10.5 递推算法 (196)

10.6 分治算法 (200)

10.7 贪心算法 (202)

10.8 搜索算法一(深度优先) (205)

10.9 搜索算法二(广度优先) (209)

10.10 动态规划法 (212)

10.11 高精度计算 (215)

附录 (228)

ASCII表 (228)

青少年信息学奥林匹克竞赛情况简介

信息学奥林匹克竞赛是一项旨在推动计算机普及的学科竞赛活动,重在培养学生能力,使得有潜质有才华的学生在竞赛活动中锻炼和发展。近年来,信息学竞赛活动组织逐步趋于规范和完善,基本上形成了“地级市——省(直辖市)——全国——国际”四级相互接轨的竞赛网络。现把有关赛事情况简介如下:

全国青少年信息学(计算机)奥林匹克分区联赛:

在举办1995年NOI活动之前,为了扩大普及的面,并考虑到多数省、直辖市、自治区已经开展了多年省级竞赛,举办了首届全国青少年信息学(计算机)奥林匹克分区联赛。考虑到不同年级学生的知识层次,也为了鼓励更多的学生积极参与,竞赛设提高组、普及组,并分初、复赛进行,这样可以形成一个梯队,确保每年的竞赛活动有比较广泛扎实的基础。

从1995年起,至2001年共举办了七届全国青少年信息学奥林匹克分区联赛,每年举办一次(下半年十月左右),有选手个人奖项(省、国家级)、选手等级证书、优秀参赛学校奖项。

安徽省青少年信息学(计算机)奥林匹克复决赛(简称AHOI):

省级信息学奥赛是一个水平较高的、有较大影响力的学科竞赛。由各市组织代表队参赛,参赛名额实行动态分配制度,每年举办一次(上半年五月左右)。从1984年起安徽省奥林匹克竞赛活动得到了蓬勃发展。奖项有个人一、二、三等奖,女选手第一、二、三名,奖励学校团体总分1-8名、市团体总分1-8名。

全国青少年信息学(计算机)奥林匹克竞赛(简称NOI):

由中国算机学会主办的、并与国际信息学奥林匹克接轨的一项全国性青少年学科竞赛活动。1984年举办首届全国计算机竞赛。由各省市组织参赛,每年举办一次。奖项有个人一、二、三等奖,女选手第一、二、三名,各省队团体总分名次排队。

国际青少年信息学(计算机)奥林匹克竞赛(简称IOI):

每年举办一次,由各参赛国家组队参赛。

全国青少年信息学(计算机)奥林匹克分区联赛竞赛大纲

二、复赛内容与要求:

在初赛的内容上增加以下内容(2008年修改稿):

三、初赛试题类型:注:试题语言两者选一

(程序设计语言:FREE PASCAL、C、C++)

*判断*填空*完善程序*读程序写运行结果*问答

四、推荐读物:

*分区联赛辅导丛书*学生计算机世界报及少年电世界杂志

第一章计算机基础知识

1.1 计算机的基本常识

1.1.1 计算机的产生与发展

计算机的产生是20世纪最重要的科学技术大事件之一。世界上的第一台计算机(ENIAC)于1946年诞生在美国宾夕法尼亚大学,到目前为止,计算机的发展大致经历了四代:

①第一代电子管计算机,始于1946年,结构上以CPU为中心,使用计算机语言,速度慢,存储量小,主要用于数值计算;

②第二代晶体管计算机,始于1958年,结构上以存储器为中心,使用高级语言,应用范围扩大到数据处理和工业控制;

③第三代中小规模集成电路计算机,始于1964年,结构上仍以存储器为中心,增加了多种外部设备,软件得到了一定的发展,文字图象处理功能加强;

④第四代大规模和超大规模集成电路计算机,始于1971年,应用更广泛,很多核心部件可集成在一个或多个芯片上,从而出现了微型计算机。

我国从1956年开始电子计算机的科研和教学工作,1983年研制成功1亿/秒运算速度的“银河”巨型计算机,1992年11月研制成功10亿/秒运算速度的“银河II”巨型计算机,1997年研制了每秒130亿运算速度的“银河III”巨型计算机。

目前计算机的发展向微型化和巨型化、多媒体化和网络化方向发展。计算机的通信产业已经成为新型的高科技产业。计算机网络的出现,改变了人们的工作方式、学习方式、思维方式和生活方式。

1.1.2 计算机系统及工作原理

1.计算机的系统组成

计算机系统由软件和硬件两部分组成。硬件即构成计算机的电子元器件;软件即程序和有关文档资料。

(1) 计算机的主要硬件

输入设备:键盘、鼠标、扫描仪等。

输出设备:显示器、打印机、绘图仪等。

中央处理器(CPU):包括控制器和运算器运算器,可以进行算术运算和逻辑运算;控制器是计算机的指挥系统,它的操作过程是取指令——分析指令——执行指令。

存储器:具有记忆功能的物理器件,用于存储信息。存储器分为内存和外存

①内存是半导体存储器(主存):

它分为只读存储器(ROM)和随机存储器(RAM)和高速缓冲存储器(Cache);

ROM:只能读,不能用普通方法写入,通常由厂家生产时写入,写入后数据不容易丢失,也可以用特殊方法(如紫外线擦除(EPROM)或电擦除(EEPROM_)存储器);

RAM:可读可写,断电后内容全部丢失;

Cache:因为CPU读写RAM的时间需要等待,为了减少等待时间,在RAM和CPU间需要设置

高速缓存Cache,断电后其内容丢失。

②外存:磁性存储器——软盘和硬盘;光电存储器——光盘,它们可以作为永久存器;

③存储器的两个重要技术指标:存取速度和存储容量。内存的存取速度最快(与CPU速度相匹配),软盘存取速度最慢。存储容量是指存储的信息量,它用字节(Byte)作为基本单位,

1字节用8位二进制数表示,1KB=1024B,1MB=1024KB,lGB=1024MB

(2)计算机的软件

计算机的软件主要分为系统软件和应用软件两类:

①系统软件:为了使用和管理计算机的软件,主要有操作系统软件如,WINDOWS 95/98/2000/NT4.0、DOS 6.0、UNIX等;WINDOWS 95/98/2000/NT4.0是多任务可视化图形界面,而DOS是字符命令形式的单任务的操作系统。

②应用软件:为了某个应用目的而编写的软件,主要有辅助教学软件(CAI)、辅助设计软件(CAD)、文字处理软件、工具软件以及其他的应用软件。

2.计算机的工作原理

到目前为止,电子计算机的工作原理均采用冯.若依曼的存储程序方式,即把程序存储在计算机内,由计算机自动存取指令(计算机可执行的命令=操作码+操作数)并执行它。工作原理图如下:

1.1.3 计算机中有关数及编码的知识

1.计算机是智能化的电器设备

计算机就其本身来说是一个电器设备,为了能够快速存储、处理、传递信息,其内部采用了大量的电子元件,在这些电子元件中,电路的通和断、电压高低,这两种状态最容易实现,也最稳定、也最容易实现对电路本身的控制。我们将计算机所能表示这样的状态,用0,1来表示、即用二进制数表示计算机内部的所有运算和操作。

2.二进制数的运算法则

二进制数运算非常简单,计算机很容易实现,其主要法则是:

0+0=0 0+1=1 1+0=1 1+1=0 0*0=0 0*1=0 1*0=0 1*1=1

由于运算简单,电器元件容易实现,所以计算机内部都用二进制编码进行数据的传送和计算。

3.十进制与二进制、八进制、十六进制数之间的相互转换

(1)数的进制与基数

计数的进制不同,则它们的基数也不相同,如表1-1所示。

(2)数的权

不同进制的数,基数不同,每位上代表的值的大小(权)也不相同。

如:(219)10=2*102+1*101+9*100

(11010)2=1*24+1*23+0*22+1*21+1*20

(273)8=2*82+7*81+3*80

(27AF)16=2*163+7*162+10*161+15*160

(3)十进制数转换任意进制

1) 将十进制整数除以所定的进制数,取余逆序。

(39)10=(100111)2 (245)10=(365)8

2)将十进制小数的小数部分乘以进制数取整,作为转换后的小数部分,直到为零或精确到小数点后几位。

如:(0.35)10=(0.01011)2 (0.125)10=(0.001)2

(4)任意进制的数转换十进制

按权值展开:

如:(219)10=2*102+1*101+9*100

(11010)2=1*24+1*23+0*22+1*21+1*20=26

(273)8=2*82+7*81+3*80=187

(7AF)16=7*162+10*161+15*160=1867

4.定点数与浮点数

定点数是指数据中的小数点位置固定不变。由于它受到字长范围的限制,所能表示的数的范围有限,计算结果容易溢出。

,E代表阶码)其形式如下:

5.ASCII编码

由于计算机是电器设备,计算机内部用二进制数,这样对于从外部输入给计算机的所有信息必须用二进制数表示,并且对于各种命令、字符等都需要转换二进制数,这样就牵涉到信息符号转换成二进制数所采用的编码的问题,国际上统一用美国标准信息编码(ASCII)它可用7位二进制数表示,存储时用一个字节,它的最高位为0。因此基本的ASCII字符集有128个如:

0-9:48-57:00110000-...

A-Z:65-90 :01000001-...

a-z:97-122:01100000-...

6.汉字编码与汉字输入法

(1)机内码

ASCII码不能表示汉字,因此要有汉字信息交换码,我国国家标准是gb2312,它也被称作国际码。

它由两个字节组成,两个字节的最高位都为1。gb2312共收纳6763个汉字,其中,一级汉字(常用字)3755个按汉字拼音字母顺序排列,二级汉字3008个按部首笔画次序排列。

(2)汉字输入码(外码)

目前,汉字输入法主要有键盘输入、文字识别和语音识别。键盘输入法是当前汉字输入的主要方法。它大体可以分为:

流水码:如区位码、电报码、通信密码,优点重码律少,缺点难于记忆;

音码:以汉语拼音为基准输入汉字,优点是容易掌握,但重码律高;

形码:根据汉字的字型进行编码,优点重码少,但不容易掌握;

音形码:将音码和形码结合起来,能减少重码律同时提高汉字输入速度。

(3)汉字字模

供计算机输出汉字(显示和打印)用的二进制信息叫汉字字形信息也称字模。通用汉字字模点阵规格有16*16,24*24,32*32,48*48,64*64,每个点在存储器中用一个二进制位((bit)存储,如一个16*16点阵汉字需要32个字节的存储空间。

1.1.4 原码、反码与补码

在计算机中,数据是以补码的形式存储的:

在n位的机器数中,最高位为符号位,该位为零表示为正,为1表示为负;

其余n-1位为数值位,各位的值可为0或1。

当真值为正时:原码、反码、补码数值位完全相同;

当真值为负时:

原码的数值位保持原样,

反码的数值位是原码数值位的各位取反,

补码则是反码的最低位加一。

注意符号位不变。

如:若机器数是16位:

十进制数17 的原码、反码与补码均为:0000000000010001

十进制数-17 的原码、反码与补码分别为:1000000000010001、1111111111101110、1111111111101111

1.1.5 逻辑运算

1.逻辑运算

逻辑与:同真则真

逻辑或:有真就真

逻辑非:你真我假

逻辑异或:不同则真

2.按位运算

按位与∩:同1则1 如10010101∩10110111=10010101

按位或∪:有1则1 如10010101∪10110111=10110111

3.逻辑化简

化简定律:

(1)交换律:A + B = B + A ,A·B = B·A

(2)结合律:(A + B)+ C = A + (B + C ),(A·B)·C = A·(B·C)

(3)幂等律:A·A = A ,A + A = A

(4)吸收律:A·(A + B )= A ,A +(A·B)= A

(5)分配律:A·(B + C )= A·B + A·C , A +(B·C)=(A + B)·(A + C)

(6)互补律:A + A = 1 ,A·A = 0

(7)非深入:A + B = A·B,A·B = A +B

(8)0-1律:A + 0 = A ,A + 1 = 1 ,A·1 = A ,A·0 = 0

例:化简函数Q = AD + AD + AB + ACEF。这个函数有5个自变量,化简过程如下:Q = AD + AD + AB + ACEF

= A + AB + ACEF

= A + ACEF

= A

练习:求证:(A+B)(A+C)=AB+AC

1.2 操作系统

1.2.1 DOS(Disk Operating System)的组成

MS—DOS采用模块结构,它由五部分组成:ROM中的BIOS模块、IO.SYS模块、MSDOS.SYS模块、COMMAND.COM模块和引导程序。

(1)BIOS模块:在PC机主板上有一个ROM芯片,该芯片中存有系统自测试程序,

CMOS设置程序和基本输入输出程序(BIOS)。BIOS是一组程序和参

表,其中程序部份是可以通过中断方式调用的一组驱动程序,参数

给出外设的地址和参数。BIOS是计算机硬件和操作系统之间的接口

通过它操作系统管理计算机硬件资源。

(2)IO.SYS模块:IO.SYS是MS—DOS和ROMBIOS之间的接口程序。它和RON

BIOS一起完成系统设备的管理。

(3)MSDOS.SYS模块:MSDOS.SYS用于实现文件管理,包括文件管理、目录管理、内存管理等功能。它以功能调用的形式实现用户和MS—DOS之间的程序级接口。

(4)COMMAND.COM模块:COMMAND.COM的主要功能是负责接收、识别、解释和执行用户从键盘输入的MS—DOS命令。

(5)引导程序:引导程序又叫“引导记录”,其作用是检查当前盘上是否有两个系统文件,若有系统文件则把DOS系统从磁盘装人内存。一张系统盘上应该包含有:引导记录、IO.SYS、MSDOS.SYS和COMMAND.COM等模块。

1.2.2 DOS的文件和目录

1)文件概念:文件是指记录在存储介质(如磁盘、光盘)上的一组相关信息的集合。

2)文件标识:驱动器号+路径+文件名(1到8各字符)+扩展名(1到3个字符代表文件的类型)

3)通配符:*代表从该位置起的一个或多个合法字符;?代表所在位置的任一个合法字符。

4)树形目录:DOS采用树形目录结构。由一个根目录和若干层子目录组成。这种目

录结构一是能够解决文件重名问题,即不同的目录可以包含相同的文件名或目录名;二是能够解决文件多而根目录容量有限带来的问题。在查找某个子目录下的一个文件时,要使用目录路径。指定路径有两种方法:绝对路径和相对路径。绝对路径是从根目录开始到文件所在目录的路径。

例如要查找UCDOS子目录下的二级子目录DA TA下的README.TXT文件,绝对路径为:\UCDOS\DATA。路径中第一个“\”符号代表根目录。相对路径是从当前目录开始到文件所在目录的路径。当前目录指在不特意指定路径情况下DOS命令所处理的目录。例如系统提示符为:“C:\UCDOS\DA TA>”,则DATA是当前目录。

1.2.3 DOS命令

1.内部命令

1)内部命令:当启动DOS系统时,计算机引导程序将系统以及常用的命令处理模块驻留

在计算机的内存中,我们称之为内部命令。

2)常用的内部命令:

(1)目录命令:

DIR(显示文件目录)

MD、CD、RD(子目录的建立、进入、删除命令)

(2)文件操作命令:

COPY(复制命令)、DEL(删除命令)、REN(更改文件名)

TYPE(显示文本文件内容)

(3)其他内部命令

DATA、TIME、VER、CLS等·

2.外部命令

1)外部命令:存储在外存储器上的DOS可执行的文件,这些文件程序所占的存储容量比较大,当用户使用外部命令时,计算机从外存调入内存,当执行完外部命令,就自动从内存中退出。

2)常用的外部命令

(1)磁盘格式化命令:FORMAT 盘符[/S)I/V]

其作用,能够清除原盘中所有信息,并将磁盘规范成计算机所能接受的格式,以便有效存储信息。

(2)软盘复制命令:DISKCOPY [盘符1:][盘符2:]

其作用,能够进行软盘之间的全盘复制(以磁道方式),不仅可以复制系统文件而且可以

复制隐含文件。

1.2.4 Windows简介

Windows是一个多任务图形用户界面,该环境可以在基于MS-DOS的计算机上运行,在多任务图形用户环境下,Windows提供了一个基于下拉菜单、屏幕窗口和鼠标的界面,在该环境下运行的应用程序必须进行专门的设计才能发挥这些特征的优点。

1.Windows的特点

Windows能够充分发挥计算机的作用,其图形接口能够组织用户程序和文件、同时运行几个用户程序、在文档之间移动和复制信息、在平台上进行应用程序的切换等。为了提高效率,Windows 还提供了一些辅助程序,如字处理器、画笔及其他标准应用程序等。

Windows具有以下主要特点。

(1)图形化的用户界面

Windows提供了一种不同于DOS系统下命令行的工作方式,它通过对窗口、图标、选单、对话框、命令按钮、滚动框等图形符号与画面的操作来实现对计算机的各种操作。

(2)标准化的操作界面

在Windows中,所有的操作都是通过窗口中的图形界面进行的。

(3)多任务机制和执行性能

在Windows中,平稳的多任务机制可以同时运行多道程序以及执行多项任务,各程序与各任务之间不仅转换容易,而且还可以方便地交换数据。

(4)充分利用内存

Winddws利用虚拟内存技术,允许应用程序超过640阳常规内存的运行空间,从而最大限度地利用了计算机系统的所有内存资源,从而使内存较小的微机也能运行大型的应用程序。

(5)强大的联网功能

在Windows中,可以简单直观地实现网络的安装、配置、浏览,从而可以更加方便地实现网络管理和资源共享。

(6)丰富的多媒体功能

Windows提供大量辅助程序,用以实现文字、图形、图像、声音、视频等多媒体功能,同时还支持其他厂商基于Windows标准开发的各种相应软件。

(7)TryType技术

TryType(真实字体)属于内建式比例字体,可以任意平滑放大与缩小。这种字体能使屏幕上显示的效果与实际打印机输出的信息完全一致,这就是所谓的“所见即所得”。

[例]在Windows 95中,“任务栏”的作用是____。

A)显示系统的所有功能B)只显示当前活动窗口名

C)只显示正在后台工作的窗口名D)实现窗口之间的切换

解答:在任务栏中,显示了所有打开的程序的图标。

本题正确答案为D。

1.3 计算机网络常识

1.3.1 网络基础知识

1.网络的概念

计算机网络是将地理位置不同的计算机,用通信链路连接起来,共同遵守一定的协议,以实现计算机软硬件资源共享为目标的通信系统。

2.网络的组成

计算机网络由网络硬件和网络软件组成。

网络软件包括网络操作系统、通信软件、通信协议(计算机之间实现数据通信共同遵守的相关规定)。

网络硬件包括网络的拓扑结构、网络服务器、网络工作站、传输介质和设备。

3.网络的分类

(1)按通信距离分:

局域网(LAN):局限于某个范围(10公里左右)的网络连接情(校园网)。

广域网(W AN):跨地区的局域网,Internet是覆盖全球的广域网。

(2)按网络的使用目的分:

共享资源网:使用者可分享网络的各种资源(如Internet)。

数据处理网:用于数据处理(企业经营管理用的网络)。

数据传输网:用于数据的收集、交换和传输(情报检索网络)。

(3)按网络的拓扑结构分:

星形网:以一台计算机为中心,以放射状连接若干台计算机。

环形网:传输线路构成一个封闭的环,入网的计算机连到这个环形线路上。

总线网:用一条通信线路作主干,入网的计算机通过相应接口连到线路上。

4. 开放系统互联模型 (OSI模型)

OSI模型分7层:

各层功能如下:

1.物理层

物理层与移动二进制数和维护物理连接有关。

2.数据链路层

数据链路层通过帧在一个给定的物理链路传输分组(报文),保持帧的有序以及发现检测到的各种错误,包括传输错误,但是数据链路层只了解在链路另一端的对等实体。数据链路层的地址是为了将网络中一点的数据帧送到另一点。

3.网络层

网络层知道每个数据链路的对等进程,并负责在链路间移动分组,把它送到目的地。网络层地址是为了把单一分组从网络的一端送到目的地。

4.传输层

传输层注意的是整个网络,该层是第一个端到端层。其对等实体位于分组的最终目的地。传输层依靠网络层经过中间节点移动分组。传输层地址是为了把网络一端进程的完整信息送到最终目的地的对等进程。

5-7.会话层、表示层和应用层提供了如下功能:

处理计算机间数据表示的差别。

确保数据在网络传输中不被窃取和泄露,并且确保网络不允许未经授权就访问数据。

最高效地使用网络资源通过应用程序及活动同步来管理对话和活动。

在网络节点间共享数据。

1.3.2 Internet简介

Internet英文直译为“互联网”,中文名为“因特网”。是世界上众多计算机网络的集合起源于20世纪80年代。

1.Internet的IP地址、IP地址类型和主机域名

(1)在Internet网上采用统一的网络协议TCP/IP,与Internet相连的计算机必须具有唯一的主机地址,称IP地址。IP地址采用分段地址方式,使用数字表示;如:207.46.130.14,其中由三个

点隔开的四个数是十进制,其大小是0-255,每个数对应一个8位二进制数,所以IP地址用32位二进制位存放站4个字节。

(2)IP地址类型:最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。

A类IP地址

一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从 1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。

B类IP地址

一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机。

C类IP地址

一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。

D类地址用于多点广播(Multicast)。

D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

E类IP地址

以“llll0”开始,为将来使用保留。

全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:

A类地址:10.0.0.0~10.255.255.255

B类地址:172.16.0.0~172.31.255.255

C类地址:192.168.0.0~192.168.255.255

(3)为了使用方便,在访问Internet上的主机时,通常使用主机域名而不是IP地址,但主机域名和IP地址一一对应,它由圆点分隔的一序列单词组成如“https://www.360docs.net/doc/b35016468.html,"。

IP地址如同电脑的身份证号码,而域名相当电脑的姓名。

2.Internet的功能

(1)信息浏览(WWW)

WWW(World Wide Web),中文名为”万维网“,是基于超文本的、方便用户信息浏览和信息搜索的信息服务系统。用户在浏览器中输入网址即可得到需要的信息。人们常用的浏览器有网景公司的Netscape浏览器和Microsoft公司的Internet Explorer浏览器。网址的输入是使用协议提供的服务+服务器地址(IP地址或主机域名)如http://198.105.232.1;

ftp://https://www.360docs.net/doc/b35016468.html,

(2)文件传输(FTP)

FTP(File Transfer Protocol)是Internet的一种标准协议,这一协议使用户能在联网的计算机之间传送文件如上载(UPLOAD把本地计算机上地文件复制到远程计算机上)和下载(DOWNLOAD 把远程计算机上的文件复制到本地计算机上)。

(3)传送电子邮件(E-mail)

电子邮件地址=用户名+@+主机域名;如:zhangming@https://www.360docs.net/doc/b35016468.html,

(4)电子公告牌(BBS)

(5)远程登录(telnet)

(6)电子商务等

3.TCP/IP参考模型

TCP/IP协议的开发研制人员将Internet分为五个层次,以便于理解,它也称为互联网分层模型或互联网分层参考模型,如下表:

应用层(第五层)

传输层(第四层)

互联网层(第三层)

网络接口层(第二层)

物理层(第一层)

各层简要说明如下:

物理层:对应于网络的基本硬件,这也是Internet物理构成,即我们可以看得见的硬件设备,如PC机、互连网服务器、网络设备等,必须对这些硬件设备的电气特性作一个规范,使这些设备都能够互相连接并兼容使用。

网络接口层:它定义了将数据组成正确帧的规程和在网络中传输帧的规程,帧是指一串数据,它是数据在网络中传输的单位。

互联网层:本层定义了互联网中传输的“信息包”格式,以及从一个用户通过一个或多个路由器到最终目标的""信息包""转发机制。

传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。

应用层:它定义了应用程序使用互联网的规程。

1.4 计算机信息安全基础知识

1.4.1 计算机的网络安全

1、不同环境和应用中的网络安全

运行系统安全,即保证信息处理和传输系统的安全。它侧重于保证系统正常运行,避免因为系统的崩溃和损坏而对系统存贮、处理和传输的信息造成破坏和损失,避免由于电磁泄漏,产生信息泄露,干扰他人,受他人干扰。

网络上系统信息的安全。包括用户口令鉴别,用户存取权限控制,数据存取权限、方式控制,安全审计,安全问题跟踪,计算机病毒防治,数据加密。

网络上信息传播安全,即信息传播后果的安全。包括信息过滤等。它侧重于防止和控制非法、有害的信息进行传播后的后果。避免公用网络上大量自由传输的信息失控。

网络上信息内容的安全。它侧重于保护信息的保密性、真实性和完整性。避免攻击者利用系统的安全漏洞进行窃听、冒充、诈骗等有损于合法用户的行为。本质上是保护用户的利益和隐私。网络安全的特征

2、网络安全应具有以下四个方面的特征:

保密性:信息不泄露给非授权用户、实体或过程,或供其利用的特性。

完整性:数据未经授权不能进行改变的特性。即信息在存储或传输过程中保持不被修改、不被破坏和丢失的特性。

可用性:可被授权实体访问并按需求使用的特性。即当需要时能否存取所需的信息。例如网络环境下拒绝服务、破坏网络和有关系统的正常运行等都属于对可用性的攻击;

可控性:对信息的传播及内容具有控制能力。

3、主要的网络安全威胁

自然灾害、意外事故;

计算机犯罪;

人为行为,比如使用不当,安全意识差等;

“黑客”行为:由于黑客的入侵或侵扰,比如非法访问、拒绝服务计算机病毒、非法连接等;

内部泄密;

外部泄密;

信息丢失;

电子谍报,比如信息流量分析、信息窃取等;

信息战;

网络协议中的缺陷,例如TCP/IP协议的安全问题等等。

4、黑客常用的信息收集工具

信息收集是突破网络系统的第一步。黑客可以使用下面几种工具来收集所需信息:

SNMP协议,用来查阅非安全路由器的路由表,从而了解目标机构网络拓扑的内部细节。TraceRoute程序,得出到达目标主机所经过的网络数和路由器数。

Whois协议,它是一种信息服务,能够提供有关所有DNS域和负责各个域的系统管理员数据。(不过这些数据常常是过时的)。

DNS服务器,可以访问主机的IP地址表和它们对应的主机名。

Finger协议,能够提供特定主机上用户们的详细信息(注册名、电话号码、最后一次注册的时间等)。

Ping实用程序,可以用来确定一个指定的主机的位置并确定其是否可达。把这个简单的工具用在扫描程序中,可以Ping网络上每个可能的主机地址,从而可以构造出实际驻留在网络上的主机清单。

1.4.2 计算机病毒

计算机病毒是一种程序,是人为设计的具有破坏性的程序。

计算机病毒具有破坏性、传播性、可激发性、潜伏性、隐蔽性等特点。

1.4.3 病毒的分类

(1)按病毒设计者的意图和破坏性大小,可将计算机病毒分为良性病毒和恶性病毒。

①良性病毒:这种病毒的目的不是为了破坏计算机系统,而只是为了编制者表现自己。此类病毒破坏性较小,只是造成系统运行速度降低,干扰用户正常工作。

②恶性病毒:这类病毒的目的是人为的破坏计算机系统的数据。具有明显破坏目标,其破坏和危害性都很大,可能删除文件或对硬盘进行非法的格式化。

(2)计算机病毒按照寄生方式可以分为下列四类:

①源码病毒:在源程序被编译之前,就插入到用高级语言编写的源程序当中。编写这种病毒程序较困难。但是,一旦插入,其破坏性和危害性都很大。

②入侵病毒:是把病毒程序的一部分插入到主程序中。这种病毒程序也难编写,一旦入侵,

难以清除。

②操作系统病毒:是把病毒程序加入或替代部分操作系统进行工作的病毒。这种病毒攻击力强、常见、破坏性和危害性最大。

④外壳病毒:是把病毒程序置放在主程序周围,一般不修改源程序的一种病毒。它大多是感染DOS下的可执行程序。这种病毒占一半以上,易编制,也易于检测和消除。

在日常维护中应隔离计算机病毒的来源,经常要用杀毒软件检查计算机系统和存储器。

[例]设一张软盘已染上病毒,能清除病毒的措施是____。

A)删除该软盘上的所有文件

B)格式化该软盘

C)删除该软盘上的所有可执行文件

D)删除该软盘上的所有批处理文件

解答:软盘染毒后,病毒隐藏在磁盘内部,并感染磁盘上的文件,而且可能通过磁盘的使用进而扩散到其他磁盘,造成更大的破坏。为了清除病毒,必须格式化软盘,从而彻底清除染毒文件和病毒本身。

本题正确答案为B。

第2章C++编程简介

2.1 机器语言、汇编语言和高级语言

程序员用各种编程语言编写指令,有些是计算机直接理解的,有些则需要中间翻译(tranlation)的步骤。如今使用的计算机语言有几百种,可以分为三大类:

1.机器语言

2.汇编语言

3.高级语言

任何计算机只能直接理解本身酌机器语言(machine language)。机器语言是特定计算机的自然语言,由计算机的硬件设计定义。机器语言通常由一系列数字组成(最终简化0和1),让计算机一次一个地执行最基本的操作。机器语言非常繁琐,下面的机器语言程序将工龄工资和基础工资相加,并把结果保存在工资总额中:

+1300042774

+1400593419

+1200274027

随着计算机越来越普及,机器语言编程对大多数程序员显然太慢、太繁琐。程序员不用计算机直接理解的一系列数字,而是用类似英文缩写的助记将来表示计算机的基本操作,这些助记符构成了汇编语言(assembly language)。称为汇编器(assembler)的翻译程序以计算机的速度将汇编语言程序转换为机器语言。下列汇编程序也是工龄工资和基础工资相加,并将结果保存在总工资中,但要比相应的机器语言清晰得多:

LOAD BASEPAY

ADD OVERPAY

STORE GROSSPAY

尽管这种代码对于人们一目了然,但计算机却无法理解,必须先翻译为相应的机器语言。

随着汇编语言的出现,计算机的使用迅速增加,然而即使是最简单的任务.也需要许多条指令才能完成。为了加速编程过程,人们开发了高级语言(high-level language),用一条语句完成大量任务。称为编译器(compiler)的翻译程序将高级语言程序变为相应的机器语言。高级语言使程序员能够编写更像英语的指令,可以包含常用的数学符号。将工龄工资和基础工资相加.并把结果保存在总工资中,可以用下列高级语言程序:

grossPay =basePay + overTimePay

显然,从程序员角度看,高级语言比机器语言和汇编语言都要强得多。C和C++是最强大最广泛使用的高级语言。

将高级语言程序编译为相应的机器语言的过程可能需要大量时间。解释器(interpreter)程序可以直接执行高级语言程序,而不必先将这些程序编译成相应的机器语言。尽管编译程序的执行速度比解释程序更快,但解释器在程序开发环境中更常用,因为增加新特性和纠正错误时经常需要重

新编译程序。一旦程序开发完成,编译版本的运行最有效。

2.2 C语言与C++的历史

C++是从C语言演变而来的,而C语言又是从两个编程语言BCPL和B演变而来的、BCPL 是Martin Richards于1967年开发的,用于编写操作系统软件和编译器。Ken Thompson在他的B 语言(1970年在贝尔实验室)。DCPL和B都是“无类型”语言,每个数据项在内存中占一个“字”(word)长、如果要将数据项作为整数或实数处理,编程的工作量会很大。

C语言是从D语言演变而成的,由贝尔实验室的Dennis Ritchie开发,最初于1972年在DEC PDP—11计算机上实现。C语言使用了BCPL和B的许多重要概念,同时增加了数据类型和其他特性。C语言最初作为UNIX操作系统的开发语言而闻名于世。如今,大多数操作系统都是用C/C++写成的。二十多年来,C语言已经遍布在大多数计算机上。C语言是硬件无关的,只要仔细设计。就可以编写能移植列大多数计算机上的C语言程序。

到20世纪70年代未期,C语言演变成现在所谓的“传统C”、“经典CPP或“Kernighan/RitchieC"。1978年Prentice Hall公司出版了Kernighan和Ritchie合作的著作《The CProgrmmming Language》,引起了人们对C语言的广泛关注(见参考文献Ke78)。

C语言在各种不同类型计算机(有时称为硬件平台)上的普及导致了许多变形。它们虽然相似,但通常互不兼容。对需要为不同平台编写可移植程序的开发人员.这是个严重问题,显然需要有个标准的C语言版本。1983年,美国国家计算机与信息处理标准委员会(x3)成立了x3JII技术分会,目的是提供无歧义性且与机器无关的语言定义。1989年推出了这种语言标准。AN5I与国际标准化组织(IS0)合作.在全球范围内将C语言标淮化,1990年推出了联合标准文档。称为ANSI /IS09899:1990。这个文档可以从ANSI获得副本。1988年推出的Kernighan 和Ritchie著作的第二版体现了该版本(称为ANSI C),这也是目前全世界使用的版本。

C++是C语言的扩展,是20世纪80年代初由贝尔实验室的Bjarne stroustrup开发的。C++的许多特性是从c语言中派生的,但更重要的是,它提供了面向对象编程(object-oriented programming)的功能。

软件业正在酝酿一场革命,最终日标是更快、更正确、更经济地建立软件,新的、更强大的软件需求迫在眉睫。对象(object)实际上是模拟实际项目的可复用软件组件(component)。软件开发人员发现,利用模块化、面t向对象的设计和实现方法与过去结构化编程方法相比较,可以使软件开发小组的生产率更高。面向对象编程的优势在于更容易理解、纠正和修改。

许多面向对象的语言也纷纷涌现,包括最著名的由Xerox的Palo Alto研究中心(PARC)开发的small talk。Smalltalk是纯粹的面向对象的语言,其所有的编程元素都是“对象”。C++则是一种“混合型语言“,可以用C语言方式、面向对象方式或兼用两种方式进行编程。2.9节将介绍基于C/C++的新语言——Java。

2.3 C++标准库

C++程序由类(class)和函数(function)组成。可以用多个小的软件模块构成C++程序,但大多数C++程序员会利用C++标准库中已有的类和函数来编程。这样,C++“世界”中实际要学习两方面的知识,第一是学习C++语言本身,第二是学习如何利用C++标准库中现有的类和函数(本教程将介绍许多类和函数)。Plauger的著作是程序员必读的.可以帮助程序员深入了解C++中包括的ANSI C语言库函数,了解如何实现这些库函数,还可以了解如何用库函数编写可移植代码。标准库函数通常由编译器厂家提供。许多独立软件供应商(indepandent softerware vender)也提供各种专用类库。

信息学奥赛培训计划(复赛)

信息技术学科信息学奥赛社团培训计划 制定人:玄王伟 2018年10月

信息学奥赛培训计划方案推进信息技术教育是全面实施素质教育的需要,是培养具有创新精神和实践能力的新型人才的需要。信息学奥赛的宗旨为:“丰富学生课余生活,提高学生学习兴趣,激发学生创新精神。”为此,我们应以竞赛作为契机进而培养学生综合分析问题、解决问题的意识和技能。 为响应学校号召,积极参与信息技术奥林匹克竞赛,校本课程特别开设C++语言程序设计部分,利用社团活动时间对部分学生进行辅导。教学材料以信息学奥赛一本通训练指导教程为主,力图让学生们对编写程序有较深入了解的同时,能够独立编写解决实际问题的算法,逐步形成解题的思维模式。因学习内容相对中小学学生具有一定的难度,本课程采用讲练结合的形式,紧紧围绕“程序=算法+数据结构”这一核思想,以数学问题激发学生学习兴趣,进而达到学习目标。为更好地保证信息学奥赛的培训效果,特制订本培训计划。 一、培训目标 1.使学生具备参加全国信息学奥林匹克竞赛分区联赛NOIP(初赛、复赛)的能力。 2.使学生养成较好的抽象逻辑推理能力、严谨的思维方式和严密的组织能力,并使学生的综合素质的提高。 3.使学生初步具备分析问题和设计算法的能力。 二、培训对象 我校小学及初中对信息学感兴趣且初赛成绩较好的学生,人数共

计14人,其中小学组12人,普及组2人。 三、培训要求 严格培训纪律,加强学生管理;信息学社团的组建由学生自愿报名、教师考察确定;培训过程中做与培训无关的事如打游戏、上网聊天等,一经发现作未参加培训处理;规定的作业、练习必须按时保质保量完成,否则按未参加培训处理。 四、培训内容 1.深入学习计算机基础知识,包括计算机软硬件系统、网络操作、信息安全等相关知识内容,结合生活实际让学生真正体会到参加信息学奥赛的乐趣。 2.全面学习C++语言的基础知识、学会程序的常用调试手段和技巧,在用C++解决问题的过程中引入基础算法的运用。 3.深入学习各类基础算法,让学生真正理解算法的精髓,遵循“算法+数据结构=程序”的程序设计思想,在算法设计的教学实例中引入数据结构的学习,从而形成一定的分析和解决问题的能力。 4.以实例为基础,展开强化训练,使学生开始具备运用计算机独立解决实际问题的能力。用计算机解决现实问题的最重要的一个前提就是数据模型的建立和数据结构的设计。数据模型的建立、数学公式的应用,是计算机解决问题的关键。因此,加强与数学学科的横向联系非常必要。 五、培训时间 自2018年10月份第三周开始至2018年11月中旬结束,包括每

全国青少年信息学竞赛培训教材 2011-4-19

全国青少年信息竞赛 培训教材 第一章 计算机和计算机语言 101 【问题描述】 求S = 1-2+3-4+……-100 102 【问题描述】 求圆面积程序,写出程序的运行结果。 #include #include char *s = “Let us begin”; int r = 3; double pi = 3.14; main( )

{ printf(“%s\n”, s); printf(“radium is: %d\n”, r); printf(“Arrea of circle is: %lf\n”, pi * r * r); printf(“Arrea of circle is: %10lf\n”, pi * r * r); printf(“Arrea of circle is: %10.3lf\n”, pi * r * r); // system(“pause”); return 0; } 103 【问题描述】 判定2000-2005年中的每一年是否闰年,输出其中所有闰年的年份。请写出程序的运行结果。 【源程序】 #include #include int year; char leap; main( ) { printf("The following are leap years:\n"); for (year = 2000; year <= 2500; ++year) { leap = 0; if (year % 4 == 0) if (year % 100 != 0) leap = 1; else if (year % 400 == 0) leap = 1; if ( leap ) printf("%d ", year); } // system("pause"); return 0; }

(完整)信息学奥赛(NOIP)必看经典书目汇总,推荐文档

信息学奥赛(NOIP)必看经典书目汇总! 小编整理汇总了一下大神们极力推荐的复习资料!(欢迎大家查漏补缺) 基础篇 1、《全国青少年信息学奥林匹克分区联赛初赛培训教材》(推荐指数:4颗星) 曹文,吴涛编著,知识点大杂烩,部分内容由学生撰写,但是对初赛知识点的覆盖还是做得相当不错的。语言是pascal的。 2、谭浩强老先生写的《C语言程序设计(第三版)》(推荐指数:5颗星) 针对零基础学C语言的筒子,这本书是必推的。 3、《骗分导论》(推荐指数:5颗星) 参加NOIP必看之经典 4、《全国信息学奥林匹克联赛培训教程(一)》(推荐指数:5颗星) 传说中的黄书。吴文虎,王建德著,系统地介绍了计算机的基础知识和利用Pascal语言进行程序设计的方法 5、《全国青少年信息学奥林匹克联赛模拟训练试卷精选》 王建德著,传说中的红书。 6、《算法竞赛入门经典》(推荐指数:5颗星) 刘汝佳著,算法必看经典。 7、《算法竞赛入门经典:训练指南》(推荐指数:5颗星) 刘汝佳著,《算法竞赛入门经典》的重要补充 提高篇 1、《算法导论》(推荐指数:5颗星) 这是OI学习的必备教材。

2、《算法艺术与信息学竞赛》(推荐指数:5颗星) 刘汝佳著,传说中的黑书。 3、《学习指导》(推荐指数:5颗星) 刘汝佳著,《算法艺术与信息学竞赛》的辅导书。(PS:仅可在网上搜到,格式为PDF)。 4、《奥赛经典》(推荐指数:5颗星) 有难度,但是很厚重。 5、《2016版高中信息学竞赛历年真题解析红宝书》(推荐指数:5颗星) 历年真题,这是绝对不能遗失的存在。必须要做! 三、各种在线题库 1、题库方面首推USACO(美国的赛题),usaco写完了一等基本上就没有问题,如果悟性好的话甚至能在NOI取得不错的成绩. 2、除此之外Vijos也是一个不错的题库,有很多中文题. 3、国内广受NOIP级别选手喜欢的国内OJ(Tyvj、CodeVs、洛谷、RQNOJ) 4、BJOZ拥有上千道省选级别及以上的题目资源,但有一部分题目需要购买权限才能访问。 5、UOZ 举办NOIP难度的UER和省选难度的UR。赛题质量极高,命题人大多为现役集训队选手。

关于成立信息学奥赛兴趣小组的方案

关于成立信息学奥赛兴趣小组的方案 一、信息学奥赛简介 1、信息学奥赛概述 奥林匹克竞赛活动的宗旨,主要是激发青少年对科学的兴趣。通过竞赛达到使大多数青少年在智力上有所发展,在能力上有所提高的目标。 并在普及活动的基础上,为少数优秀的青少年脱颖而出、成为优秀人才 创造机遇和条件。全国五项学科竞赛包括数学、物理、化学、信息学(计 算机)、生物学五个学科。 全国青少年信息学奥林匹克竞赛(简称NOI)是经教育部批准、中国科协主管、中国计算机学会主办,这一活动在普及计算机知识的基础上, 激发广大青少年对信息技术及其应用的兴趣,对青少年学生开阔眼界、 扩大知识面,培养逻辑思维、创造思维及应用计算机解决实际问题的能 力都有很大促进作用。 全国青少年信息学奥林匹克联赛(National Olympiad Informatics in Pronvinces,简称NOIP)在同一时间、不同地点以各省市为单位由特派员 组织。全国统一大纲、统一试卷。初高中或其他中等专业学校的学生可 报名参加联赛。联赛分初赛和复赛两个阶段。初赛考察通用和实用的计 算机科学知识,以笔试为主。复赛为程序设计,须在计算机上调试完成。 参加初赛者须达到一定分数线后才有资格参加复赛。联赛分普及组和提 高组两个组别,难度不同,分别面向初中和高中阶段的学生。 2、针对我校实际情况成立信息学奥赛的意义: 我校有初中部和高中部,初中部面临有三中和四中的有力竞争,我校在小升初的招生中不占优势,高中部招生又面临强大的竞争对手和县 一中,高中优质生源流失。这几年编程教育逐渐被国家重视,信息学奥 赛又成为热门项目,在大城市开展的热热烈烈。而纵观全县,几乎为空 白。本人从事信息技术一线教学超过十年,编程一线教学也有三年,积 累了很多经验,愿意为我们和县的学子普及计算机并挑选人才作出努力。 也同时使得和县二中在招生中更具竞争力。 二、兴趣小组的学生选拔 面向七年级新生,有较强的逻辑思维能力,在数学、英语等学科成绩优异的,具有良好的数学基础和英文水平,能掌握程序设计语言和算法中的一些常用的英文关键词,对编程感兴趣的学生均可以报名。由各班班主任积极在班级中宣传,学生自愿报名。 三、寻求学校支持 1、辅导课按学校相关标准给予课时补贴

信息学奥赛数据结构教程PASCAL版

信息学奥赛数据结构教程PASCAL版第二课堆栈和队列 一、堆栈 1(概述 栈(stack)是一种特殊的线性表。作为一个简单的例子,可以把食堂里冼净的一摞碗看作一个栈。在通常情况下,最先冼净的碗总是放在最底下,后冼净的碗总是摞在最顶上。而在使用时,却是从顶上拿取,也就是说,后冼的先取用,后摞上的先取用。好果我们把冼净的碗“摞上”称为进栈,把“取用碗”称为出栈,那么,上例的特点是:后进栈的先出栈。然而,摞起来的碗实际上是一个表,只不过“进栈”和“出栈”,或者说,元素的插入和删除是在表的一端进行而已。 一般而言,栈是一个线性表,其所有的插入和删除均是限定在表的一端进行,允许插入和删除的一端称栈顶(Top),不允许插入和删除的一端称栈底(Bottom)。若给定一个栈S=(a1, a2,a3,…,an),则称a1为栈底元素,an为栈顶元素,元素ai位于元素ai-1之上。栈中元素按a1, a2,a3,…,an 的次序进栈,如果从这个栈中取出所有的元素,则出栈次序为an, an-1,…,a1 。也就是说,栈中元素的进出是按后进先出的原则进行,这是栈结构的重要特征。因此栈又称为后进先出(LIFO—Last In First Out)表。我们常用一个图来形象地表示栈,其形式如下图:

通常,对栈进行的运算主要有以下几种: (1) 往栈顶加入一个新元素,称进栈; (2) 删除栈顶元素,称退栈; (3) 查看当前的栈顶元素,称读栈。 此外,在使用栈之前,首先需要建立一个空栈,称建栈;在使用栈的过程中, 还要不断测试栈是否为空或已满,称为测试栈。 2(栈的存储结构 栈是一种线性表,在计算机中用向量作为栈的存储结构最为简单。因此,当用编程语言写程序时,用一维数组来建栈十分方便。例如,设一维数组STACK[1..n] 表示一个栈,其中n为栈的容量,即可存放元素的最大个数。栈的第一个元素,或称栈底元素,是存放在STACK[1]处,第二个元素存放在STACK[2]处,第i个元素存放在STACK[i]处。另外,由于栈顶元素经常变动,需要设置一个指针变量top,用来指示栈顶当前位置,栈中没有元素即栈空时,令top=0,当top=n时,表示栈满。 3(对栈的几种运算的实现方法: (1)建栈 continue to respond 5min. Remove the absorption tube, 1cm Cuvette, wavelength of 400nm, to standard pipes zero regulating and absorbs

信息学竞赛班数据结构专项培训教程—— 03栈和队列

§3栈和队列 §3.1 栈 栈(stack)是一种仅限于在称为栈顶(top)的一端进行插入和删除操作的线性表,另一端则被为栈底(bottom)。不含元素的空表称为空栈。 栈的特点:后进先出(Last In First Out),简称:LIFO。 栈的表示和实现 和线性表类似,栈也有两种存储结构。 (1).顺序栈 顺序栈即采用的顺序存储结构来表示栈,通常采用数组来实现。 采用顺序栈受数组空间的约束,有“溢出”的可能,编程前应作空间估算,若有溢出可能,应作溢出判断及相应的处理。 在一个程序中,常常会出现同时使用多个栈的情形。为了不因栈上溢而产生错误中断,必须给每个栈预分一个较大的空间,但这并不容易做到,因为栈实际所用的最大空间很难估计;而且各个栈的实际使用量在使用期间是变化的,往往会有这样的情况,即其中一个栈发生上溢,而另一个栈还是空的。设想,若令多个栈共享空间,则将提高空间的使用效率,并减少发生栈上溢的可能。 所以,可以采用两个栈共享空间的方法:假设在程序中需设两个栈,并共享一维数组空间。则利用“栈底位置不变”的特性,可将两个栈的栈底分别设在数组空间的两端,然后各自向中间伸展(如图),仅当两个栈的栈顶相遇时才可能发生上溢。 (2).链栈 采用链式存储结构的栈简称链栈。 对于链栈,不含产生单个栈溢出的情况,但要记得回收结点空间(dispose(p)),否则会出现整个空间被占满,new(p)过程无法实现(即无法申请新的结点空间)的情况。

【练习】 回文串识别 输入一字符串,判断它是否为一回文串。所谓回文串是指去掉其中的空格与标点符号等非字母符号后,从前后两个方向读到的串相同,例如: ten animals I slam in a net. (我将十只动物装在网里) 输入:一字符串 输出:Yes 或No §3.2 队列 队列(queue )是所有的插入都在一端进行,而所有的删除都在另一端进行的线性表。允许插入的一端称为队尾(rear ),允许删除的一端称为队头(front )。 队列的特点:先进先出(|First In First Out ),简称:FIFO 。 队列的表示和实现 和栈一样,队列也有顺序存储和链式存储两种表示和实现方法。 在顺序存储结构中,同样有溢出可能,即元素因队满而无法入队。对于队列来说,可以采用循环队列的技巧,仅当队头与队尾相遇时为队满。 【例3.2.1】逐行打印二项展开式 (a + b )i 的系数: 杨辉三角形 (Pascal’s triangle) 要求:采用队列实现! 输入: n ——层数(n<50)25 a 1 a 2 a 3 …… a n 出队列 出队列 队头 队尾 队头 队尾 1 1 i = 1 1 2 1 2 1 5 5 1 3 1 4 6 4 1 4 1 5 10 10 5 1 5 1 6 15 20 15 6 1 6

信息学奥赛教程C++版之令狐文艳创作

目录 令狐文艳 青少年信息学奥林匹克竞赛情况简介 信息学奥林匹克竞赛是一项旨在推动计算机普及的学科竞赛活动,重在培养学生能力,使得有潜质有才华的学生在竞赛活动中锻炼和发展。近年来,信息学竞赛活动组织逐步趋于规范和完善,基本上形成了“地级市——省(直辖市)——全国——国际”四级相互接轨的竞赛网络。现把有关赛事情况简介如下: 全国青少年信息学(计算机)奥林匹克分区联赛: 在举办1995年NOI活动之前,为了扩大普及的面,并考虑到多数省、直辖市、自治区已经开展了多年省级竞赛,举办了首届全国青少年信息学(计算机)奥林匹克分区联赛。考虑到不同年级学生的知识层次,也为了鼓励更多的学生积极参与,竞赛设提高组、普及组,并分初、复赛进行,这样可以形成一个梯队,确保每年的竞赛活动有比较广泛扎实的基础。 从1995年起,至2001年共举办了七届全国青少年信息学奥林匹克分区联赛,每年举办一次(下半年十月左右),有选手个人奖项(省、国家级)、选手等级证书、优秀参赛学校奖项。 安徽省青少年信息学(计算机)奥林匹克复决赛(简称AHOI): 省级信息学奥赛是一个水平较高的、有较大影响力的学科竞赛。由各市组织代表队参赛,参赛名额实行动态分配制度,每年举办一次(上半年五月左右)。从1984年起安徽省奥林匹克竞赛活动得到了蓬勃发展。奖项有个人一、二、三等奖,女选手第一、二、三名,奖励学校团体总分1-8名、市团体总分1-8名。 全国青少年信息学(计算机)奥林匹克竞赛(简称NOI):由中国算机学会主办的、并与国际信息学奥林匹克接轨的一项全国性青少年学科竞赛活动。1984年举办首届全国计算

机竞赛。由各省市组织参赛,每年举办一次。奖项有个人一、二、三等奖,女选手第一、二、三名,各省队团体总分名次排队。 国际青少年信息学(计算机)奥林匹克竞赛(简称IOI):每年举办一次,由各参赛国家组队参赛。 全国青少年信息学(计算机)奥林匹克分区联赛竞赛大纲 在初赛的内容上增加以下内容(2008年修改稿):

初中信息学奥赛校本教材开发的实践与研究-最新教育资料

初中信息学奥赛校本教材开发的实践与研究 目前,有关信息学方面的教材比较多,如,南京大学出版社出版的《全国青少年信息学奥林匹克联赛》《信息学(计算机)奥林匹克》,电子工业出版社出版的《PASCAL语言程序设计》,科学技术文献出版社出版的《Free Pascal语言与基础算法》等,每本教材都有各自的局限性,有些并不符合我校学生的实际情况。 我校从2003年开始开展信息学奥赛校本课程,培训资料大部分来源于大学计算机专业教材,随着网络资料的不断丰富和信息学方面的教材出版增多,培训资料搜集的来源越来越丰富。 在这十几年信息学竞赛的教学过程中,笔者深知初中学生的特点和教学规律,这使得最终开发的校本教材能够适合初中信息学奥赛校本课程。现将自己在校本教材开发实践中得到的感受和思考,简述如下,希望得到同行和专家的指正。 一、适合初中生 由于初一学生在小学的时候一般都没有接触过计算机程序,程序对他们来说既神秘又陌生。这个阶段的学生好奇心强、动手解决问题的欲望强烈,但是还不能比较理智地处理问题,排除各种对学习的干扰。因此,他们往往不能保持学习精力的高度集中和自觉。 程序入门例题:

1.已知一辆自行车的售价是300元,请编程计算a辆自行车的总价是多少? 2.“鸡兔同笼”问题,已知笼中的头共30个,脚共90只,问鸡和兔各有多少只? 3.“兔子繁殖”问题,已知一对兔子,每个月可以生一对小兔,而小兔过一个月也可生一对小兔。即兔子的对数是:第一个月1对,第二个月2对,第三个月3对,第四个月5对……假设兔子的生育期是12个月,并且不死,问一年后,这对兔子有多少对活着的后代? 二、培养学生自学能力为目的 参加信息学奥赛的学生都是经过选拔出来学校中最优秀的 学生,这批学生各方面能力都很强,他们需要有自由发挥的空间,在教学过程中提倡学生的自主探究,而教师对学生的学习中起到引导作用。因此,开发的校本教材本身要适合教学。 1.教材中问题的设计首先与现实生活、新兴的科技成果等问题密切联系,让学生知道学习的实际用途,如果一个学生连自己为什么要学习都弄不清楚,那么他的学习行为肯定是被动的。 2.问题的解决,必须要有思考的过程,所以每个题目都加入了对问题不同程度的解析,再通过分析得出程序,给学生参考,让学生知道为什么这么写程序。 3.学生懂得了具体的解题思路,但是对于具体程序可能还是有难度的,所以对于一个程序中关键的代码要给予注释,加深学

的信息学奥赛——算法入门教程

全国青少年信息学奥林匹克联赛 算法讲义 算法基础篇 (2) 算法具有五个特征: (2) 信息学奥赛中的基本算法(枚举法) (7) 采用枚举算法解题的基本思路: (7) 枚举算法应用 (7) 信息学奥赛中的基本算法(回溯法) (14) 回溯基本思想 (14) 信息学奥赛中的基本算法(递归算法) (18) 递归算法的定义: (18) 递归算法应用 (19) 算法在信息学奥赛中的应用(递推法) (25) 递推法应用 (26) 算法在信息学奥赛中的应用(分治法) (32) 分治法应用 (33)

信息学奥赛中的基本算法(贪心法) (38) 贪心法应用 (39) 算法在信息学奥赛中的应用(搜索法一) (44) 搜索算法应用 (45) 算法在信息学奥赛中的应用(搜索法二) (48) 广度优先算法应用 (50) 算法在信息学奥赛中的应用(动态规划法) (56) 动态规划算法应用 (58) 算法基础篇 学习过程序设计的人对算法这个词并不陌生,从广义上讲,算法是指为解决一个问题而采用的方法和步骤;从程序计设的角度上讲,算法是指利用程序设计语言的各种语句,为解决特定的问题而构成的各种逻辑组合。我们在编写程序的过程就是在实施某种算法,因此程序设计的实质就是用计算机语言构造解决问题的算法。算法是程序设计的灵魂,一个好的程序必须有一个好的算法,一个没有有效算法的程序就像一个没有灵魂的躯体。 算法具有五个特征: 1、有穷性:一个算法应包括有限的运算步骤,执行了有穷的操作后将终止

运算,不能是个死循环; 2、确切性:算法的每一步骤必须有确切的定义,读者理解时不会产生二义性。并且,在任何条件下,算法只有唯一的一条执行路径,对于相同的输入只能得出相同的输出。如在算法中不允许有“计算8/0”或“将7或8与x相加”之类的运算,因为前者的计算结果是什么不清楚,而后者对于两种可能的运算应做哪一种也不知道。 3、输入:一个算法有0个或多个输入,以描述运算对象的初始情况,所谓0个输入是指算法本身定义了初始条件。如在5个数中找出最小的数,则有5个输入。 4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果,这是算法设计的目的。它们是同输入有着某种特定关系的量。如上述在5个数中找出最小的数,它的出输出为最小的数。如果一个程序没有输出,这个程序就毫无意义了; 5、可行性:算法中每一步运算应该是可行的。算法原则上能够精确地运行,而且人能用笔和纸做有限次运算后即可完成。 如何来评价一个算法的好坏呢?主要是从两个方面: 一是看算法运行所占用的时间;我们用时间复杂度来衡量,例如:在以下3个程序中, (1)x:=x+1 (2)for i:=1 to n do

CHH信息学奥赛培训教案

PASCAL程序设计 第1章计算机的发展与应用 1.1 计算机发展简史 1.1.1 第一台电子计算机的诞生 1946年,世界上第一台数字式电子计算机由美国宾夕法尼亚大学的物理学家约翰·莫克利(John Mauchly)和工程师普雷斯伯·埃克特(PresperEckert)领导研制成功,取名为ENIAC(Electronic Numerical Integrator And Calculator)。它可以在1秒进行5000次加减运算,3毫秒便可以进行一次乘法运算,能存储20个字长为10位的十进制数。 1.1.2 计算机发展的几个阶段 第四代计算机以大规模集成电路VLSI为计算机的主要功能部件,用16K、64K或集成度更高的半导体存储器作为主存储器。 新机器要继承原有机器指令系统中的全部指令,使得同一系列计算机的指令系统越来越复杂,这些计算机被称为“复杂指令系统计算机”,简称CISC。 日趋庞大的指令系统降低了系统性能,而机器中最常常的是一些简单指令,这些指令仅占指令系统中指令总数的20%,1975年提出了精简指令系统,简称RISC。 冯·诺依曼型计算机是采用存储程序方式进行工作。 研制中的第五代计算机,是一种智能计算机,具有自动识别自然语言、图形、图像有能力,具有理解和推理能力,具有知识获取、知识更新能力。研制朝两个方向努力:①创建非冯·诺依曼式语言,LISP、PROLOG、F.P.;②创建以人脑神经系统处理信息的原理为基础的非冯·诺依曼式的计算机模型,生物计算机、光子计算机、量子计算机。 1.2 计算机对现代社会的影响 1.2.1 计算机应用概述 1、科学计算:利用计算机解决科学研究和工程技术中所提出的复杂的数学问题。 2、数据处理:利用计算机对所获取的信息进行记录、整理、加工、存储和传输等。 3、人工智能:利用计算机来模仿人类的智力活动。 4、自动控制:利用计算机对动态的过程进行控制、指挥和协调。

中学信息学奥林匹克竞赛培训教程

中学信息学奥林匹克竞赛培训教程 Pascal语言和程序设计基础 (第一部分)

第一部分 Pascal语言和程序设计基础 预备知识 基本程序结构和几个概念:: 标识符保留字常量变量运算符表达式标准数据类型 Pacal语言程序结构 Program prog_name; var变量申明; begin 程序体; end. 例如: program pname; const n=4; type arr=array [1..4] of integer; var i:integer; a:arr; begin for i:=1 to n do read(a[i]); readln; for i:=n downto 1 do write(a[i]:4); writeln; end. 以上是一个PASCAL程序。从键盘读入4个数据,逆序输出。 一般来说,一个PASCAL程序包括以下几个部分: 程序头:program pname; 其中,program是保留字,表示程序从这个地方开始,pname是标识符,是程序的名字,可由程序员自定。保留字是PASCAL选定的,具有固定意义和用法的专用单词或缩写,这些单词不允许作其它使用。如上,“program”就有“程序从这里开始”这样一种特别的意义,而“const”就有“常量说明从这里开始”的意义。我们不能再用“program”、“const”来作为其它变量、常量等的名字。标识符是以字母开头的字母数字串,其长度最大为8个字符。用来表示常量、变量、类型、文件、过程、函数和程序的名字。如“pname”、“i”、“j”、“a1”就是合法的标识符;但“1a”、“#a”是非法的标识符。有一点要注意的是,在PASCAL中,字母除了作为字符值或字符串值之外,其大小写是无关的。如标识符“A1”和“a1”在PASCLA看来是同一标识符。在PASCAL中除了保留字和自定义的标识符外,还有一类有特殊含义的标识符,这类标识符称为标准标识符。它们是用来标记程序中经常引用的处理对象,如常量、函数。(PASCAL定义的保留字和标准标识符附后) 标识符在命名的时候要注意: 1、名字要易记易读,有意义。如8皇后问题程序名可以是“queen”也可以是“huanghou”等; 2、不能用保留字、标准标识符作为自定义的标识符。 说明部分: const n=4; type ar=array [1..4] of integer; var i:integer; a:ar; 其中,const部分是常量说明,说明一些在以下部分用到的,在整个程序执行过程不改变值的量。这些量PASCAL称为常量。在程序中用到这个值的地方均用常量名来代替。如上题中定义“n=4”指本程序处理4个数值,在下面的程序体中就用“n”来代替具体的值(如for i:=1 to n)。如果要改变处理数据个数,则只在常量说明部分修改“n=4”这一句就行了,而不用在程序中每一个用到的地方都加以修改。这样不但在编写程序的时候很方便,也增加了程序的可读性,修改时更方便。

广东省汕头市高中信息技术信息学竞赛班数据结构专项培训教程07树

树 §7.1 树的概念 【定义】 树(Tree )是n (n>0)个结点的有限集合T ,它满足如下两个条件: (1) 有且仅有一个特定的称为根(Root )的结点; (2) 其余的结点可分为m (m ≥0)个互不相交的有限集合,其中每一个集合又都是一颗树,并称为根的子树(Sub Tree )。 【基本术语】k 树的结点包含一个数据元素及若干指向其子树的分支。 结点拥有的子树数称为结点的度(degree )。 如图7.1,A 的度为3,C 的度为1,F 的度为0。 度为0的结点称为叶子(leaf )或终端结点。例如K 、L 、F 、G 、M 、I 、J 。 度不为0的结点称为分支结点或非终端结点。 除根结点外,分支结点也称为内部结点。 树的度是树内各结点的度的最大值,如图7.1中树的度为3。 结点的子树的根称为该结点的孩子(Child ),该结点称为孩子的双亲(parent )。 如图7.1.1,B 为A 的子树的根,则B 是A 的孩子,而A 则是B 的双亲。 同一个双亲的孩子之间互称为兄弟(sibling ),例如B 、C 、D 互为兄弟。 将这些关系进一步推广,可认为D 是M 的祖父。结点的祖先是从根到该结点所经分支上的所有结点。例如,M 的祖先为A 、D 、H 。 反之,结点的子树中的任一结点都称为该结点的子孙,如B 的为E 、F 、K 、L 。 5. 结点的层次(level )是从根开始定义起,根为第一层,根的孩子为第二层。 若某结点在第x 层,则其子树的根就在x+1层。 树中结点的最大层次称为树的高度或深度(depth )。如图7.1的树的深度为4。 6. 如果将树中的结点的各子树看成从左到右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。如图 7.1.2。 7. 森林(forest )是m (m ≥0)棵互不相交的树的集合。 §7.2 二叉树 §7.2.1 二叉树的定义 二叉树(binary tree )是一种树型结构,它的每个结点至多只有二棵子树(即二叉树中不存在度大于2结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。 (如图7.2.1) 满二叉树和完全二叉树是两种特殊形态的二叉树。 满二叉树是指深度为k ,且有2k -1个结点的二叉树。 完全二叉树是指深度为k ,有n 个结点,当且仅当每一个结点都与深度为k 的满二叉树中编号从1到n 的结点一一对应时。 §7.2.2 二叉树的性质 性质1:在二叉树的第i 层上至多有 ① 个结点(i ≥1)。 性质2:深度为k 的二叉树至多有 ② 个结点(k ≥1)。 性质3:对任意一棵二叉树,如果度为2的结点数为n 2,则其叶子结点数为 ③。 性质4:具有n 个结点的完全二叉树的深度为 ○A ○B ○C ○D ○E ○F ○G ○H ○I ○J ○K ○L ○ M 图7.1.1 ○A ○A ○B ○C ○C ○B 图7.1.2 两棵不同的有序树 ○A ○B ○C ○D ○E ○F ○G ○H ○I ○J 图7.2.1 ○1 ○2 ○3 ○4 ○5 ○6 ○7 ○ 8 ○9 ○10 ○11 ○12 ○13 ○14 ○15 图7.2.2 满二叉树 ○1 ○2 ○3 ○4 ○5 ○6 ○7 ○8 ○9 ○10 ○11 ○12 图7.2.3 完全二叉树 ○1 ○2 ○3 ○4 ○5 ○6 ○7 ○8 ○9 ○10 ○11 ○12 图7.2.4 非完全二叉树

江苏信息学奥赛数据结构教程

初赛复习三数据结构 程序=算法+数据结构: 算法:对特定问题求解步骤的一种描述。他又正确性,可读性,健壮性,效率和地存储量。 算法的时间复杂度: 1.1 基本概念和术语 1.数据(data): 是对客观事物的符号的表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。 2.数据元素(data element): 是数据的基本单位,在计算机程序中通常作为一个整体来处理。一个数据元素由多个数据项(data item)组成,数据项是数据不可分割的最小单位。 3.数据结构(data structure): 是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一个二元组,记为: data_structure=(D,S).其中D为数据元素的集合,S是D上关系的集合。 数据元素相互之间的关系称为结构(structure)。根据数据元素之间关系的不同特性,通常由下列四类基本结构: (1)集合:数据元素间的关系是同属一个集合(2)线性结构:数据元素间存在一对一的关系。(3)树形结构:结构中的元素间的关系是一对多的关系。 (4)图(网)状结构:结构中的元素间的关系是多对多的关系。

1.2 数据的逻辑结构和物理结构 逻辑结构:数据元素之间存在的关系(逻辑关系)叫数据的逻辑结构。 物理结构:数据结构在计算机中的表示(映象)叫数据的物理结构。 一种逻辑结构可映象成不同的存储结构:顺序存储结构和非顺序存储结构(链式存储结构和散列结构)。 第二章 线性表 (1)了解线性表的逻辑结构是数据元素之间存在着线性关系,在计算机中表示这种关系的两种不同的存储结构是顺序存储结构和链式存储结构。 (2)熟练掌握线性表的两种存储结构:顺序存储结构和链式存储结构. (3)熟练掌握线性表的两种存储结构的基本算法:查找、插入、删除等. 1.线性表简单的定义A=(a0,a1,a2,...,an-1) (1)有且仅有一个开始结点(表头结点)a0,它没有直接前驱,只有一个直接后继; (2)有且仅有一个终端结点(表尾结点)an-1,它没有直接后继,只有一个直接前驱; (3)其它结点都有一个直接前驱和直接后继; (4)元素之间为一对一的线性关系。 设有一批整数(12,56,45,86,77,……,),如何存放呢? 下图是一个简单链表结构示意图: 其中:①每个框表示链表的一个元素,称为结点。 ②框的顶部表示了该存储单元的地址(当然,这里的地址是假想的)。 ③每个结点包含两个域:一个域存放整数,称为数据域,另一个域存放下一个结点(称为该结点的后继结点,相应地,该结点为后继结点的前趋结点)的地址。 ④链表的第一个结点称为表头,最后一个结点表尾,称为指针域; ⑤指向表头的指针head 称为头指针(当head 为nil 时,称为空链表),在这个指针变量中 存放了表头的地址。 ⑥在表尾结点中,由指针域不指向任何结点,一般放入nil 。 ⒈结点的插入 如下图所示,要在P 结点和Q 结点之间插入一个结点m,其操作如下: 只要作如下操作即可: New(m);//分配存储空间 read(m^.data); m^.next:=q; p^.next:=m; ⒉结点的删除 如下图所示,要在删除结点P 的操作如下: 要删除结点P,则只要将其 前趋结点的指针域指向P 的后 继结点即可。 q^.next:=p^.next; dispose(p);//释放存储空间 2.2环形链表结构 在单向链表中,表尾结点的指针为空。如果让表尾结点 的指针域指向表头结点,则称为单向环形链表,简称单链环。 如图所示。 type p=^ rec ;//指针 rec=record //记录型 data :integer; next:pointer; end; var head:pointer; next data P P:指针 P^:指针指向的数据 P^.data P^.next type p=^node node=record data:integer; next:p; end;

信息学奥赛(初赛)辅导教材

信息学(计算机)奥林匹克竞赛辅导教程浙江金华第一中学《信息技术》教研组

金华一中信息学(计算机)奥林匹克竞赛辅导教程 目录 第一部分试题的知识范围1 一、初赛的要求1 二、复赛内容与要求2第二部分计算机基础知识3 一、计算机的诞生、发展、特点及应用3 1.计算机的诞生和发展3 2.计算机的分类3 3.计算机的特点3 4.PC机及其系统配置3 5计算机在现代社会中的应用4 二、计算机系统组成及工作原理4 1.计算机的系统组成4 2.计算机语言的发展5 3.计算机的工作原理6 三、计算机信息安全6 1.计算机系统的危害来源6 2.计算机系统的安全策略6 3.计算机病毒的概念6 4.计算机病毒的种类7 5.计算机病毒的特征7 6.计算机病毒的传染途径7 四、计算机网络基础7 1.计算机网络的相关定义7

2.计算机网络的功能7 3.计算机网络发展的几个阶段7 4.计算机网络的组成8 5.计算机网络的分类8 6.计算机网络的体系结构和网络协议9 7.网际协议IP与IP地址12 8Internet的域名13 9.常见计算机网络的应用13 五、计算机中数的表示及运算15 1.十进制数16 2.二进制数16 3.八进制数与十六进制数17 4.其他进制数与十进制数之间的转换19 5.计算机中数的表示19 6.字符与汉字的编码22六图形化视窗操作系统23 1.图形用户操作系统23 2.Windows家族23 3.Windows98的主要功能与特性23 七、数据库系统简述24 1.数据库的基本概念24 2.数据表的结构24 3.表结构24

第一部分试题的知识范围 一、初赛的要求 1.1计算机的基本常识 ①计算机和信息社会(信息社会的主要特征、计算机的主要特征、数字通信网络的主要特征、数字化) ②信息输入输出基本原理(信息交换环境、文字图形多媒体信息的输入输出方式) ③信息的表示与处理(信息编码、微处理部件MPU、内存储结构、指令、程序,和存储程序原理、程序的三种基本控制结构) ④信息的存储、组织与管理(存储介质、存储器结构、文件管理、数据库管理) ⑤信息系统组成及互连网的基本知识(计算机构成原理、槽和端口的部件间可扩展互连方式、层次式的互连结构、互连网络、TCP/IP协议、HTTP协议、WEB应用的主要方式和特点) ⑥人机交互界面的基本概念(窗口系统、人和计算机交流信息的途径(文本及交互操作)) ⑦信息技术的新发展、新特点、新应用等。 1.2计算机的基本操作 ①Windows和Linux的基本操作知识 ②互联网的基本使用常识(网上浏览、搜索和查询等) ③常用的工具软件使用(文字编辑、电子邮件收发等) 1.3程序设计的基本知识 1.3.1数据结构 ①程序语言中基本数据类型(字符、整数、长整数、浮点) ②浮点运算中的精度和数值比较 ③一维数组(串)与线性表 ④记录类型(Pascal)/结构类型(C) 1.3.2程序设计 ①结构化程序设计的基本概念 ②阅读理解程序的基本能力 ③具有将简单问题抽象成适合计算机解决的模型的基本能力 ④具有针对模型设计简单算法的基本能力 ⑤程序流程描述(自然语言/伪码/NS图/其他) ⑥程序设计语言(Pascal/C/C++,2003年仍允许BASIC) 1.3.3基本算法 ①初等算法(计数、统计、数学运算等) ②排序算法(冒泡法、插入排序、合并排序、快速排序)

信息学奥林匹克教程(数据结构篇)

《信息学奥林匹克教程(数据结构篇) 奥赛经典高级教程系列(奥赛经典高级教程系列)》 内容简介 为了进一步推广、普及计算机技术,提高竞赛水平,在原来编写的一套《信息学奥林匹克教程》(基础篇·提高篇·语言篇)的基础了,我们又编写了这本《数据结构篇》。 《数据结构篇》主要帮助学生全面地掌握数据结构知识与应用技巧,相对于其他数据结构书不同之处就在于增加了一些针对性的例题和习题,着眼点是提高数据结构的应用方法与技巧,是一本具有实战意义的教材。 从逻辑角度看,数据可归结为三种基本结构:线性结构、树结构和图结构;从存储角度看,数据可归结为四种基本结构:顺序结构、链接结构、索引结构和散列结构。每一种逻辑结构可根据不同需要采用不同的存储结构,或者不同的存储结构的组合。数据的逻辑结构和存储结构确定后,再结合指定运算的算法,就容易利用一种程序设计语言编写出程序。通过数据结构的学习,能够大大提高程序设计能力和水平。 《数据结构篇》是为广大信息学爱好者学习数据结构而精心编著的一本教材。本书内容比较全面,着重于实用与实战,在算法分析上简明扼要,细致清晰,便于自学。全书共分十章:第一章为概论,它为学习以后的各章做准备;第二章至第五章为线性结构;第六章和第七章分别为树结构和图结构,分别讨论了每一种逻辑结构所对应的存储结构和相应的算法;第八章和第九章分别为查找与排序,它包含了数据处理中主要使用的几种查找和内排序方法;最后一章为读者提供了检测知识的模拟试题及解答。 作者简介 向期中,长郡中学特级教师,湖南省计算机学会理事,国际金牌教练,国家教育部计算机课程咨询委员会委员。对中小学计算机教育事业有一种执着的追求,参加工作20年来,一直以“当一流教师,办一流教育,出一流人才”为自己的工作目标,对中小学计算机教学和青少年信息学奥林匹克竞赛的辅导倾注了全部热情和心血。在信息学奥林匹克竞赛培训中把“先做人,后成才”的育人理念贯穿到整个奥赛培训的始终,学生在愉快的学习中取得了一个个辉煌的成绩:在近几年的信息学奥林匹克竞赛中,辅导的学生有100多人获湖南省一等奖,11人次进入国家集训队,3人进入国家代表队,3人获国际金牌。撰写了《信息学(计算机)国际奥林匹克Turbo Pas—cal 6.0》等十多部信息学专著。多次荣获园丁奖和全国优秀辅导员称号,还先后获得全国中小学计算机教育先进工作者、湖南省优秀教师和全国信息学奥林匹克竞赛高级指导教师等荣誉称号。

全国信息学奥林匹克竞赛中级指导教师培训班

全国信息学奥林匹克竞赛中级指导教师培训班 教学大纲 一、宗旨 中国计算机学会将定期举办全国信息学奥林匹克中级指导教师培训班,旨在提高各地中学从事信息学奥林匹克培训指导教师的整体水平,从而更好地在中学里开展计算机应用和程序设计的普及教育,为培养高水平的计算机专业人才奠定良好的基础。 培训班将依据《全国青少年信息学奥林匹克联赛(NOIP)大纲》确定教学内容。鉴于培训时间较短(一般在一周左右),教学以传授相关知识为主,学员业务能力的提高主要依靠个人自身的努力。通过培训,应使学员了解参与信息学竞赛必备的知识要点;掌握基本的程序设计、算法和数据结构的有关内容;经过继续努力,可以独立承担NOIP 提高组的培训工作。 培训班还将为从事信息学奥林匹克培训的一线教师提供一个直接交流的平台,交流和探讨各校的培训内容、方法、培训模式和成功的经验,以便推动全国各省市信息学奥林匹克竞赛水平的均衡发展。 二、教学内容 (1)程序设计语言概要 由于学员水平不一,使用的程序设计语言不同,有必要用一定的时间介绍培训中将要使用的程序设计语言的核心内容(条件语句、循环语句、指针、结构、函数(或过程)的定义和引用等)。建议任课教师使用C/C++语言,也可以使用Pascal语言。程序运行环境由任课教师参照NOIP竞赛环境选定。 建议适当介绍如何检验程序的正确性和如何设计测试数据。 (2)算法设计与数据结构基础 (2.1)递归回溯与基本搜索方法(递归的基本思想与实现过程,深度优先搜索,n 后问题、0-1背包问题、图的m着色、连续邮资问题、最大团问题等;近几年NOIP相关试题)。 (2.2)贪心算法(单源最短路径、最小生成树、哈夫曼编码等)。 (2.3)线性结构、图与树的相关问题(链表、堆栈、队列、串、哈希表、树的存贮结构、几类典型的二叉树、树的遍历、图的存贮结构、图的遍历、图的连通性、拓扑排序与关键路径等;近几年NOIP相关试题) (2.4)分治算法(二分搜索、棋盘覆盖问题、快速排序、跳马问题) (2.5)动态规划(基本思想、0-1背包问题、矩阵连乘问题、最长公共子列、最优二叉搜索树等;近几年NOIP相关试题)

信息学奥赛教学的几点心得

信息学奥赛教学的几点心得 莫兵华 江西省新余市第四中学(338000) 【内容提要】看了许多别人有关信息学奥赛教学的论文,觉得受益匪浅,从事信息学奥赛教学有几年了,取得了一些成绩,同时也积累了一些经验,特地拿出来与各位同行共享,本文从培养学生的自信心,培养学生的自学能力,不拘泥于常规的教学方式以及形成初高中信息学奥赛的衔接、形成梯队这四个方面来进行论述。 【关键词】NOIP、自信、自学、教学方式、梯队 全国青少年信息学奥林匹克分区联赛(简称NOIP)是经中国科协、国家教育部批准,由中国计算机学会主办的一项全国性的青少年学科竞赛活动。随着信息学奥林匹克竞赛的深入开展,越来越多的教师都已投入此项教学的研究之中。我从事这项工作已有一段时间。现就我在中学信息学奥林匹克竞赛教学中的做法与各位同行进行交流,希望能得到同行的批评指正。 一、培养学生的自信心 什么是自信呢?自信是一种正确、积极的自我观念和自我评价。积极意味着一种对自己的认同、肯定和支持的态度。而在现今的学生当中,普遍存在着自我评价过低的现象,很多学生在能够完成的事情面前,认为自己干不了,于是畏缩犹豫裹足不前,压抑了内在能力的发挥。在NOIP联赛中,自信心对学生至关重要,缺乏自信,要想在NOIP联赛中取得好成绩,根本就是不可能的。结合这些年的教学经验,我觉得应从下面几个方面来培养学生的自信心: 1、教师要用自己的自信心鼓舞和感染激励学生 “教师的世界观,他的品行,他的生活,他对每一现象的态度,都这样那样地影响全体学生。”这句话道出了一个道理:教师不仅是学生知识的传授者,更应该做学生的楷模。因此,教师要用自己的自信心鼓舞和感染激励学生。学生在潜移默化中受到了鼓舞和感染,也信心百倍。我经常对我的学生说,我一定可以把你们送上NOIP联赛的领奖台,比赛时,我都会对学生说,你们一定能拿到奖,因为你们有足够的实力,我让学生在心目中形成一个这样的认识:“就是我行,

相关文档
最新文档