当前课程知识点:C语言程序设计(下) > 第一周:函数(一) > 1.4 函数间参数传递 > 小结
以上我们介绍了函数的定义
函数的调用
函数的返回等相关的知识
现在我们一起来总结一下
当我们定义好了一段函数
我们预期要实现一个功能
主调函数使用被调函数
这件事叫做函数的调用
函数的调用形式可以有
语句的形式
表达式的形式
或者是
作其它函数的参数的形式
不管哪一种形式
函数的调用
都是要通过函数名
和函数的参数来体现
如果一个函数中
需要调用其它的函数
c语言规定
主调函数使用被调函数之前
要对被调函数作说明
怎样说明呢
要说明被调函数的类型
函数名
和函数的参数的类型
主调函数使用被调函数的结果
可能会得到一个返回值
这个返回值是通过返回语句构成的
前面我们说了
函数的类型
就是返回值的类型
所以大家在写程序的时候
一定要注意
函数定义的类型
函数说明的类型
和函数返回值的类型
要保持一致
函数中的第一部分
我们就到这
下面我们继续学习
到目前为止
我们学习了函数的定义
函数的调用
函数的返回
和函数之间参数的传递
大家一定记得
开始我举的例子
老师在学生考完试之后
希望同学们帮忙
做成绩的统计
现在我们就来看
怎么把这件事
通过一个简单的
学习成绩管理的程序实现
通过一个简单的
学习成绩管理的程序实现
现在
我先编了一小段程序
来实现屏幕上
一个简单的菜单
大家看
程序运行开始
屏幕上提示输入
1到3之间的一个数
通过开关语句结构
根据用户输入的数去看
跟开关语句中
哪一个选项匹配
来转向执行后面的语句
目前我们还没有分数
也没有编写其它的函数
这个程序的执行结果
就是生成一个简单的菜单
我们的目的就看
如何拿这样的一个程序
去实现
复杂的功能
来满足我们的要求
现在我们对这个程序做编译
运行
运行的时候
提示我们输入一个数
比如我们输入选项2
它将提示我们
看看有多少个及格的分数
好了
大家知道
通常我们运行一个软件的时候
我们选择了一个菜单项
就会对应后续的一个功能
或者说一个模块
现在我们怎么样
在这个菜单项的后面
去增加我们希望的功能呢
我们在这个程序的基础之上
做些补充
现在我们就来看
在刚才的那个简单的程序基础之上
我增加了
函数的调用
首先在开关语句中
我们定义了几个不同的选项
比如
用户从键盘输入的是1
屏幕提示
通过学号查询成绩
在这个提示之后
就要调用一个查询函数
目前我们还没有学生的成绩
我们只是通过一条语句
来说明一下
这个函数调用的过程的实现
c语言规定
主调函数使用被调函数的时候
要对被调函数作说明
因此
在程序的主调函数中
我们增加了三条
对被调函数的说明语句
由于目前我们调用这三个函数
只是为了一个简单的操作
因此
我们给这个函数定义成
无类型的函数
下面我们就运行一下这个程序
大家看看
函数调用的实现
咱们先编译
没有问题
运行
此时
屏幕提示我们输入
1到3之间的一个数
现在如果我们输入的是1
大家注意
刚才说了
通路1
进到开关语句中的case1
转向执行后面的语句
屏幕显示
通过学号查询成绩
接着
调用查询函数
程序的流程
将转向查询函数中
那么这里提示
请输入一个学号
目前这个程序
只是告诉大家
我们能够实现
在开关语句的不同选项的后面
去实现对应不同的功能
在这样的一个程序基础之上
只要我们把查询函数
统计函数
浏览函数的功能
写完整
它就是一个简单的
学习成绩管理的小软件
有了刚才那两个短的程序
现在我们就把一个简单的
学习成绩管理
写完整了
请大家注意
我首先
假定有这么一个成绩表
为了运行方便
我用了一个
初始化数据的二维数组
数组名叫分数
假定目前有五个同学
每个同学有三门课的成绩
大家知道
c语言中
数组是具有相同的数据类型的
有限的数据元素的集合
因此
我现在用整型数
代表学号
在这个数组中
我们就认为
数组元素的
每一行的第一个元素
也就是第一列的元素
代表了学号
那么在这分别为
100 101 102
103 104
接着
这一步部分
跟我们刚才看到的是一样的
主调函数中
我们对三个被调函数做说明
然后屏幕提示你写选项
接着用户从键盘输入一个值
对应了开关语句中的选项
假定用户输入的是1
请大家看
屏幕提示请输入学生的学号
我们输了一个学号
注意
在主调函数中
我们输入了一个学号
被调函数 查询函数
要根据我们给定的学号
来进行那个学号的学生的
成绩的查询
因此
这就大家学过的
在主调函数中调用被调函数
主调函数内定义实参
并为实参赋值
调用函数时
实参的值传递给形参
请大家看
在查询函数调用的时候
我们从键盘输入的学号
就成为了函数调用的实参
函数转向函数体内部
根据我们输入的学号
在这个程序中
我们通过循环
由于刚才说了
我们假定的那个二维数组中的第一列
为学号
根据
我们来判断
在不同的行中
哪一行的第一列
与我们输入的那个学号相匹配
我们就转向执行
将这一行中所有的分数输出
这个就是查询的功能
如果我们从键盘输入的是2
将执行后面的语句
就是屏幕显示
通过考试的
我们想知道
在那些分数中有多少同学的
哪些分数是及格的
显示完这一句
程序转向统计函数
统计函数的具体的功能是
请大家看下面
我们定义了一个
嵌套的循环
在这个嵌套的循环中
一个判断
哪个分数是高于60的
我们就要把它记住
怎么记呢
在这个函数中
定义了一个变量k作为计数器
赋初值为0
只要有一个分数高于60
那么k就增1
这一段函数运行结束
所看到的k的值
就是我们要得到的
到底有多少同学的分数是
及格了
在此还想提醒大家一点
就是
在我进行判断的时候
我在这个嵌套的循环中
列循环的地方是从1开始的
大家想一想为什么呢
再看第三个
如果
同学们从屏幕上输入的是3
意味着
想看一下所有同学的成绩
屏幕提示完这一行
就转向执行浏览这个函数
浏览函数实际上跟我们前面
多次用到的一个二维数组的输出
在我们这个题目中
这个功能是一样的
所以一个嵌套的循环
外层是行循环
内层是列循环
为了能够
让成绩输出的更像一个表
我们用了%5d这种格式
而且显示完一行就换行
对这个程序的功能解释完了
虽然它的功能很简单
但是它告诉我们了
就是
一个学习成绩管理的
这样的一个小软件
可以把你希望的功能
分解成若干个小的子模块
每一个小的功能
通过函数来实现
到底能不能达到我们希望的结果呢
现在我们运行一下
首先编译
然后运行
屏幕上出现了
我们设计的小菜单
比如我们输入第一个选项
提示我们请输入学生的学号
刚才我说了
在这个初始化了的二维数组中
我们是不是假定第一列的数据
为学生的学号
现在我们输入
第二个同学的
学号为102
大家看到这个同学的分数
就显示在这了
我们再运行一下
看看其它的功能
如果这时候
我们关心的是
到底有多少同学的
多少个分数是及格了的呢
大家注意看
在这个表格中
在这个表格中
第二列 第三列 第四列
意味着学生的分数
而这里出现了一个55
我们来看运行这个相关的功能
它的统计结果是否正确
现在我们从键盘输入2
告诉我们
通过考试的一共有十四个分数
跟我们的直观的判断是一致的
我们下面再运行一下看看
功能3
如果我们在小菜单中
输入3这个选项
意味着浏览全部成绩
我们就可以看到
所有同学的学号和成绩
就显示出来了
由此
大家就可以更清楚的认识到
我们学习函数这一章的
重要的意义
随着今后的应用
可能我们编的程序
功能上越来越复杂
语句可能越来越多
怎么能让我们编的程序
功能更强
运行效率更高
这就是模块化程序设计的
思想的体现
而今天大家看的
这个简单的学习成绩管理
就是
综合了我们刚才前面讲过的
函数的定义 调用 返回值
以及
如何进行参数之间的传递
-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