《算法竞赛入门经典》

《算法竞赛入门经典》

ID:25860924

大小:136.00 KB

页数:15页

时间:2018-11-23

《算法竞赛入门经典》_第1页
《算法竞赛入门经典》_第2页
《算法竞赛入门经典》_第3页
《算法竞赛入门经典》_第4页
《算法竞赛入门经典》_第5页
资源描述:

《《算法竞赛入门经典》》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第1章程序设计入门语言篇第1章程序设计入门学习目标þ熟悉C语言程序的编译和运行þ学会编程计算并输出常见的算术表达式的结果þ掌握整数和浮点数的含义和输出方法þ掌握数学函数的使用方法þ初步了解变量的含义þ掌握整数和浮点数变量的声明方法þ掌握整数和浮点数变量的读入方法þ掌握变量交换的三变量法þ理解算法竞赛中的程序三步曲:输入、计算、输出þ记住算法竞赛的目标及其对程序的要求计算机速度快,很适合做计算和逻辑判断工作。本章首先介绍顺序结构程序设计,其基本思路是:把需要计算机完成的工作分成若干个步骤,然后依次让计算机执行。注意这里的“依次”二字——步骤之间是有先后顺序的。这部分的重点在于计算。接下来介绍分

2、支结构程序设计,用到了逻辑判断,根据不同情况执行不同语句。本章内容不复杂,但是不容忽视。注意:编程不是看会的,也不是听会的,而是练会的,所以应尽量在计算机旁阅读本书,以便把书中的程序输入到计算机中进行调试,顺便再做做上机练习。千万不要图快——如果没有足够的时间用来实践,那么学得快,忘得也快。1.1算术表达式计算机的“本职”工作是计算,因此下面先从算术运算入手,看看如何用计算机进行复杂的计算。程序1-1计算并输出1+2的值#includeintmain(){·15·第1章程序设计入门printf("%d",1+2);return0;}这是一段简单的程序,用于计算1+2的值

3、,并把结果输出到屏幕。如果你不知道如何编译并运行这段程序,可阅读附录或向指导教师求助。即使你不明白上述程序除了“1+2”之外的其他内容,仍然可以进行以下探索:试着把“1+2”改成其他东西,而不要去修改那些并不明白的代码——它们看上去工作情况良好。下面让我们做4个实验:实验1:修改程序1-1,输出3-4的结果实验2:修改程序1-1,输出5×6的结果实验3:修改程序1-1,输出8÷4的结果实验4:修改程序1-1,输出8÷5的结果直接把“1+2”替换成“3+4”即可顺利解决实验1,但读者很快就会发现:无法在键盘上找到乘号和除号。解决方法是:用星号“*”代替乘号,而用正斜线“/”代替除号。这样,4个

4、实验都顺利完成了。等一下!实验4的输出结果居然是1,而不是正确答案1.6。这是怎么回事?计算机出问题了吗?计算机没有出问题,问题出在程序上:这段程序的实际含义并非和我们所想的一致。在C语言中,8/5的确切含义是8除以5所得商值的整数部分。同样地,(-8)/5的值是-1,不信可以自己试试。那么如果非要得到8÷5=1.6的结果怎么办?下面是完整的程序。程序1-2计算并输出8/5的值,保留小数点后1位#includeintmain(){printf("%.1lf",8.0/5.0);return0;}注意,百分号后面是个小数点,然后是数字1,再然后是小写字母l,最后是小写字母

5、f,千万不能打错,包括大小写——在C语言中,大写和小写字母代表的含义是不同的。再来做3个实验:实验5:把%.1lf中的数字1改成2,结果如何?能猜想出“1”的确切意思吗?如果把小数点和1都删除,%lf的含义是什么?实验6:字符串%.1lf不变,把8.0/5.0改成原来的8/5,结果如何?实验7:字符串%.1lf改成原来的%d,8.0/5.0不变,结果如何?实验5并不难解决,但实验6和实验7的答案就很难简单解释了——真正原因涉及整数和浮点数编码,相信多数初学者对此都不感兴趣。原因并不重要,重要的是规范:根据规范做事情,则一切尽在掌握中。·15·第1章程序设计入门提示1-1:整数值用%d输出,实

6、数用%lf输出从真正的语言规范来说,这个说法也有一点小问题,不过在算法竞赛中可以完全忽略。。这里的“整数值”指的是1+2、8/5这样“整数之间的运算”。只要运算符的两边都是整数,则运算结果也会是整数。正因为这样,8/5的值才是1,而不是1.6。8.0和5.0被看作是“实数”,或者说得更专业一点,叫“浮点数”。浮点数之间的运算结果是浮点数,因此8.0/5.0=1.6也是浮点数。注意,这里的运算符“/”其实是“多面手”,它既可以拿来做整数除法,又可以拿来做浮点数除法。提示1-2:整数/整数=整数,浮点数/浮点数=浮点数。这条规则同样适用于加法、减法和乘法,不过没有除法这么容易出错——毕竟整数乘以

7、整数的结果本来就是整数。算术表达式可以和数学表达式一样复杂,例如:程序1-3复杂的表达式计算#include#includeintmain(){printf("%.8lf",1+2*sqrt(3)/(5-0.1));return0;}相信读者不难把它翻译成数学表达式:。尽管如此,读者可能还是有一些疑惑:5-0.1的值是什么?“整数-浮点数”是整数还是浮点数?另外,多出来的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。