欢迎光临散文网 会员登陆 & 注册

【回顾】C程序设计第六章笔记

2021-03-09 22:52 作者:陪看书的小白  | 我要投稿

C程序设计(谭浩强第五版)第六章笔记

1.为什么采用数组?

①.因为利用数组可以处理批量数据。

②.避免定义很多数据的繁琐。

③.数组可以反映出这些数据间的内在联系

2.一维数组

格式:类型说明符  数组名[常量表达式]

例子:int a[10];

注意:

①.数组元素的下标从0开始,用“int a[10];”定义数组,则最大下标值为9,不存在数组元素a[10]

②.“下标”可以是整型常量或整型表达式。

初始化:

(1) 在定义数组时对全部数组元素赋予初值。

比如:int a[10]={0,1,2,3,4,5,6,7,8,9};

说明:将数组中各元素的初值顺序放在一对花括号内,数据间用逗号分隔。花括号内的数据就称为“初始化列表”。

(2) 可以只给数组中的一部分元素赋值。

比如:int a[10]={0,1,2,3,4};

说明:定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,系统自动给后5个元素赋初值为0。

(3) 给数组中全部元素赋初值为0。

比如:int a[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0};或int a[10]={0};     

说明:这里未赋值的部分元素自动设定为0

(4) 在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。

比如:int a[5]={1,2,3,4,5};或int a[ ]={1,2,3,4,5};

说明:如果数组长度与提供初值的个数不相同,则方括号中的数组长度不能省略。


3.二维数组

把二维数组写成行(row)和列(column)的排列形式,可以有助于形象化地理解二维数组的逻辑结构。

格式:类型说明符  数组名[常量表达式][常量表达式]

初始化:

(1)分行给二维数组赋初值。(最清楚直观)

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

(2)可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值。

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

(3)可以对部分元素赋初值。

①.int a[3][4]={{1},{5},{9}};

结构:

1 0 0 0

5 0 0 0

9 0 0 0

②.int a[3][4]={{1},{0,6},{0,0,11}};

1 0 0 0

0 6 0 0

0 0 11 0

③.int a[3][4]={{1},{5,6}};

1 0 0 0

5 6 0 0

0 0 0 0

④.int a[3][4]={{1},{},{9}};

1 0 0 0

0 0 0 0

9 0 0 0

(4)如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第1维的长度可以不指定,但第2维的长度不能省。

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};=int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

注意:在定义时也可以只对部分元素赋初值而省略第1维的长度,但应分行赋初值。

比如:int a[][4]={{0,0,3},{},{0,10}};

3.字符数组

用来存放字符数据的数组是字符数组。

字符数组的初始化:

对字符数组初始化,最容易理解的方式是用“初始化列表”,把各个字符依次赋给数组中各元素。

比如:char c[10]={′I′,′ ′ ,′a′,′m′,′ ′,′h′,′a′,′p′,′p′,′y′};

说明:把10个字符依次赋给c[0]~c[9]这10个元素

C语言规定了一个“字符串结束标志”,以字符′\0′作为结束标志。

字符数组的输入输出:

(1) 逐个字符输入输出。用格式符“%c”输入或输出一个字符。

(2) 将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串(string)的输入输出。

使用字符串处理函数:

①.puts(字符数组),称作「输出字符串的函数」

作用:将一个字符串(以′\0′结束的字符序列)输出到终端。

注意:

(1).用puts函数输出的字符串中可以包含转义字符。

(2).在用puts输出时将字符串结束标志′\0′转换成′\n′,即输出完字符串后换行。

②.gets(字符数组),称作「输入字符串的函数」

作用:从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。

注意:用puts和gets函数只能输出或输入一个字符串。

③.strcat(字符数组1, 字符数组2),称作「字符串连接函数」

作用:作用:把两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。

注意:

(1).字符数组1必须足够大,以便容纳连接后的新字符串。

(2).连接前两个字符串的后面都有′\0′,连接时将字符串1后面的′\0′取消,只在新串最后保留′\0′。

④.strcpy(字符数组1, 字符串2),称作「字符串复制函数」

作用:将字符串2复制到字符数组1中去。

注意:

(1).字符数组1必须定义得足够大,以便容纳被复制的字符串2。字符数组1的长度不应小于字符串2的长度。

(2).“字符数组1”必须写成数组名形式,“字符串2”可以是字符数组名,也可以是一个字符串常量。

⑤.strcmp(字符串1, 字符串2),称作「字符串比较函数」

作用:比较字符串1和字符串2。

字符串比较的规则是: 将两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到′\0′为止。

(1) 如全部字符相同,则认为两个字符串相等;

(2) 若出现不相同的字符,则以第1对不相同的字符的比较结果为准。

规则:

比较的结果由函数值带回。

(1) 如果字符串1与字符串2相同,则函数值为0。

(2) 如果字符串1>字符串2,则函数值为一个正整数。

(3) 如果字符串1<字符串2,则函数值为一个负整数。

注意:

对两个字符串比较不能直接用str1>str2进行比较,因为str1和str2代表地址而不代表数组中全部元素,

而只能用 (strcmp(str1,str2)>0)实现,系统分别找到两个字符数组的第一个元素,然后顺序比较数组中各个元素

的值。

⑥.strlen(字符数组),称作「测字符串长度的函数」

作用:测试字符串长度的函数。函数的值为字符串中的实际长度(不包括′\0′在内)。

转换为大小写的函数:

⑦.strlwr(字符串),称作「转换为小写函数」

作用:将字符串中大写字母换成小写字母。

⑧.strupr(字符串),称作「转换为大写函数」

作用:将字符串中小写字母换成大写字母。


综合①~⑧:

以上介绍了常用的8种字符串处理函数,它们属于库函数。库函数并非C语言本身的组成部分,而是C语言编译系统为方便用户使用而提供的公共函数。不同的编译系统提供的函数数量和函数名、函数功能都不尽相同,使用时要小心,必要时查一下库函数手册。在使用字符串处理函数时,应当在程序文件的开头用#include <string.h>把string.h文件包含到本文件中。



第六章完!



【回顾】C程序设计第六章笔记的评论 (共 条)

分享到微博请遵守国家法律