第八章 数组

第八章 数组
一维数组的定义和初始化
数组的一般定义格式
类型 数组名[元素个数]
数组是一组具有相同类型的变量的集合。使用一个统一的名字来标识这组相同类型的数据,这个名字称为数组名。
构成数组的每个数据项,称为数组元素。
c 程序通过数组的下标实现对数组元素的访问。
下标的个数表明数组的维数,注意,C语言中数组的下标都是从零开始的。
在定义数组时不能使用变量定义数组的大小。

二维数字的定义和初始化
二维数组的一般定义格式
类型 数组名 [第一维长度][第二维长度]
第一维的长度代表数组每一列的元素个数,第二维的长度代表数组每一行的元素个数。
一维数组在内存中占用的字节数为,数组长度×sizeof(基类型) 。二维数组占用的字节数为 第一维长度×二维长度×sizeof(基类型)。
注意在不同编译系统中,int 型所占的字节数是不同的。
用sizeof运算符来计算一个类型或者变量在内存中所占的字节数才是最准确可靠的方法,也有利于提高程序的可移植性。
注意数组第二维的长度声明永远不能省略。

向函数传递一维数组
数组元素和基本型变量一样,既可出现在任何合法的 c 表达式中,也可用作函数参数。
若要把一个数组传递给一个函数,那么只要使用不带方括号的数组名作为函数实参调用函数即可。
由于数组名代表数组第一个元素的地址,因此用数组名作函数实参,实际上是将数组的首地址传给被调函数。
注意,数组作函数形参时,数组的长度可以不出现在数组名后面的方括号内,通常用另一个数整形行参来指定数组的长度。

排序和查找
排序是把一系列无序的数据按照特定的顺序如升序或降序,重新排列为有序序列的过程。对数据进行排序是最重要的应用之一。
交换法排序借鉴了,求最大最小值的思想。
对信息进行排序时,通常只使用信息的一个子项作为键值,由键值决定信息的全部子列的排列位置顺序。
在数组中搜索一个特定元素的处理过程,称为查找。
两种查找算法,线性查找和折半查线。
线性查找也称为顺序查找算法,简单直观,但效率较低。
折半查找算法,稍微复杂一些,但效率很高。
两种查找算法都可用迭代法实现。
线性查找数组元素就是使用,查找间逐个与数组元素进行比较以实现查找。
查找的基本过程为 利用循环顺序扫描,整个数组依次将每个元素与待查找值比较,若找到则停止循环,输出位置。所有元素都比较后,仍未找到指定的数据值,则循环结束,输出未找到的提示信息。

字符数组
字符数组是指元素为字符的数组。字符数组是用来存放
字符序列或字符串的。字符数组也有一维、二维和三维之分。

字符数组的定义格式
字符数组定义格式同于一般数组,所不同的是数组类型
是字符型,第一个元素同样是从ch[0]升始,而不是ch1l].
具体格式如下:
[存储类型] char数组名[常量表达式1]…
用字符串初始化数组
用一个字符串初始化一个一维字符数组,可以写成下列形式:
char chr[5]=“abcd”;
对二维字符数组来讲,可存放若千个字符串。可使用由若干
个字符串组成的初始值表给二维字符数组初始化。
对二维、三维字符数组也是如此。当需要将一个数组的全部元素值赋予另一数组时,不可以用数组名直接赋值的方式,要使用字符串拷贝函数来完成。
(4).字符常量和字符串常量的区别
0两者的定界符不同,字符常量由单引号括起来,字符串
常量由双引号括起来。
@字符常量只能是单个字符,字符串常量则可以是多个字
0可以把一个字符常量赋给一个字符变量,但不能把一个
字符串常量赋给一个字符变量。
0字符常量占一个字节,而字符串常量占用字节数等于字
符串的字节数加1.增加的一个字节中存放字符串结束标志“10,

字符串的输入与输出
1、输入
从键盘输入一个字符数组可以使用scanf语句或gets语句。
(1)scanf语句
格式: scanf%s",字符数组名):
说明:
0系统会自动在输入的字符串常量后添加“\0,标志,因此输入时,仅输入字符串的内容即可。
@输入多个字符串时,以空格分隔。

字符串处理函数
系统提供了一些字符串处理函数,用来为用户提供一些字符串的运算。常用的字符串函
数介绍如下。
函数格式
函数功能
将字符串2连接到字符串1后边,返回字符串1的1
strcat(字符串名1,字符串名2)
strncat(字符串名1,字符串名2,长度n) |将字符串2前n个字符连接到字符串1后边,返
回字符串1的值。
将字符串2复制到字符串1后边,返回字符串1的1
strcpy(字符串名1,字符串名2)
strncpy(字符串名1,字符串名2,长度n) |将字符串2前n个字符复制到字符串1后边,返
回字符串1的值。
比较字符串1和字符串2的大小,比较的结果由
函数带回;
如果字符串1>字符串2,返回一个正整数;
strcmp(字符串名1,字符串名2)
如果字符串1=字符串2,返回0;
如果字符串1<字符串2,返回一个负整数;
strien(字符串名)
计算字符串的长度,终止符“o,不算在长度之
strlwr(字符串名)
将字符串中大写字母换成小写字母
将字符串中小写字母换成大写字母
strupr(字符串名)

可以解决的问题
排序和查找可以解决一些乱序问题,使问题更加简洁。
假如要编写一个五子棋的程序,就可以用二维数组来模拟棋盘。
在平时处理很多问题的时候都会有行和列的概念,这些用二维数组描述就比较直观了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值