信奥赛一轮CSP初赛知识清单(二)

发布于:2023-01-16 ⋅ 阅读:(446) ⋅ 点赞:(0)

hello,大家好!今天依然准时来整理知识!

接上回:

第五部分 结构体

结构体是一种同时存储几种不同类型的数据的结构,基本格式是

struct 结构体名称{

                结构体的成员变量(要同时存储哪几个变量)、结构体的成员函数(可以用结构体当做下一结构体的成员,也就是说可以用一个结构体的类型来定义一个结构体变量,这个结构体变量又被放在另一个结构体里面,可以理解为结构体套娃),注意这两个至少要有一种中的一个。

}(可以加一个结构体数组);

注意,在结构体定义的末尾“}”后面一定要加分号。而且结构体中的数据是互相关联的。这里有一个冷知识:如果你在分号前面没有定义结构体数组,那你可以在下面用(结构体名)+变量名来变相定义一个结构体变量。结构体可以没有名字。

这里又有冷知识了:在定义结构体时,是不分配内存的;但是定义了结构体的成员,就分到了内存。你可以理解为:结构体是一辆车,把内存理解为一些钱,空车是不给钱的,但是车上有了货,就能挣到一些钱了。

结构体的成员可以整体操作,比如后面要讲的结构体排序,结构体类型的数组可以直接sort;初始化也可以用“打表”来做,还是很方便的。成员调用只需要一个“.”(成员运算符,在字符串那部分见到过),优先级最高。

第六部分 函数

6.1 自定义函数

函数是一段独立的程序,可以执行一个特定的功能,可以被其他语句来用。函数有两种:标准函数,比如sort;和自定义函数。

自定义函数的基本格式是:函数结果的类型 函数名(函数参数(函数里要传过来的变量·))

                                                程序段;

                                                返回函数结果;

}

程序语言里的函数跟数学函数的形式基本一致,是多个命令的结合。

6.2 函数的调用和参数

函数可以直接传递一个值导进函数体里。基本的引用函数格式是 函数名(传递的值);

函数是可以互相调用的,像struct那样嵌套,可以在一个函数里调用另一个函数。

注意:在引用函数时,括号里的值叫做“实参”(实际参数,参加运算),在函数内定义的参数是形参(形式参数,用来导入实参的值用于计算)。

这里有个小干货:函数如果没有返回值(比如我讲过的SPFA函数),他的类型为void。比如在函数里直接输出的形式。

6.3 传值调用和传址调用

传值调用是一般的调用,就是刚才讲的那种调用方式;是复制了实参来传值的。还有一种传地址的调用,它主要作用于需要交换排列时,比如两个数字交换。这样的值没法返回。这种调用则可以解决这个问题,因为他是传地址的,能双向传值。取地址传参的基本格式是这样:

函数 (&变量名) ,实际上是把函数的形参变成了实参的指针。这种比较小众,但也很实用。

6.4 函数的类型

空函数:占位置

有参函数:一般的函数

无参函数:一般为void,不需要返回值

6.5 递归

递归实际上就是一个函数类型的循环,能够无限循环直到找到结果为止。递归就是函数自己调用自己,来达到循环的效果。一切用循环能做的事,递归都可以做。

递归的基本格式是:

函数名 (参数){

         递归结束条件;

         调用自己;

}

递归是把问题拆成若干个小问题,在逐步往下拆,直到解决了最小的子问题,下层子问题解决了,上层的主问题也就解决了。这实际上是用栈的机制来解决问题的。

第七部分 运算符

1,赋值:=

2,算术运算:

+加 -减 *乘 /除 %取余 ++自增 --自减(优先级高)

3,关系运算:

==相等

!=不等

>=大于或等于

<=小于或等于

<小于

>大于

4,二进制逻辑运算

逻辑或 v 有一个是1就是1

逻辑与 ^ 全是1才是1

逻辑非 ¬ 取反

异或 ⊕ 左右一样是0,否则是1

5,二进制按位运算

按位与& 与逻辑与一样

按位或| 与逻辑或一样

按位异或^ 与逻辑异或一样

按位取反~ 与逻辑取反一样,诸位取反

左移>> 将数字所有二进制位左移(右边补0)

右移<< 将数字所有二进制位右移(左边补0)

好了,今天就分享到这吧,饿死我了,我要去干饭了。拜拜!

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到