CCF中学生计算机程序设计-入门篇 信息学奥赛官方指定用书

CCF中学生计算机程序设计-入门篇 信息学奥赛官方指定用书 pdf epub mobi txt 电子书 下载 2025

中国计算机学会 著
图书标签:
  • CCF
  • 信息学奥赛
  • 入门
  • 编程
  • 计算机
  • 青少年
  • 算法
  • C++
  • 学习
  • 教材
想要找书就要到 静思书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
店铺: 科学出版社旗舰店
出版社: 科学出版社
ISBN:9787030500212
商品编码:10900036080
包装:平装
开本:16
出版时间:2016-10-08
页数:272
字数:336

具体描述



本店POD版图书均在书名下有明显红字标注,POD图书属于按需定制,您下单购买后我们才开始印刷,故不可取消订单。 我们一般会在您下单后的7-10个工作日内完成发货,请谨慎下单!商品无质量问题不支持退货,定价和装帧可能会与原书不同,请以实物为准!详情请咨询客服 购买电子版图书请与客服直接联系,或者到科学出版社电子商务平台直接购买
CCF中学生计算机程序设计-入门篇
定价 38.00
出版社 科学出版社
版次 1
出版时间 2016年10月
开本 16
作者 中国计算机学会
装帧 平装
页数 272
字数 336
ISBN编码 9787030500212


内容介绍
本丛书是基于《CCF青少年计算机程序设计评级标准》开发的一个系列培训教材。该标准围绕计算机程序设计的知识要求和能力要求,共分十级,其中1-3级为基础级,4-5级为提高级,6-7级为高手级,8-10级为大师级。本丛书将评级内容进行归纳,计划1-3级出1本、4-5级出1本,6-7级出1本,8-10级出1本,共4本教材。

目录
目录
第1章编程如此简单
1.1程序设计概念1
1.2整数算术运算4
1.3实数算术运算8
附录ADev-C++集成开发环境11
第2章数据的存储和读入
2.1变量和变量的类型17
2.2赋值语句和数学表达式21
*2.3数据类型转换32
2.4变量的读入38
*2.5C语言中的scanf语句和printf语句43
2.6顺序结构程序设计实例51
附录B基本数据类型56
附录C常用数学函数57
第3章程序的选择执行
3.1if语句和关系表达式59
3.2逻辑表达式和条件表达式68
3.3嵌套if语句75
3.4switch语句83
*3.5分支结构程序设计实例92
第4章程序段的反复执行
4.1for语句105
4.2while语句119
4.3do-while语句131
4.4多重循环142
*4.5在循环结构中应用位运算156
*4.6循环结构程序设计实例167
附录Dbreak语句和continue语句178
第5章数据的批量存储
5.1一维数组183
5.2活用数组下标192
5.3数值排序和查找204
5.4字符数组220
5.5二维数组233
*5.6数组的综合应用实例245
参考文献261
索引263

在线试读
第1章编程如此简单
为什么计算机能管理庞大的系统?为什么人能指挥计算机按自己的想法做事?计算机能超*人的思维吗?面对计算机,很多人都会带着或多或少的疑问。其实,计算机是通过执行一个个程序来实现各种神奇的功能。人们要指挥计算机做事,需要编写程序,把自己的思想融入程序中,再利用这些程序按照自己的思路去指挥计算机工作。
1.1程序设计概念
【例1.1】用记事本编写一个程序,让计算机告诉大家我爱编程,即“Iloveprogramming.”
程序如下:
1//exam1.1
2#include
3usingnamespacestd;
4intmain()
5{
6cout<<"Iloveprogramming."<7return0;
8}
编写完这个程序后,大家还会有些疑问,程序为什么要这样写?编程到底要遵循什么样的规则?这个程序编写后怎样让计算机去执行呢?为了回答这些问题,我们必须先弄清一些概念。
1.1.1编程概念
1.程序和计算机语言
程序就是为实现特定目标或解决特定问题而用计算机语言编写的一系列指令序列。
计算机语言是人与计算机之间通信的语言。计算机语言有很多种,比如BASIC语言、PASCAL语言、C语言、C++语言、Java语言等,每种程序语言都有自身所定义的规则,即使是同一个语言也有不同的版本,内部规则也会有少许不同,比如C++语言就有VisualC++、Dev-C++等。
编程可以简单理解为程序员为解决特定问题,按照自己的思路,在遵循特定的计算机语言规则下编写程序的过程。因此,要学好编程,首先选择一种计算机语言,然后按照该程序语言规则编写程序。本书以C++语言规则为例来学习编程。
2.编辑和编译
在某种计算机语言环境下编写程序的过程,叫程序的编辑。程序编辑好后,计算机是不是就可以立即运行呢?其实不然。这个程序在没有被计算机识别之前,仅仅只是一些符号所组成的文本。就像我们读的书籍一样,如果不经过大脑去领会书籍内容所包含的含义,文字永远只能是文字,课本也只能是课本,但经过我们的大脑学习和领会了书籍文字中所包含的内涵和思想,那么看起来死板的文字就成为大脑所学到的知识。程序也一样,也需要计算机去学习和领会程序所包含的含义,这个学习和领悟的过程当然不完全类似人脑对知识的学习,而仅仅是按照计算机语言所对应的规则,对所编写的程序进行解析的过程,这个过程叫翻译。翻译分为两种方式,一种叫解释,是计算机对程序的指令翻译一句执行一句的行为,BASIC语言和Java语言都属于解释语言;另一种叫编译,是计算机对程序的全部指令一次性全部翻译后,再让计算机执行的行为,PASCAL语言和C++语言都属于编译型语言。
高级语言程序要通过编译器才能运行得到结果,不同的计算机语言使用的编译器不同,如不能用C++编译器编辑运行BASIC语言编写的程序,同时,编译后的程序,在不同操作系统环境下进行的解析也会略有区别。
3.集成开发环境
知道了编辑和编译后,自然就需要一个用来编辑程序的软件和一个对程序进行编译的软件。编辑的软件有很多,所有的文本编辑器都可以,比如记事本。编译的软件只能是特指,比如C语言用的是GCC编译器,C++语言用的是G++编译器等。
一个程序编辑后,需要经过编译,方可执行。可万一编写程序时出错了,或者程序思路有问题,那么就要反复对程序进行编辑和编译,显得非常麻烦。为了方便程序的编辑和编译,软件公司开发了程序语言的集成环境,也就是将编辑和编译调试集成在一块,形成了集成开发环境(IntegratedDevelopmentEnvironment,IDE)。IDE对人们学习编程提供了极大的方便。
为了学习方便,本章将在附录A中简单介绍DEVC++的IDE使用方法。当然大家选择C++语言的其他IDE也可,使用方法也与Dev-C++的IDE类似。
1.1.2程序结构
为了弄清C++的编程规则,首先我们看C++程序的基本结构,如图1.1所示。
图1.1C++语言基本结构
由图1.1可以看出,C++程序由头文件、名字空间和主函数组成。
1.头文件
头文件是C++程序对其他程序的引用。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明。include的英文含义是“包括”。格式为:#include<引用文件名>或#include“引用文件名”。
2.名字空间
指明程序采用的名字空间。采用名字空间是为了在C++新标准中,解决多人同时编写大型程序时名字产生冲突问题。比如A、B两个班都有叫张三的人,你要使用A班的张三,必然要先指明是A班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错人。“usingnamespacestd”表示这个程序采用的全部都是std(标准)名字空间,std是英文单词standard(标准)缩写。若不加这句,则该程序中cout和endl都需指明其名字空间的出处。cout语句必须写成std::cout<<"Iloveprogramming."<3.主函数
日常生活中,我们要完成一件具有复杂功能的事,总是习惯把“大功能”分解为多个“小功能”来实现。在C++程序的世界里,“功能”可称为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其他代码调用。
一个程序,无论复杂或简单,总体上都是一个“函数”,这个函数称为“main函数”,也就是“主函数”。比如有个“做菜”程序,那么“做菜”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜、切菜、炒菜”等子函数。main函数在程序中大多数是必须存在的,程序运行时都是找main函数来执行。
每个函数内的所有指令都需用花括号“{}”括起来。一般每个函数都需要有一个返回值,用return语句返回。
练习
(1)阅读附录A中的Dev-C++集成开发环境,尝试运行图1.1的程序。
(2)熟悉C++程序的基本结构,尝试改变程序,输出你想说的句子。
1.2整数算术运算
【例1.2】把20张画平均分给7个同学,每人分得几张,还剩几张?
分析:每个人分得的张数是20除以7的商,剩余的张数是20除以7的余数。
程序如下:
1//exam1.2
2#include
3usingnamespacestd;
4intmain()
5{
6cout<<20/7<7cout<<20%7<8return0;
9}
5
运行结果:
对于这个解决问题的程序,大家的疑问会是什么呢?cout语句能做什么事?如何表达两个整数相除的商和余数?为了回答这些问题,我们需要学习cout语句的格式和使用,学习算术表达式的计算机表示方式。
1.2.1cout语句
cout是C++的输出语句,C++的输出和输入是用“流”(stream)的方式实现的。
图1.2C++的输出流
在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。在执行cout语句时,先把数据存放在输出缓冲区中,直到输出缓冲区满或遇到cout语句中的endl或' '为止,此时将缓冲区中已有的数据一起输出,并清空缓冲区。输出流中的数据在系统默认的设备(一般为显示器)输出。输出遇到endl或' '换行。cout语句的一般格式为:cout<<项目1<<项目2<<…<<项目n;
功能:
(1)如果项目是表达式,则输出表达式的值。
(2)如果项目加引号,则输出引号内的内容。
1.2.2算术运算符
在例1.2中运用cout语句输出算术表达式的值,C++语言为算术运算提供了5种基本算术运算符号:加(+)、减(-)、乘(×)、除(/)还有模(%)。如表1.1所示。
表1.1基本算术运算符
上述运算符的优先级与数学中相同,*、/、%高于+、-。
表1.1中特别值得注意的是“/”号和“%”,对于“/”号,当参与运算的数含有实数,运算结果是两数相除的值,当参与运算的两个数都是整数,运算结果是两数相除的商,如:例1.2程序中第6行求20/7的商为2;对于“%”是求两个整数相除的余数,如:例1.2程序中第7行求20%7的余数为6。
【例1.3】阅读下列程序和运行结果,学习表达式的书写格式,了解程序中表达式运算先后顺序和数学习惯的数学表达式运算先后顺序的关系。
1//exam1.3
2#include
3usingnamespacestd;
4intmain()
5{
6cout<<9/8<<4*(6+3)%5<<(4*6+3)%5<7return0;
8}
运行结果:
说明:由于9和8是整数,因此,9/8结果为1;对于式子4*(6+3)%5,先计算4*(6+3)的值为36然后%5,结果为1;对于式子(4*6+3)%5,先计算(4*6+3)的值为27然后%5,结果为2。表达式的运算先后顺序与数学习惯相同。
【例1.4】在例1.3中3个表达式的运行结果紧挨在一起,希望改变输出方式,要求:(1)每个表达式值隔开一个空格;(2)在结果前提示表达式。
《算法的奇妙世界:从零开始的计算思维之旅》 这本书将引领你踏上一段激动人心的计算思维探索之旅,即使你从未接触过编程,也能轻松入门。我们相信,算法和编程不仅仅是枯燥的代码,更是解决问题、创造可能性的强大工具。在这里,你将学会如何用一种全新的方式思考,如何将现实世界的问题拆解成可执行的步骤,并最终用计算机语言将这些步骤付诸实践。 第一部分:思维的基石——认识计算思维 在开始编写任何代码之前,我们需要搭建起坚实的思维框架。本部分将从最基础的概念入手,让你理解“计算思维”究竟是什么。 什么是问题解决? 我们将从日常生活中的例子出发,例如“如何煮一碗面条?”、“如何规划一次旅行?”来引出“问题”的定义,以及解决问题所需要的基本要素:理解问题、设计方案、执行方案、验证结果。 算法的魅力: 你将了解到,无论多么复杂的问题,都可以被分解成一系列清晰、有序的指令。我们将用生动有趣的类比,例如“制作一张地图”、“教机器人跳舞”来解释算法的概念,让你体会到算法的逻辑之美和简洁高效。 程序的语言: 计算机是怎样理解我们的指令的?我们将简要介绍编程语言的作用,以及为何需要学习一门语言来与计算机沟通。这部分不会涉及具体的语法,而是建立一个宏观的认识。 数据:信息的载体: 程序处理的都是数据。我们将探讨数据的基本类型,比如数字、文字、布尔值(真/假),并通过形象的比喻,例如“积木”、“盒子”来帮助你理解数据是如何被组织和存储的。 逻辑的力量: 程序执行的关键在于逻辑判断。你将学习到“如果……那么……”、“当……时……”等基本的逻辑结构,理解它们在程序中的作用,并尝试用这些逻辑来描述生活中的场景。 第二部分:探索编程的乐趣——从简单到进阶 在打下坚实的思维基础后,我们将正式进入编程的世界。本书将选择一种广受欢迎且易于上手的编程语言(此处省略具体语言名称,以保持通用性)作为学习工具,带领你从最简单的指令开始,逐步构建更复杂的程序。 你的第一个程序: 从“Hello, World!”开始,体验编写和运行程序的乐趣。我们将一步步指导你完成代码的输入、编译和运行,让你亲手看到自己编写的指令转化为屏幕上的输出。 变量:变化的容器: 学习如何使用变量来存储和管理数据。你将理解变量的声明、赋值和使用,并通过实际的例子,例如“计算生日”、“记录分数”来掌握变量的应用。 运算符:数据的运算: 掌握基本的算术运算符(加、减、乘、除)、比较运算符(大于、小于、等于)和逻辑运算符(与、或、非),学会如何对数据进行各种运算和比较。 控制流程:程序的指挥棒: 顺序结构: 理解程序代码是如何按照从上到下依次执行的。 分支结构(if-else): 学习如何根据不同的条件来决定程序的执行路径。例如,根据用户输入的成绩,判断是“及格”还是“不及格”。 循环结构(while, for): 掌握如何让程序重复执行某些操作。我们将通过“数数”、“重复打印”、“查找特定元素”等例子,让你体会到循环的强大威力。 数据结构:有序的组织: 列表(数组): 学习如何将一组相关的数据组织成一个有序的集合,并进行访问和修改。例如,存储一串同学的名字,或者一个班级的考试分数。 字典(映射): 了解如何使用键值对来存储和查找数据,实现更灵活的数据管理。例如,根据姓名查找对应的电话号码。 函数:代码的积木: 学习如何将一段可重用的代码封装成函数。你将理解函数的定义、参数传递和返回值,并学会如何通过调用函数来组织和简化程序,提高代码的可读性和可维护性。 输入与输出:人机交互: 学习如何从用户那里获取输入,以及如何将程序的结果展示给用户,实现简单的交互式程序。 第三部分:走向应用——算法在实践中的力量 当掌握了基本的编程技能后,我们将把目光投向更广阔的应用领域,让你看到算法和编程是如何解决实际问题的。 搜索与查找: 学习如何高效地在大量数据中找到所需的信息。我们将介绍线性的查找方法,并初步引入更高效的二分查找思想,让你体会到算法效率的重要性。 排序的艺术: 学习如何将一组无序的数据按照特定的顺序排列。我们将介绍冒泡排序、选择排序等基础的排序算法,让你理解排序过程中的逻辑和步骤。 简单的游戏开发: 通过编写一些简单的游戏,例如“猜数字游戏”、“石头剪刀布”,来巩固你所学的知识,并体验编程带来的创造乐趣。 数据分析初探: 学习如何用程序处理和分析数据。例如,计算一组数据的平均值、最大值、最小值,或者进行简单的频率统计。 问题分解与抽象: 学习如何将一个复杂的问题分解成若干个更小的、可管理子问题的思路,并运用编程来实现。 本书的特色: 循序渐进,零门槛入门: 每一章都建立在前一章的基础上,确保你能够逐步掌握知识,不会感到 overwhelmed。 丰富的实例与练习: 大量的代码示例和动手练习,让你在实践中巩固所学,培养解决问题的能力。 生动形象的讲解: 运用贴近生活、寓教于乐的比喻和故事,让抽象的概念变得易于理解。 强调计算思维: 不仅仅是传授编程技巧,更注重培养你独立思考、逻辑推理和解决问题的能力。 面向未来的学习: 为你打下坚实的基础,为未来深入学习更复杂的算法和编程技术做好准备。 谁适合阅读这本书? 对计算机和编程充满好奇的中学生。 希望培养逻辑思维和解决问题能力的初学者。 任何想要了解程序是如何工作的,并希望自己动手创造的人。 阅读本书,你将收获: 掌握基础的编程语法和核心概念。 培养严谨的逻辑思维和分析能力。 提升解决实际问题的能力。 体验创造的乐趣,点燃对计算机科学的热情。 加入我们,一起开启这场充满惊喜的计算思维之旅吧!在这个过程中,你不仅会学到编程的技巧,更会发现一个崭新的、充满无限可能的世界。

用户评价

评分

这本书的内容,虽然名字里写着“CCF中学生计算机程序设计-入门篇”,但我拿到手之后,发现它更像是一本关于算法思维启蒙的读物,而不是一本教你具体怎么敲代码的教材。比如,里面对“分治”这个概念的阐述,我感觉它并没有直接给出Python、C++等语言的实现代码,而是通过一些非常形象的比喻,比如“分而治之”的古代兵法,或者是“切蛋糕”的场景,来让你理解这个思想。它强调的是如何将一个复杂的问题分解成更小的、更容易解决的部分,然后再将这些部分的答案组合起来得到最终的解。读到这里,我并没有觉得我学会了如何编写一个排序算法,但我好像真的对“分治”这个抽象的概念有了一个更深刻的认识,甚至能够在我自己的学习和生活中有意无意地运用这种思维方式去解决一些小问题。它更像是打开了一扇门,让我看到了算法的“灵魂”,而不是直接给我一把钥匙去开锁。

评分

这本书给我最大的感受是,它不仅仅是在教你“怎么做”,更是在教你“为什么这么做”。在讲到“图论”的某些基本概念时,它并没有直接给出各种图的定义和性质,而是通过一个“社交网络”的比喻,让你理解节点和边的含义,以及网络中信息的传播方式。然后,它再慢慢地引申到现实世界中的各种应用,比如地图导航、交通线路规划等等。这种将抽象的计算机概念与我们熟悉的生活场景紧密结合的方式,让我在阅读过程中一点都不觉得枯燥,反而充满了探索的乐趣。我感觉它培养的是一种“计算思维”,让你能够用更系统、更科学的方式去分析和解决问题,而不仅仅是死记硬背一些编程技巧。它让我意识到,编程不仅仅是写代码,更是一种解决问题的艺术。

评分

这本书的叙事方式,我觉得最独特的地方在于它并没有局限于“计算机”这个狭窄的范畴。在讲到“贪心算法”的时候,它举的例子竟然是“找零钱”的问题。它并没有直接给你一个程序,而是让你思考,在最理想的情况下,每次都选择面额最大的那张纸币,是不是就能最快地找完零钱。然后,它再引申到生活中的一些决策场景,比如如何高效地安排一天的时间,或者如何在有限的资源下做出最优选择。读完这部分,我并没有立刻学会写一个贪心算法的程序,但我对“贪心”这个概念的理解,已经超越了纯粹的计算机科学,感觉它是一种更普适的、解决问题的哲学。这种从生活现象到抽象算法的迁移,让我觉得这本书的编排非常有匠心,它在培养你解决问题的能力,而不仅仅是教会你写代码。

评分

实话讲,拿到这本书的时候,我对“动态规划”这个词是相当畏惧的。在我过去的认知里,这绝对是算法中的“大魔王”。然而,这本书处理“动态规划”的方式,却出乎意料地温和。它并没有一开始就抛出一些复杂的递推公式,而是从一个非常简单的“爬楼梯”问题入手。它一步一步地引导你思考,当你爬到第n层楼梯的时候,你可能从哪一层楼梯上来,然后将这个问题分解成更小的子问题,并最终找到了问题的规律。在这个过程中,我并没有感觉到强烈的“烧脑”感,反而是有一种“豁然开朗”的感觉。它让你看到,很多看起来高深莫测的算法,其实都可以通过清晰的逻辑和细致的分解,变得触手可及。我感觉这本书在“化繁为简”这方面做得非常出色。

评分

我当时买这本书,其实是被“信息学奥赛官方指定用书”这个头衔吸引的,想着里面肯定有各种各样的竞赛题目和解题思路。结果翻了几页,我发现它对于“递归”的讲解,真的是别出心裁。它没有上来就甩给你一堆函数调用栈的图,而是用了一个非常有名的“汉诺塔”的故事来引入。读着那个故事,你会很自然地理解为什么需要重复地执行同一个操作,直到达到一个基本条件。然后,它再慢慢地引导你思考,如何将这个故事抽象成一个通用的编程模型。坦白说,我当时对递归的理解一直停留在“函数调用自己”这个比较表层的概念上,但通过这本书的讲解,我好像一下子打通了任督二脉,深刻体会到了递归的精髓在于“定义自身”和“基本情况”,以及它在解决一些看似棘手的问题时所展现出的优雅和高效。虽然我还没开始刷真题,但感觉对很多算法题目的理解,已经有了全新的视角。

评分

很多。

评分

很好

评分

不错。。。。。。。。。。

评分

学校里要用,这书应该是正版。

评分

卖家发货速度太慢了,我买的第3天才发货。其它的就是快递工作人员服务恶劣,尽然威胁我说发回总部,她以为我们这些高中生好欺负吗?

评分

很好!

评分

卖家发货速度太慢了,我买的第3天才发货。其它的就是快递工作人员服务恶劣,尽然威胁我说发回总部,她以为我们这些高中生好欺负吗?

评分

评分

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有