- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
论C言在信息学竞赛中的应用
论C++语言在信息学竞赛中的应用
浙江省余姚中学 韩文弢
摘要 程序设计语言是信息学竞赛的一个重要组成部分,任何算法只有通过程序设计语言实现之后才能真正解决问题。C++语言凭借其高度的灵活性和强大的功能在大学生竞赛中被非常广泛地使用,在中学生竞赛中的使用也越来越广泛。本文分为三章,由浅入深地介绍了C++语言的基础知识、面向对象编程基础和常用标准库、标准模板库(STL)。希望本文能够对想在信息学竞赛中使用C++语言的读者有所帮助。
关键字 信息学竞赛 C++程序设计语言 标准模板库
目录
前言 2
1 从Pascal到C++ 3
1.1 世界,你好! 3
1.2 类型和定义 4
1.3 指针、数组和结构 7
1.4 表达式和语句 11
1.5 函数 14
1.6 常用的库函数 16
1.7 本章小结 17
2 深入C++语言 20
2.1 类 20
2.2 操作符重载 24
2.3 字符串 26
2.4 流 27
2.5 本章小结 30
3 STL简介 33
3.1 STL概述 33
3.2 迭代器 34
3.3 算法 35
3.4 容器 42
3.5 本章小结 46
总结 47
参考文献 48
前言
信息学竞赛一般要求在一定的时间内,理解并分析题意,设计符合给定时间和空间复杂度要求的算法,并在计算机上使用一定的程序设计语言正确地实现算法。由于整个竞赛存在时间限制(特别是ACM/ICPC类竞赛,在解决问题数目相等的情况下以做题累计时间的多少来决定名次),因此所使用的程序设计语言能否正确、快速地实现算法对竞赛的成绩影响颇大。所以,编程复杂度越来越受到重视。编程复杂度在很大程度上与所选用的程序设计语言有关。一般信息学竞赛比较常用的程序设计语言有以下几种:BASIC、Pascal、C/C++、Java,它们的特点如下表所示:
BASIC Pascal C++ Java 学习难度 容易 一般 较难 较难 语言特点 简单 严谨 灵活 高度面向对象 程序运行速度 慢 较快 快 慢 库函数功能 弱 一般 很强 强 在目前的中学生信息学竞赛中,Pascal语言使用较为广泛。但是C++语言凭借其本身所具有的高度的灵活性,以及它所带的库的强大功能,被越来越多的选手所使用。本文就是在这样一个背景下撰写的。在本文中,Pascal语言以Free Pascal为准;而C++语言则以标准的ANSI/ISO C++为准。
另外,需要注意的一点是,本文并不是参考资料。因此,对于C++语言,本文不可能介绍得面面俱到,十分详细。如果想更加深入的学习C++语言,可以阅读有关资料。
1 从Pascal到C++
阅读本章的必要条件:会使用Pascal语言、了解一定的算法知识
由于目前中学生信息学竞赛中使用Pascal语言的选手较多,本章的目的就是使读者在已经掌握Pascal语言的情况下,能够尽快地从Pascal语言转型到C++语言。如果你已经对C++语言有一定的了解,可以跳过本章,直接阅读下一章。
1.1 世界,你好!
首先,让我们通过一个非常简单的C++程序,来初步地了解C++语言。
//:?C01:Hello.cpp//?Hello,?world!#include?iostreamusing?namespace?std;int?main()?{????cout??Hello,?world!??endl;}?///:~
这个程序的作用就是在屏幕上输出“Hello, world!”的字样。
第一行、第二行以及最后一行中,从“//”开始到行末的部分都是注释。在C++中,注释有两种写法。一种是从C中继承的块注释,以“/*”开始,到“*/”结束。另一种就是新增的行注释,从“//”开始,到行末为止。
第三行中以“#”开始的内容被称为预处理指令,这一行的作用是把一个叫做iostream的头文件包含到我们的程序中来,相当于Pascal中使用单元的uses语句。不过Pascal中默认使用System单元,其中包含了我们常用的绝大多数过程和函数,而C++默认是不包含任何头文件的。另外,C语言中的头文件都是以.h结尾的,而标准的C++提倡使用没有扩展名的头文件。
第四行让我们可以在程序中直接使用std名字空间内的标识符。std名字空间包含了所有标准C++提供的类和函数,为了简便起见,一般总在包含头文件的预处理命令后写上这一行。有关名字空间的详细内容可以参考有关资料。
第五行到第七行就是程序的主体。在这个程序中,我们定义了一个名字为main的函数。这个函数就相当于Pascal中的主程序。任何一个能够独立执行的C++程序都需要有一个main函数。我们还可以看出,在C++中,“{”和“}”就相当于Pascal中的“begin”和“end”。
第六行的作用就是向屏幕输出
文档评论(0)