当前课程知识点:C语言程序设计(下) > 第一周:函数(一) > 1.1 函数定义 > 函数是什么
下面我们就开始介绍函数这一章
让我们从一朵水仙花开始
在三位数中有一种特殊的数
就是说
组成这个三位数各个位上的那个数字
立方再求和
就等于这个数本身
那都有哪些三位数是水仙花数呢
我们可以编一个程序来求
第三个整型变量a b c
就分别代表了这三位数上的那三个数
它们各自从1到9或者从0到9循环
在这个嵌套的循环中
如果a³+b³+c³就等于这个三位数本身
那么这就是我们要的结果
经过运行我们就可以得到这个结果了
三位数中水仙花数有153 370 371和407
我们再看另一个问题
如果要求从1到10之间
那些相邻数的立方差
大家说了 这个编程很简单
那现在我要提醒大家的是
我们看这两个问题
第一个问题中
用到了求一个数的立方
而二个问题也用到了求一个数的立方
那么现实生活中
在程序开发中
往往有一段程序
可能会被其他的程序所使用
那么就像现在我们说到的求立方
我们可以编一个程序
就来求一个数的立方
那么如果这段程序
会多次被其他程序使用的话
我们就把它抽象为一个功能函数
它的功能就是求立方
我们为这个函数起个名
然后定义一个参数
至于这个参数的值是什么
主调函数中
使用它的功能的时候为它传递一个数据
那么主函数里
从键盘输入一个整型数x
当调用这个函数的时候
x的值传递给参数a
函数调用的结果
返回了a的立方
那么主函数中得到了需要的结果
这个程序的运行的流程
如屏幕所示
那么我们就可以说函数是什么呢
函数是我们写一段程序
去实现一个功能
按照这个思想咱们看
怎么用函数的方式
来求水仙花数
首先我们在这个程序中
输入了一段函数
我们管它叫做函数的定义 求立方
主调函数中定义a b c
代表了三位数的各个位
那么在三层的循环的嵌套中
我们三次分别以a b c为参数
调用求立方的函数
如果a b c的立方和
等于了这个数本身 就是我们要的结果
那么大家看这段求立方的函数
我们同样可以使用在
求1到10之间相邻两个数的立方差
那么这两段程序的运行结果
从屏幕上大家可以看到
那我们从这可以看出
求立方这段程序
在两个程序中都被使用
它就充分体现了函数的一个基本的功能
就是代码的重复使用
那大家可能说了 立方这事很简单
我们不用函数
我们直接写x乘x乘x也不复杂
我们再进一步看其他的问题
现在给大家三个问题
一个是我们怎么判断一个数是不是素数
第二我们如果想输出100以内所有的素数
第三怎么把一个键盘输入的偶数
比如24 分解成两个素数之和
那大家知道24=5+19
它还等于其他
怎么能够求出所有的解呢
这三个问题我们都共同的用到了一个问题
就是判断素数
那现在我们就来写一个函数
判断一个给定的数是否为素数
大家看到这一段函数
就是来求素数的
那我们现在来介绍
在c语言中 c语言的语法规定
一个函数的定义都包括了哪些内容
首先 要定义函数的类型
c语言规定
函数的类型指函数的返回值类型
第二 要定义函数名
函数名的定义规则符合标识符的规定
第三 如果主调函数
使用段函数的功能的时候
有数据的传递
那么在定义函数的时候
要定义函数的形参
就是形式上的参数
形参也同样有参数的类型
和形参的参数名
那么主调函数使用被调函数
有时需要带回一个结果
带回的结果通过return
这个返回语句获得
那么函数有返回值
写一段函数的时候
要有一对花括号
意味着函数的开始和函数的结束
那么一对花括号中间的语句成为函数体
有了这个之后我们下面就来解决
看看如何来判断
一个数是不是素数
和这段函数怎么使用
下面我们就给函数做如下的总结
首先 c语言中函数是最小的功能单位
那么一个程序不管多复杂
它一定是由一个主函数
和若干功能函数组成
刚才我们定义函数的类型的时候
指的是函数返回值的类型
那么就函数本身又有什么样的类型呢
c语言中 如果从用户使用的角度
函数可以分标准函数 也叫库函数
就像我们前面屡次用到的格式输入函数
格式输出函数
那么还有在前面学习数组中用到的
一系列的字符串处理函数
此外 当我们需要解决某个特定问题
我们自己来编一段函数的时候
我们称之为自定义函数
如果从函数的形式上说
比如说我们调用一个函数
仅仅是显示一段结果
或者是做一个什么给定的操作
我们称之为无参函数
如果主调函数使用被调函数的功能
有数据的传递
比如说 求两个数的最大公约数
那到底谁和谁的最大公约数呢
主调函数一定是传递两个数值
被调函数来求出这两个值得最大公约数
那么在这种情况下
我们称之为有参函数
-1.1 函数定义
--内容简介
--函数是什么
--例题演示
--知识点总结
-1.1 函数定义--作业
-1.2 模块化程序设计
-1.3 函数调用、声明和返回
--函数调用的过程
--函数嵌套调用
-1.4 函数间参数传递
--形参与实参值传递
--小结
--html
-1.4 函数间参数传递--作业
-函数递归调用
--html
--html
--html
--html
--html
--html
-函数递归调用--作业
-3.1 变量存储属性
--开场
--局部变量全局变量
--存储类别小结
--html
--html
--html
--html
--html
-3.1 变量存储属性--作业
-3.2 编译预处理
--编译预处理开头
--编译预处理内容
--库函数
--函数总结
--综合例子
--html
-3.2 编译预处理--作业
-4.1 指针的定义、初始化和引用
--本周内容简介
-4.1 指针的定义、初始化和引用--作业
-4.2 指针与数组
--指针与数组
--Video
-4.2 指针与数组--作业
-5.1 指针与字符串
--本周开篇介绍
--指针与字符串
--指针与字符串小结
-5.1 指针与字符串--作业
-5.2 多维数组指针
--指针与多维数组
--html
--html
--html
--html
--html
--html
--html
--html
-5.2 多维数组指针--作业
-6.1指针与函数
--本周开篇介绍
--指针指向函数
--返回指针值的函数
--html
--html
--html
-6.1指针与函数--作业
-6.2指针与指针
--引入指针数组
--指针数组
--二级指针
--指针内容小结
--html
--html
--html
--html
-6.2指针与指针--作业
-7.1 结构的概念
--Video
--Video
--Video
--Video
--html
--html
-7.1 结构的概念--作业
-7.2 结构数组
--Video
--Video
--html
-7.2 结构数组--作业
-7.3 结构指针
--Video
--Video
--Video
--html
-7.3 结构指针--作业
-7.4 结构与函数
--Video
--html
-7.4 结构与函数--作业
-7.5 联合
--Video
--Video
--html
-7.5 联合--作业
-8.1 typedef自定义类型
--自定义类型
-8.1 typedef自定义类型--作业
-8.2 枚举类型
--枚举类型
-8.2 枚举类型--作业
-8.3 链表的概念
--为什么使用链表
--链表的定义和功能
-8.3 链表的概念--作业
-8.4 链表的基本操作
--创建链表的步骤
--创建链表的过程
--访问链表中的节点
--约瑟夫问题
--html
--html
-8.4 链表的基本操作--作业
-9.1 文件概述
--文件概念
--文件分类
-9.1 文件概述--作业
-9.2 文件型指针
--文件结构与指针
--设备文件
--html
-9.2 文件型指针--作业
-9.3 文件的打开与关闭
--文件读写方式
--文件读写操作
-9.3 文件的打开与关闭--作业
-9.4 文件的顺序读写
--字符串输入输出
--html
-9.4 文件的顺序读写--作业
-9.5 文件的随机读写
--文件随机读写
-9.5 文件的随机读写--作业
-9.6 文件检测
--文件检测
-9.6 文件检测--作业
-9.7 文件应用实例
--文件应用实例
--html
--html
-10.1 C语言知识总结
--程序调试概念
--软件测试方法
--程序跟踪调试
--C语言语法要点
--标识符及运算符
--程序设计流程
--数组、函数及指针
--结构和文件
-10.1 C语言知识总结--作业
-10.2 C语言练习
--程序设计方法
--图像合成例子
--html
-期末考试复习题
--html
-期末考试复习题答案
--html