首页 > 编程语言 >数据结构前导课 | 1 温故知新——一篇文章领略信息学C++知识结构

数据结构前导课 | 1 温故知新——一篇文章领略信息学C++知识结构

时间:2022-11-15 10:32:05浏览次数:66  
标签:信息学 函数 温故知新 C++ 运算符 数组 知识结构 结构


戳一戳!和我一起走进信息学的世界

导读

C++是大多数学生入门信息学、参加信息学竞赛必备的编程语言。掌握C++,能够有助于孩子未来工作发展,也能提升孩子的综合能力,如抗挫折能力、逻辑分析能力等。


这一期的课,我们的目的是:承上启下,我们会简单复习信息学所有C++的知识体系,讲解一部分初赛和复赛的知识;然后就从顺序表和链表,开始一步一步走进数据结构的世界!

往期回顾

【NOIP竞赛/CSP认证】

▶  赛前必看!信息学名师带你复习NOIP竞赛初赛及CSP认证初赛


【信息学精华帖】

▶  收藏!交流会内容全公开,让你陪孩子更好地学习信息学

▶  信息学的万般好处!附C++必备基础知识总结

▶  信息学提高班知识体系详解与家长常见问题解答!让孩子赢在提高班学习的起跑线!

▶  再回首,最全提高班知识总结,做更优秀的自己!


【C++提高班教程】

▶  C++强化 | 01 新学期再出发!温故知新!

▶  C++强化 | 02 继续前行,三大结构终极介绍

▶  C++强化 | 03 一维数组入门

▶  C++强化 | 04 数组越界

▶  C++强化 | 05 一维数组经典应用

▶  C++强化 | 06 一篇文章带你掌握字符数组

▶  C++强化 | 07 二维数组

▶  C++强化 | 08 二维数组经典案例

▶  C++强化 | 09 一篇文章带你探索函数的奥秘

▶  C++强化 | 10 函数进阶必备

▶  C++强化 | 11 这样学递归,才不会觉得难

▶  C++强化 | 12 格式化输入输出与文件操作

▶  ​​C++强化 | 13 结构体入门

  ​​C++强化 | 14 结构体进阶


【C++基础班教程】

▶  C++总结 | 01 程序的世界

▶  C++总结 | 02 输出、换行与注释

▶  ​C++总结 | 03 变量定义、赋值与运算​

▶  ​C++总结 | 04 算术运算符与赋值运算符​

▶  ​C++总结 | 05 cin语句​

▶  ​C++总结 | 06 程序中的数据类型​

▶  ​C++总结 | 07 数据类型补充​

▶  ​C++总结 | 08 顺序结构​

▶  ​C++总结 | 09 if 和 if-else​

▶  C++总结 | 10 if嵌套与逻辑运算符

▶  C++总结 | 11 开关语句switch-case

▶  C++总结 | 12 for循环及其应用

▶  C++总结 | 13 数据范围与数据类型

▶  C++总结 | 14 break与continue

▶  C++总结 | 15 while与do-while

▶  C++总结 | 16 循环嵌套及其应用 


​ ​ ​ ​ ​


1 C++整体回顾

经过两个学期的学习,所有有关于C++基础的知识都全部讲解完毕,之后我们就真正进入到信息学比较难的地方了。


这节课,让我们来一起复习一下C++的知识,然后以更好地姿态,面对后面的课程吧!

1 知识总览

第一学期基础班,我们学习了变量、输入输出、分支语句等知识。第二学期提高班,我们学习了数组、函数、结构体、格式化输入输出。


接下来我们一起来总览一下两个学期的内容:


1、输入输出
包括:cin、cout输出和格式化输入输出
2、变量
包括:变量定义、操作,变量类型等
3、运算符
包括:算术运算符、条件运算符、逻辑运算符等
4、表达式
包括:算术表达式、条件表达式、逻辑表达式等
5、顺序结构
6、分支结构
包括:if系列判断语句,switch-case开关语句
7、循环结构
包括:for、while、do-while
8、break和continue
9、数组
包括:一维数组、字符数组、二维数组
10、函数
包括:函数定义、函数调用、递归等
11、结构体
包括:结构体定义、结构体调用等;
12、文件操作
包括:文件的读、写,竞赛中的文件读写等;


上面就是我们这两期课的主要内容。



2 难度介绍

从整体来看,第一学期课内容较多,难度较小;第二学期,内容较为集中,但难度有所增加;


相比第一阶段,第二阶段,需要的是多思考,想清楚具体的逻辑,按照竞赛题目的方法去做相关的练习!


今后的课程也是如此,我们要围绕信息学竞赛去多多练习。


当然在此之前,我们要先整体复习一下,做好准备,再次起航!


2 变量/常量与输入输出

首先我们先来复习一下变量/常量和输入输出吧。

1 变量与常量

我们最早接触的内容就是输出,其次就是变量,输出和输入放在一起讲,我们先来看一下变量和常量。


想要使用一个变量,要先定义变量,定义变量的格式:


数据类型 变量名 (=变量初值);


变量的数据类型有:


整数类型:int(整型), short(短整型), long(长整型), long long(长长整型/超长整型),……浮点型(小数类型):float(单精度浮点型), double(双精度浮点型) 
字符型:char
字符串:string
布尔类型:bool


变量名要注意有命名规范:


(1)只能由数字、字母、下划线组成;
(2)数字不能放开头;
(3)不能是已有的关键字。(一个程序中,不能多次定义同一个变量名)


变量在最前面还可以增加变量前缀,主要有两个前缀:


一个是用于声明无符号的unsigned前缀。unsigned前缀只能作用于整数类型和字符类型,也就是说只能放在整数类型和char类型前面。


一个是用于声明常量的const前缀。const前缀能作用于我们要使用的这几种数据类型,但是用const声明的常量只能在定义时赋值,不能先定义,后赋值,并且一旦赋值,无法修改值。数字相关类型(整数类型和小数类型)和字符类型必须在定义时赋值,如果不赋值,会报错。string类型如果不在定义时赋值,默认string类型的值为空字符串。

2 输入与输出

我们很早就接触了输入输出,在第二期课,又专门讲了格式化输入输出。


普通方式的输入输出,需要使用头文件和命名空间:


#include<iostream> //标准输入输出流,cin,cout,endl
using namespace std; //命名空间


格式化输入输出需要使用头文件:


#include<cstdio>


普通方式的输入为cin,输出为cout,cin和cout的优点是能够适应所有的数据类型,不需要额外的格式控制字符;也就是说使用cin和cout更加方便,一般来说,我们也都更加倾向于使用cin和cout进行输入输出。


格式化输入为scanf,格式化输出为printf,scanf和printf的优点主要有两方面,一方面是可以控制输入输出格式,使用更加灵活,一方面是cin和cout适配性强,就会降低其读取和输出的效率,在一些极端的代码中,使用printf和scanf的效率更高。

3 运算符与表达式

运算符和表达式是分不开的,表达式就是运算符和变量或常量构成的式子。


我们首先回顾运算符,然后再回顾表达式。

1 运算符

运算符包括如下几种:


算术运算符:+(加), -(减), *(乘), /(除,对整形数据是整除,对浮点型数据是普通除法), %(取余), ++, --
赋值运算符:=(赋值),+=(加赋值),-=(减赋值),*=(乘赋值),/=(除赋值),%=(取余赋值)
关系运算符:>(大于), <(小于), >=(大于等于), <=(小于等于), ==(等于), !=(不等于)
逻辑运算符:&&(逻辑与), ||(逻辑或), !(逻辑非)
其他运算符:括号运算符、逗号运算符、位运算符(下一期课讲)


运算符还有一种分类方式,根据运算符所结合的变量的个数,如++和--运算符,只需要结合一个变量,这种运算符叫单目运算符;如+,-,*,/需要结合两个变量,这种运算符叫做双目运算符

2 表达式

运算符和变量或常量结合构成表达式,主要包括如下几个:


算术表达式
赋值表达式
关系表达式
逻辑表达式


3 运算符与表达式的关系

最简单最直接的就是:运算符是构成表达式的重要部分。


一个表达式中可能会有多个运算符,那对于整个表达式来说,就要考虑那个运算符的优先级更高。还要考虑运算符的结合顺序,有些运算符是从左往右结合,有些是从右往左结合。


完整的内容有很多,我们现在只讲我们接触到的:


数据结构前导课 | 1 温故知新——一篇文章领略信息学C++知识结构_运算符


上面这个表中,涉及到的就是各个类型的运算优先级,越往上优先级越高,同一优先级的,按照其结合性方向进行先后运算。


对于我们普通的使用来说,涉及不到上面这么复杂的内容,只需要我们把课上讲过的掌握了即可。

4 三大结构

第一学期最重要的就是三大结构了!

1 顺序结构

顺序结构是最基本的结构,一个程序中,一定会有顺序结构,并且顺序结构是占主体的。


顺序结构就是从上往下依次执行。

2 分支结构

分支结构有两块,一块是if系列的判断语句,包括:


if
if-else
if-else if-else
if嵌套


另一块是switch-case开关语句,需要和break结合使用。

3 循环结构

循环结构主要有如下:


for循环
while循环
do-while循环
循环嵌套


循环是第一学期课中,最难的一块,循环最重要的是想明白,什么流程可以重复,将重复的内容使用循环实现。

5 数组

信息学提高班最先讲的就是数组,数组也是我们花费了大量精力和时间来学习,这是因为,数组是我们信息学竞赛中必备的一个部分,特别是复试中的代码,都需要我们去定义各种各样的数组去保存数据,执行操作。

1 一维数组

首先我们讲了一维数组的定义和调用。


一维数组定义方式如下:


数据类型 数组名[数组长度] (={初值});


特别要注意的是访问每一个具体的值的时候的索引要小于数组长度。



2 字符数组

字符数组是一类比较特殊的一维数组,字符数组可以看做是字符串,字符数组中比较重要的是字符数组的输入和输出,输入使用gets,输出使用puts。

3 二维数组

二维数组我们讲了几个经典应用,二维数组就是在一维数组的后面增加了一个中括号。

6 函数

函数是这一期课的重点和难点,让我们从后面的内容中,对函数进行一下总结复习吧!

1 函数入门

我们首先讲解了函数的结构、定义方式等。


一个函数至少需要包括如下三部分:


函数类型
函数名
函数体


对于函数类型,如果函数类型不是void类型,则函数必须要有对应的返回值。


除此之外,最重要的就是函数参数。


函数参数不一定是必要的,但一定是重要的。参数总结如下:


参数是写在小括号里面的;
参数要声明类型;
参数如果有多个,就需要用逗号隔开;
参数一定要在函数体中应用,不然就没有声明的必要了。


2 函数进阶

进阶课中,我们讲了更加深入的有关于函数的知识点,包括:


函数定义位置
局部/全局变量
实参和形参
函数参数的引用调用


函数一般定义在调用之前,也可以在调用前先声明,具体的定义细节写在其他位置。注意函数里不能定义函数,只能调用函数。


对于我们来说,定义在所有函数前面,能被所有函数调用的变量叫全局变量,在某个函数里面的变量叫局部变量。


定义函数的过程中,使用的参数是形参;在具体调用的过程中使用的参数是实参。


函数参数的引用调用会改变参数本身的值,其他调用,只会在函数调用过程中改变参数的值,调用过后,参数的值会还原。

3 递归

函数之间可以相互调用,而递归就是函数自己调用自己。递归没有新知识点,或者说新知识点就是递归的方式就是自己调用自己。


递归虽然没有新知识点,但是递归难,难就难在自己调用自己,在调用过程中极其容易出错,需要我们做的就是认真,细致。具体的,我们下一节课举例说明。

7 结构体与文件操作

信息学C++最后讲的就是结构体和文件操作了,让我们一起来回顾一下吧!

1 结构体入门

我们讲结构体是多个类型构成的集合,我们要能掌握如何定义结构体,如何利用结构体来实现相关的操作。


结构体格式如下:


struct [结构体名] {
属性类型1 属性名1;
属性类型2 属性名2;
……
属性类型n 属性名n;
};


注意结构体名首字母一般大写

2 结构体进阶

结构体进阶,主要是讲结构体和函数和数组的结合使用。


在以后的题目中,我们经常会遇到,需要使用结构体、数组和函数结合使用的情况,这需要我们多练习,才能应对自如。

3 文件操作

在这,我们主要强调,信息学竞赛中,有时候需要我们从文件中读取数据,并将输出结果保存到其他文件中,例如:


数据结构前导课 | 1 温故知新——一篇文章领略信息学C++知识结构_运算符_02


这个时候,我们只需要在主函数里的最前面添加如下两条代码即可,以第一道题目美食家为例:


freopen("delicacy.in","r",stdin);
freopen("delicacy.out","w",stdout);


8 作业

本节课的作业,就是复习上面的所有知识,能对知识有更深入地掌握。在接下来的练习课程中,能灵活应用吧!


​ ​ ​ ​ ​


AI与区块链技术

数据结构前导课 | 1 温故知新——一篇文章领略信息学C++知识结构_运算符_03

长按二维码关注​

标签:信息学,函数,温故知新,C++,运算符,数组,知识结构,结构
From: https://blog.51cto.com/u_12001271/5851851

相关文章

  • Matlab编译32位dll(c++)
    ##随手记录##核心:编译matlab核心工具链注意:需要把my_msvc_32bit_tc.m和myRtwTargetInfo.txt放在一个文件夹中,matlab目录文件也是转到此处step1:获取VC版本号方法一:在电......
  • 用C/C++开发工业软件适合吗?
    用C/C++开发工业软件最适合的了,这是因为C/C++是仅次于汇编语言的最底层程序开发语言;同时工业软件最大的特征就是专业性强、复杂度高,需要相当深的专业知识、经验、科研基......
  • c++ 函数指针
    函数指针是指向函数的指针。指针的类型由它的返回类型和形参类型共同决定。例如bool(*Pf)(conststring&,conststring&);pf指向一个函数,函数的参数是两个string......
  • windwos cmake与c++的使用教程
    1概述欢迎指正......
  • c++基础2
    模板c++另一种编程思想称为泛型编程,主要利用的技术就是模板c++提供两种模板机制:函数模板和类模板函数模板建立一个通用函数,函数的返回值类型和形参类型可以不具体指......
  • C++软件编码规范推荐--Qt相关
    1背景  Qt开发常用于跨平台开发的首选,所以关于Qt开发的编码规范也很重要。2QWidget  【规范】信号命名:sgl+驼峰命名规则,如:sglUpdate();  【规范】槽函数:on+驼峰......
  • C++初阶(命名空间+缺省参数+const总结+引用总结+内联函数+auto关键字)
    命名空间概述在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的......
  • c++中尽量用const,enum,inline替换#define
    一般声明在头文件,注意:在class中声明常量通常要加static例:classA {public:staticconstinta=0;} 对于单纯的常量,最好以const或enums替换#define......
  • C++软件编码规范推荐--命名规则
    1.背景  命名规则对于代码开发和理解很重要,是作为一名合格的设计师具备的良好代码习惯。2.命名规则2.1匈牙利命名法  基本原则:变量名=属性+类型+对象描述......
  • 密码学C/C++语言实现学习笔记——基本运算函数
    密码学C/C++语言实现学习笔记——基本运算函数基础数据结构:typedefunsignedshortclint;typedefunsignedlongclintd;书中所使用环境unsignedshort是16位(2......