【C++】课节笔记及梳理总结---EP5

news/2025/2/4 1:16:16/

一、课节笔记

第四章 函数与预处理

Ⅰ、概述

 1.模块化程序设计
  (1)基本思想:将一个大程序按照功能分割成若干个小模块
  (2)开发方法:自上而下,逐步分解,分而治之
2.※ C++ 是模块化程序设计语言 ※

Ⅱ、定义函数的一般形式

 1.一般格式:

函数类型  函数名(形参类型说明表)
{
   说明部分
   语句部分
}

Ⅲ、函数参数和函数的值

 1.形式参数和实际参数
在这里插入图片描述
 2.函数返回值
  (1)返回语句:
  1)形式:return (表达式);(括号可省略)
  2)功能:是程序控制从被调用函数返回到调用函数之中,同时把返回值带给调用函数

Ⅳ、函数的调用

 1.函数调用一般格式

函数名([实参表列]);  注:(1)实参形参个数相等
如 c=max(a,b);     (2)实参表列可为表达式,则须注意运算顺序(从右向左)
             例:i=1
             max(i++,i++);max(++i,++i);
                  ∨ \vee          ∨ \vee
              max(2,1);    max(3,2);

 2.调用方式

  (1)函数语句  例:printstar();
  (2)函数表达式 例:m=max(a,b)*2;
  (3)函数参数  例:m=max(a,max(b,c));

 3.函数说明

 (1)函数要求:1)必须已经存在(已经声明)
        2)库函数:#include<··>
        3)用户自定义函数:函数类型说明
 (2)函数说明(一般形式):函数类型 函数名(形参类型[形参名],形参类型[形参名],···)

Ⅴ、函数的嵌套调用

  ※定义函数时不得嵌套※
  ※但可以嵌套调用函数※

Ⅵ、函数的递归调用

例1 求 n ! = { 1 , n = 0 n ( n − 1 ) ! , n > 0 n!=\left\{\begin{matrix}1 & ,n=0\\ n(n-1)!&,n>0 \end{matrix}\right. n!={1n(n1)!,n=0,n>0

作者之前写过一篇讲解通过函数的递归调用解决汉诺塔问题的博客,希望大家多多支持( •̀ ω •́ )✧
主要思想就是将问题通过类比,找到一个方法作为主要支架将其不断拆分为若干有限个小步骤,再通过每一个小步骤之间的顺序、运算结构来整合为所求问题。就如本题,我们想要求 n ! n! n!其实就是要求 n 与 ( n − 1 ) ! n与(n-1)! n(n1)!的积(当然n比较大),我们再将 ( n − 1 ) ! (n-1)! (n1)!化为 ( n − 1 ) (n-1) (n1) ( n − 2 ) ! (n-2)! (n2)!的积,如此下去 ∀ n ∈ N + \forall n\in N_{+} \; nN+都可以拆解为多个因子的因式,直到最后一个因子为0,结束递归即可

程序如下:

#include<iostream>
using namespace std;
int fac(int n)
{if (n == 0)return 1;elsereturn n * fac(n - 1);
}
int main()
{int n;cin>>n;cout << fac(n);return 0;
}

Ⅶ、局部变量与全局变量

 1.局部变量—内部变量
  Def.在函数内定义,只在本函数内有效
   注:(1)不同函数中同名变量占不同内存单元
     (2)形参属于局部变量
     (3)可在复合语句中定义有效变量
 2.全局变量—外部变量
  Def.在函数外定义,可为本文件中所有函数共用
   注(有效范围): (1)从定义函数的位置开始到本源文件结束
          (2)有extern说明的部分
          (3)有extern说明的其他源文件
          (4)若外部变量局部变量同名,则外部变量被屏蔽

Ⅷ、变量的存储类别

  1. 变量是对程序中数据的存储空间的抽象
  2. 属性:(1)数据类型:变量所持有的数据的性质(操作属性)
  3. 变量的存储类型(不同于数据类型)

auto- - -自动型  register- - -寄存器型  extern- - -外部型
static- - -静态型-----→(具有全局寿命和局部可见性)

Ⅸ、内部函数和外部函数

  1. 内部函数:函数只能被本文件中其他函数所调用
  2. 外部函数:函数能被其他文件调用

Ⅹ、预处理命令

  1. 作用:对源程序编译之前做一些处理,生成扩展C源程序
  2. 种类:①文件包含 #include
       ②宏定义 #define
       ③条件编译 #if...#else...#endif...
  3. 格式:(1)以#开头
       (2)占单独书写行
       (3)句尾不加;

二、梳理总结

 最近疫情严重,刚刚返乡,不觉间已经很久没有记录笔记。所有的考试也都推迟到下学期初,希望疫情早早结束,不再反复。后续笔记也会接连更新,预计还有四大章节的内容,之后会以每篇一章的长度进行更新。


http://www.ppmy.cn/news/131455.html

相关文章

USB Composite 组合设备之多路CDC实现

USB Composite 组合设备之多路CDC实现 USB复合设备与组合设备区别效果展示修改相关配置修改配置项修改设备描述符修改配置、接口、端点描述符接口修改FIFO配置 知识点FIFO分配 注意事项 USB复合设备与组合设备区别 其实多个接口组合在一起有2种情况 第一种叫做USB复合设备&…

Ep5 线性模型with Pytorch

1、流程 确定数据集、 设计模型(算出预测值)、 构建损失函数&#xff08;最终为一个标量值&#xff0c;只有标量才能用backward&#xff09;和优化器、 训练周期&#xff08;forward算loss&#xff0c;backward算grad&#xff0c;update更新wi&#xff09; 2、numpy的广播…

HBase Shell 常用命令练习

HBase Shell 常用命令练习 前言一、HBase Shell是什么&#xff1f;二、HBase Shell使用步骤1.启动HBase2.启用HBase Shell3.键入HBase Shell命令操作HBase 三、常用HBase Shell实例1.常用的HBase Shell命令2.一个运用上述命令的综合实例&#xff1a; 总结 前言 提示&#xff1…

侃侃算法EP5·二叉树及其遍历

1. 前言 这个板块旨在记录一些日常中或是面试中会问到的算法和数据结构相关的内容&#xff0c;更多是给自己总结和需要的人分享。在内容部分可能由于我的阅历和实战经历不足&#xff0c;会有忽视或是写错的点&#xff0c;还望轻喷。 2. 内容 关于什么是树、子树、根节点、叶…

ES6、ES7、ES8、ES9、ES10新特性及其兼容性

强烈推荐阅读一篇文章&#xff0c;也是自己为了做保存把地址贴到自己博客&#xff0c;大家一起学习&#xff1a; ECMAScript 6 入门教程——阮一峰 盘点ES7、ES8、ES9、ES10新特性

es_01

字段&#xff1a;等于一个属性 文档&#xff1a;行数据等于多个字段组成 映射&#xff1a;mapping表结构 索引&#xff1a;index 数据库 存文档 类型&#xff1a;忽略 正排索引&#xff1a; 需要按照key来搜索每个key下的value&#xff0c;要收到全部的数据&#xff0c;就要进…

es(八)

单字符串串多字段查询:Dis Max Query 想在百度搜索一个单字符 should是如何算分过程 查询 should 语句句中的两个查询加和两个查询的评分乘以匹配语句句的总数除以所有语句句的总数

JS高级+ES678

js高级 数据类型 基本(值)类型 Number: 任意数值String: 任意文本Boolean: true/falseundefined: undefinednull: null 对象(引用)类型 Object: 任意对象 主要用来包含无序复杂的数据Array: 特别的对象类型(下标/内部数据有序)Function: 特别的对象类型(可执行)&#xff0c;F…