目录
今天对二维数组及函数的部分内容进行学习。
一、二维数组的定义与引用
1、二维数组的一般形式:
“ 类型说明符 数组名[常量表达式][常量表达式] ”。(常数表达式1表示行数,常数表达式2表示列数)
2、访问引用形式:
“ 数组名[下标][下标] ”。
3、数组存储特性:
单一性、连续性、有序性。
4、存放数据的格式
将数据放入二维数组中,可以采用 “ 分行给二维数组赋值 ” : a[i][j] = { { } , { } , { }} ;将第一个内部花括号内的数据给第一行元素,有几个 i 就有几个内部花括号,内部花括号的数据个数等于 j 时,按顺序放入数据,但内部花括号的数据个数小于 j 时,补“ 0 ”。除此之外,也可以用一个花括号输入数据( a[i][j] = { } ),但这种输入方法只能按序输入,不够时在最后面开始补零。初始化时二维数组的 i 可以省略(即 a[][j])。
5、例题
eg1. 将1到12的整数放入 a[3][4] 数组中。
输出结果为:
计算行数:rows = sizeof(a) / sizeof(a[0])
计算列数:cols = sizeof(a[0]) / sizeof(a[0][0])
eg2. 对上述输出结果的每一行进行倒序。
输出结果为:
eg3. 将字符型二维数组中的数据进行逆序。
输出结果为:
eg4. 在二维数组中查找是否有某个数据。
(1) 先对二维数组进行排序
(2) 进行查找
(3) 运行,输出“ found ”表明存在该数据,输出“ not found ”表明不存在该数据。
二、函数
1、函数的概述
在C语言中,函数是程序的基本组成单元,用于封装一段独立的、可复用的逻辑。一个C程序可由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。
(2) 一个源程序文件, 一个C程序可由一个主函数和若干个其他函数构成,函数之间不存在包含关系。
程序中函数调用示意图如下:
2、有参函数定义的一般形式
无参函数定义的一般形式是将“ 形式参数列表 ” 空着,但括号不能省略。
说明:
类型说明符:可以是除数组以外的任何数据类型( 包含void类型 ) 。
函数名是:定义的标识符,遵循变量命名规则。
参数列表:可以是空( 如 void func() ),表示函数不需要外部传参;也可以有多个参数( 如 int max(int a, int b) ),用于接收外部输入的数据。
函数体:用 {} 包裹的代码,实现逻辑功能。
对于 空函数 " void 函数名(void) " ,函数名前的 void 是不可以被省略的,如果省略,C语言会默认为 int型;而函数名后的 void 可以被省略。
3、函数调用的一般形式
函数名(实参列表)
4、形参、实参、返回值
被调函数(函数定义)中的参数为形参列表(不占内存中的存储单元),主调函数(函数引用)中的参数为实参列表。实参可以是常量、变量或表达式。
返回值通过函数中的 return 语句获得,return 语句后面的值也可以是一个表达式。返回值的类型需要与函数类型保持一致。
5、例题
eg1. 创建一个 int maxOfTowNumbers(int a, int b) 函数,用来比较两个数输出二者之间中的最大值。
例如判断 6 和 2 中的最大值,调用格式为:maxOfTowNumbers(6, 2);如果要输出可写为:printf( "%d\n", maxOfTowNumbers(6, 2) ) 。以下函数调用方法与该方式一致。
同理,三个数之间的最大值求解函数的创建如下:
eg2. 创建一个 int div3(int n) 函数,用来判断输入的数能否被 3 整除。
eg3. 创建一个 isLeapYear(int year) 函数来判断是否是闰年,并用 printLeapYear(int begin, int end) 函数来输出 [begin, end] 范围内的闰年。
eg4. 创建一个 dayOfTheMonth(int year, int month) 函数来判断某年的某月有几天。
【结束】