GESP C++ 基础
变量、类型与输入输出
01
变量可以理解成带名字的小盒子,程序把数据放进去,再在需要时取出来。声明变量时先确定数据类型,是因为计算机需要知道应该为它准备多大的空间,以及允许对它进行哪些运算。
整数适合表示人数、次数和编号;带小数的数据通常使用浮点类型;单个字符与一段文字又有各自的表示方式。选择类型时既要考虑数据的形式,也要留意可能出现的最大范围。两个整数相除仍按整数规则处理,这是初学时很容易忽略的一点。
输入输出看起来简单,却直接影响程序能否正确读取数据。读题时应先确认输入顺序、数据数量和数据之间的分隔方式,再按照完全相同的顺序读取。输出则要严格遵守要求,额外的说明文字、空格或换行都可能让正确的计算得到错误的评测结果。
小结:先想清楚数据是什么,再选择类型;先读懂输入格式,再开始写计算过程。
GESP C++ 控制结构
循环、计数与边界
02
循环适合处理重复发生的事情。使用固定次数的循环时,最重要的是明确起点、终点和每次变化的步长。如果循环变量从零开始,那么执行若干次后的最后一个取值,往往比次数少一;如果从一开始,则更接近日常计数习惯。
边界错误通常来自“包含终点还是不包含终点”。面对从起点到终点的整数范围,可以先在纸上写出前几个数和最后几个数,再决定条件中使用小于还是小于等于。这样做只需要几秒钟,却能避免大量调试。
循环中还要注意变量何时初始化。统计总和、数量、最大值或最小值时,初始值必须与统计目标一致。把需要保留的累计量误写在循环内部,会导致它每一轮都重新开始;把只在单轮使用的临时量放在外部,又可能让上一轮的数据影响下一轮。
小结:写循环前先列出“第一轮、第二轮、最后一轮”,边界条件通常就会自然清晰。
GESP C++ 数据处理
数组、下标与简单排序
03
数组用来保存一组类型相同的数据。数组中的每个位置都有下标,C++ 的下标从零开始。长度为若干的数组,合法的最后一个下标总比长度少一。访问范围之外的位置不会自动提醒我们,结果可能是错误数据,也可能让程序异常结束。
处理数组时,可以把下标理解为位置,把数组元素理解为该位置保存的值。很多错误来自混淆二者,例如把元素值当作下标,或在交换两个元素时只改了其中一个。逐步跟踪下标和元素值,是检查数组程序的有效方法。
简单排序的核心是比较与交换。冒泡思路会反复比较相邻元素,让较大的元素逐渐移动到后面;选择思路则在未整理的部分寻找最合适的元素,再把它放到当前位置。理解每一轮结束后“哪些位置已经确定”,比记住写法更重要。
小结:数组先检查下标范围,排序先说明每一轮确定了什么,再考虑具体实现。