第六章 利用数组处理批量数据

本文详细介绍了C语言中的数组概念,包括一维数组、二维数组及字符数组的定义、初始化及应用。重点讲解了字符数组的特性及其在字符串处理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组是一组有序数据的集合。数组中个数据的排列是有一定规律的,下标代表数据在数组中的序号。
一个数组名
下标唯一的确定数组中的元素。
数组中的每一个元素都属于同一个数据类型
C语言就规定用方括号中的数字来表示下标。
6.1 一维数组
类型符 数组名[常量表达式];
例: int a[10];
从a[0]~a[9],共10个整型元素,特别注意,不包含元素a[10]!!
常量表达式中可以包括常量符号常量

不能包含变量

。*C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。

!!如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。*

引用数组元素的表示形式为
数组名[下标]
定义时数组名[常量表达式]与数组名[下标]形式相同,但含义不同。
将数组中各元素的初值顺序放在一对花括号内,数据间用逗号分隔,花括号内的数据就称为“初始化列表”。
在定义数组是可以对全部数组赋予初值,也可以只给数组中一部分元素赋值,也可以使全部元素为0;
在对数组全部元素赋值时,由于数据的个数已经确定,因此可以不指定数组长度。
如果指定了数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统会使其自动为0 ;
气泡法:每次将相邻的两个数比较,将晓得调到前头。如果有 n 个数,则要进行 n-1 趟比较,在第一趟比较重要进行 n-1 次比较,在第 j 趟比较中,要进行 n-j 次两两比较。每经过一趟的比较与交换,最小的数“上升”以为,最后升到第一个数。
6.2 二维数组
二维数组常称为矩阵。把二维数组携程行和列的排列形式。
一般形式为
类型符 数组名[常量表达式][常量表达式];
在内存中,各元素是连续存放的,不是二维的,是线性的。
表示形式为
数组名[下标][下标]
二维数组的初始化
分行给二维数组赋初值。每个花括号内的数据代表每行的元素。
将所有数据写在花括号内。按数组元素在内存中的配列顺序对各元素赋初值。
可以对部分元素赋初值。
也可以对各行的某一元素赋初值。
6.3 字符数组

C语言中没有字符串类型,字符串是存放在字符型数组中的。

用来存放字符数据的数组是字符数组。字符数组中一个元素存放一个字符。
定义字符数组的方法与定义数值型数组的方法类似。如:
char c[10];
c[0] = “I”,c[1] = " "; c[2] = “a”…
由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组它存放字符数据,如
int c[10];
a[0] = ‘a’; //合法,但浪费存储空间
字符数组初始化,最容易理解的方式是用初始化列表,把各个字符依次赋给数组中各元素。
如果花括号中提供的初值个数大于数组长度,则出现语法错误,如果初值个数小于数组长度,则枝江这些字符赋给数组中前面的元素,其余的元素自动定义为空字符(即’\0’)
如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
在C语言中,是将字符串作为字符数组来处理的。
C语言规定了一个“字符串结束标志”,以字符’\0’作为结束标志。
C系统在用字符数组存储字符串常量是会自动加一个’\0’作为结束符。
有了结束符’\0’后,字符数组长度就显得不那么重要了,在程序中往往依靠检测’\0’的位置来判定字符串是否结束。在定义字符数组是应保证数组长度始终大于字符串实际长度
在向内存中存储是,系统自动在最后一个字符’\n’的后面加一个’\0’,作为字符串结束标志。printf函数每输出一个字符检查一次,看下一个字符是否’\0’,遇’\0’则停止。
用字符串常量来使字符数组初始化,如
char a[] = {“I am happy”};
也可以省略花括号,直接写成
char a[] = “I am happy”;
不用单个字符作为字符数组的初值,而是用一个字符串(注意字符串的两端是用双撇号而不是单撇号括起来的)作为初值。
此时c的长度不是10 。而是11,因为系统自动加了一个’\0’.
字符数组并不要求它的最后一个字符为’\0’,甚至可以不包含’\0’
但为便于测定字符串的实际长度,在字符数组中也常常的认为的加一个’\0’.
字符数组的输入输出可以有两种方法
1.逐个字符输入输出。%c
2.将整个字符串依次输入或输出。 %s
输出的字符中不包括结束符’\0’

  1. 用%s格式符输入输出字符串时,函数中的输出项是字符数组名,而不是数组元素名。 如果数组长度大于字符串的实际长度,也只输出遇’\0’结束。 如果一个字符数组中包含一个以上’\0’,则遇第一个’\0’时输出结束。
  2. scanf函数中的输入项是已定义的字符数组名,输入的字符串应短语已定义的字符数组的长度
  3. 如果利用一个scanf函数输入多个字符串,则应在输入时以空格分隔。
  4. scanf函数中的输入项如果是字符数组名,不要再加地址符&,因为在C语言中数组名代表该数组的起始地址。
    实际执行:按字符数组名找到其数组起始地址,然后租个输出其中的字符,直到遇到’\0’为止。
    puts -------输出字符串的函数
    一般形式为
    puts (字符数组)
    其作用是将一个字符串(以’\0’结束的字符序列)输出到终端。
    gets ---------输入字符串的函数
    一般形式为
    gets(字符数组)
    用puts和gets函数只能输出或输入一个字符串!!
    strcat ---------字符串连接函数
    strcat(字符数组1,字符数组2)
    将两个字符数组中的字符串连接起来,把字符串2 接到1的后面,结果放在字符数组1 中。(数组1必须足够大)
    strcpy和strncpy--------字符串复制函数
    strcpy(字符数组1,字符数组2)
    将字符串2复制到数组1中。
    1.字符数组1必须足够大
    2.字符1必须写成数组名形式,字符串2可以是数组名,也可以使一个字符串常量
    3.可以将字符串2前面的n个字符复制到字符数组1中,如
    strncpy(s1,s2,2)
    将s2最前面2个字符复制到s1中。取代1中原有的最前面的2个字符。
    strcmp --------字符串比较函数
    strcmp(字符串1,字符串2)
    是比较字符串1和字符串2。
    字符串比较的规则是:将两个字符串自左到右逐个字相比(按ASCII码值大小比较),直到出现不同的字符或遇到’\0’为止
    1.如果全部相同,则认为两个字符串相等;
    2.若出现不相同的字符,则以第一对不相同的字符的比较结果为准。
    如果参加的两个字符串都有英文字母组成,则在英文字典中位置靠后的为大
    比较结果有函数值带回。
    1.如果字符串1 = 字符串2,则函数值为0
    2.如果1 > 2,则函数值为一个正整数
    3.如果1 < 2,则函数值为一个负整数。
    strlen ------测字符串长度的函数
    strlen(字符数组)

    测试字符串长度的函数,函数的值为字符串中的实际长度(不包括’\0’在内)
    strlwr------转换为小写的函数
    strlwr(字符串)

    将字符串中的大写字母换成小写字母。
    strupr-----转换为大写的函数
    strupr(字符串)

    将字符串中的小写字母换成大写字母。
    **注意:**在使用字符串处理函数时,应当在程序文件的开头用
    #include <string.h>
    把“string.h”文件包含到本文件中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值