数据结构前导课 | 2 披荆斩棘——只学C++,可以做哪些竞赛题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构前导课 | 2 披荆斩棘——只学C++,可以做哪些竞赛题相关的知识,希望对你有一定的参考价值。
、
戳一戳!和我一起走进信息学的世界
导读
信息学能够有助于孩子未来工作发展,提升孩子的综合能力。
这一期课,我们承上启下,简单复习信息学所有C++的知识体系,讲解一部分初赛和复赛的知识;然后就从顺序表和链表,开始一步一步走进数据结构的世界!
前一节课,我们复习了信息学C++的整体知识结构,这节课让我们一起来看一下掌握了这些知识结构,我们可以做哪些初赛题目。
往期回顾
【NOIP竞赛/CSP认证】
▶ 赛前必看!信息学名师带你复习NOIP竞赛初赛及CSP认证初赛
【信息学精华帖】
▶ 收藏!交流会内容全公开,让你陪孩子更好地学习信息学
▶ 信息学提高班知识体系详解与家长常见问题解答!让孩子赢在提高班学习的起跑线!
【数据结构前导课】
▶ 数据结构前导课 | 1 温故知新——一篇文章领略信息学C++知识结构
【C++提高班教程】
▶ C++强化 | 02 继续前行,三大结构终极介绍
▶ C++强化 | 09 一篇文章带你探索函数的奥秘
【C++基础班教程】
▶ C++总结 | 11 开关语句switch-case
▶ C++总结 | 14 break与continue
▶ C++总结 | 15 while与do-while
1 信息学竞赛总览
经过两个学期的学习,所有有关于C++基础的知识都全部讲解完毕,上一节课,我们也整体复习了信息学C++的全部知识体系,相信大家对信息学C++有更加清晰的认识和把握了。
这一部分,让我们先来一起认识一下信息学初赛吧!对于刚刚进入信息学世界的孩子们来说,能够接触到的信息学竞赛主要有两个:NOIP竞赛和CSP认证。让我们一起来简单了解一下NOIP竞赛和CSP认证吧!
1 NOIP竞赛
NOIP竞赛是历史比较久远的竞赛,NOIP竞赛分两个组,一个叫普及组,一个叫提高组。每组竞赛都包括初赛和复赛,不同地区的能够进入复赛的初赛分数线不同。
普及组和提高组的初赛题型大致类似,唯一不同在于最前面的选则题,普及组只有单选题,提高组还有不定项选择题。从题目角度的难度来说,普及组的难度小于提高组。
普及组和提高组的复赛都是给一个问题,然后写代码。普及组有四道,提高组有六道,一般来说,普及组的四道题和提高组的前四道题难度相近,题目的难度也是逐渐递增。
2 CSP认证
CSP认证之前主要是针对于计算机岗位工作人员,现在也面向中小学生,认可度略低于NOIP竞赛!CSP认证包括两个等级:CSP-J(Junior,入门级)和CSP-S(Senior,提高级)两个级别。
CSP的初赛难度低于NOIP竞赛,这是因为,CSP认证初赛中的题目都是选择题,这就说明我们可以使用一些答题技巧,并且选项会给我们提供思路,并带领我们一步一步理解题目。
虽然上面有很多差别,但是CSP认证中的题目涉及到的知识点与NOIP竞赛完全一致!所以大家不用担心,我们都会讲到。
3 说在后面的话
虽然两个比赛重要程度不同,考试题型不同,但是所有的知识点都是一样的,我们平常学习,会涉及到所有的知识点,在考前,会有具体的针对于不同类型考试的不同赛前辅导!所以,我们平时只需要跟着老师好好学即可。
接下来,让我们围绕着难度更高的NOIP竞赛的题型来分析一下,对于当前的我们来说,信息学竞赛初赛题目,我们都能做哪些?
2 选择题
NOIP竞赛第一部分就是选择题,对于普及组来说,只有单项选择题,近几年,选择题有15道,每道题2分。对于提高组来说,既有单项选择题(10道,每道2分),又有不定项选择题(5道,每道2分)。
选择题中,有一部分是程序设计,其余部分为:
计算机基础理论
编码、进制
数据结构
数学、逻辑与算法
这四部分,我们在后面的课程中会逐步给大家讲解。
1 单选题
以下面这道题目为例:
这个题目就需要我们认真分析:
循环第一轮,n++,n变为1,n%3≠0,执行下一轮;
循环第二轮,n++,n变为2,n%3≠0,执行下一轮;
循环第三轮,n++,n变为3,n%3=0,k--,k变为3,执行下一轮;
循环第四轮,n=k,退出循环。
最后结果n和k都是3,选择D。
对于单项选择题,我们一般都是认真分析,找到结果即可,程序设计这一部分,单项选择题,主要是围绕分析程序执行结果和补充程序两个部分。
这两个主要是培养大家能读懂别人的程序,优化完善别人的程序的能力,在选择题中,这两个部分比较简单。初赛中的最后两大块分别就是阅读程序写结果和补充程序题,那两大块会涉及一些数据结构和算法的知识,难度比较大。
2 不定项选择
以下面这道题目为例:
分析一下上面这道题目,对于B和D,循环条件使得循环体内无法执行,需要改为i<=100才可以。所以这道题目选择AC。
对于不定项选择题,我们需要认真审视每一个选项,才能保证做对。不定项选择题主要是给一个功能,判断下列的做法哪几个是正确的。
3 问题求解题
问题求解题我们也可以当做填空题,问题求解题只有两道,每道5分,每道题可能有多个空。
问题求解题一般都围绕数据结构、数学、逻辑和算法这几部分。没有出过与程序设计相关的题目,在这我们就不展开说明了。
4 阅读程序题
阅读程序题,就是根据给定的程序分析程序的执行结果!对于NOIP竞赛来说,就需要我们自己一步一步分析了,对于CSP认证来说,它会给多个选择题,一步一步引导我们去思考。只要我们能掌握NOIP竞赛的题目,CSP认证的题目也就不在话下了。
NOIP竞赛中,阅读程序题有4道,每道题8分;一般来说,第一道题都是最简单的,只需要简单分析一下就能出结果,这道题我们以目前的能力都是会做的。第二道题和第四道题,难度有所提升,其中有一道题需要我们按照他的程序认真分析,将输入带入执行一遍程序即可得到答案;另外一道题目,直接求解会非常难,但是我们可以阅读程序,了解程序功能,根据程序功能自己分析输入得到输出。第三道题,一般都是最难的,并且会结合递归,需要我们一步一步,认真分析,得到最终结果。
对于现在的我们来说,我们必须要掌握第一道题,有能力的同学可以去接触并掌握二题和四题,第三题,需要我们不断练习,不断提升。
1 16年普及组第一题
我们首先看一下16年普及组的第一题:
我们仔细分析,首先我们输入第一个变量,第一个变量不为零,计数器count+1变为1,sum也加变为第一个值。
在循环中,只要我们的输入不为0,我们就会一直将输入加到sum上去,也会统计输入的个数,然后会分别求每次的最大和最小值。
根据上面的分析,我们知道:
max保存的是第一个0以前的最大值,
min保存的是第一个0以前的最小值,
sum保存的是第一个0以前的所有数的和,
count保存的是第一个0以前的所有数的个数。
我们看输入,我们知道0之前的最大值为6,最小值为1,sum为(1+2+3+4+5+6)= 21,count为6,所以输出为:
6,1,3
21/6=3(注意是整数类型)。
2 18年普及组的第一题
我们接下来看一下18年普及组的第一题:
看这个代码我们知道,如果是大写字母字符,就让其变为其后面的字符,其他的不变,所以输出结果为:
RuanHuoMianTai
5 完善程序题
最后一部分就是完善程序题,这一部分题目,需要我们能理解出题者的意图,按照出题者的意图完善程序。完善程序题会说明题目的功能。
完善程序题有两道,一般每道题14分,也有可能两道题分值不同,总分28分是固定的。
一般来说,完善程序题都会涉及到具体的数据结构或者数学算法,需要我们学习了后面的知识才能更好地做相关题目。在这里,我们举个例子让大家了解完善程序题。
1 字符数字删除
我们看一下下面这道题目:
(字符数字删除)下面程序的功能是将字符串中的数字字符删除后输出。请填空。(每空3分,共12分)
对于第一个空来说,如果这个字符不是数字字符,就会保存下来,判断条件就应该是字符<0或者字符>9,也就是说第一个空应该填 || 。
当我们执行完上面的操作,就说明我们又多了一个非数字字符,j表示的是当前的非数字字符,所以就该让j+1,第二个空可以是如下三种:j++,++j,j+=1。
对于第三个空,注意两点,第一个点函数返回值类型是int,所以肯定不是让我们返回删除整数字符后的字符串,应该是返回一个整数。再看主函数中,函数的返回值传给了变量len,len是删除整数字符后的字符串长度,所以函数返回值应该是j,也就是说第三个空为 j 。
第四个空就很简单了,就需要我们把每个字符输出即可,注意输出时的索引为i,也就是第四个空为 s[i] 。
总结一下,答案如下:
(1)||
(2)j++ 或 j=j+1 或 ++j
(3)j
(4)s[i]
6 作业
本节课的作业,就是复习上面的习题,并完成下面的题目!
1 阅读程序题
分析下面这道题目的执行结果:
要求能分析出程序的功能,并求程序的输出结果。
AI与区块链技术
长按二维码关注
以上是关于数据结构前导课 | 2 披荆斩棘——只学C++,可以做哪些竞赛题的主要内容,如果未能解决你的问题,请参考以下文章