C语言之利用数组处理批量数据

在实际问题中,有些需要对同一类型数据进行处理,比如30个学生的成绩,100个员工的工资等。如果要定义简单的变量,则需要定义30或100个int类型或float类型数据,这样显得繁琐而冗长。于是具有同种类型的数据可以组成一个数组,数组中每个数代表每个成员。由此可见数组使一组有序数据的集合,比如一维数组a[0]代表第一个元素,a[2]代表第三个元素。同时可知数组中的每一个成员具有同一数据类型,而将数组和循环结合起来,则可以有效的处理大批量的数据。

1.1 一维数组

一维数组的下标代表每一个成员,即a[0],0代表第一个元素。

一维数据的一般形式:

类型符 数组名[常量表达式];举例:int a[5];

注意:数组名需要遵循标识符命名规则,常量表达式代表数组长度,常量表达式既可以是常量也可以是符号常量,不可以是变量。即数组大小不可动态定义。同时如a[5]表示a[0],a[1],a[2],a[3],a[4],并没有a[5],这是由于数组元素是从0开始的。

说明:在常量表达式这里,如果被调用的函数(不包括主函数)中定义数组,其长度可以是变量或者非常量表达式。例如:

void func(int n)

{

int a[n];

}

在上述代码中,n作为形参传到func函数中,在执行func函数时,数组a的长度随着n的变化而变化,但是当n确定之后,数组a的长度也随之确定。即在执行函数的时候数组a的大小是不变的。如果数组定义为static(静态存储方式),则不能用"可变长数组"。

引用数组

引用数组通常为:数组名[下标];下标可为整型常量或整型表达式。

注意:在定义数组时如int a[10],表示数组大小为10,而在引用数组时a[6]表示a数组中序号为6的数。

一维数组的初始化

一维数组未初始化时,数组中的值不确定。通常在定义数组的时候进行数组的初始化。

1、对全部元素赋初值。int a[5] = {1,2,3,4,5};

2、对一部分元素赋初值。int a[5] = {1,2,3},数组中后2位自动初始化为0;

3、如果想将数组中的所有值都初始化为0。即int a[5] = {0};或者int a[5] = {0,0,0,0,0};

4、在赋值的同时可不指定数组的大小,由赋值的个数决定数组的大小。即int a[] = {1,2,3,4,5},数组a大小为5;

在未被初始化指定的数组元素,系统会自动把它们初始化为0;如果是字符型数组,则初始化为'\0',指针型数组为NULL;

1.2 二维数组

二维数组常称为矩阵,二维数组可写成行与列的形式,如果把一维数组比作一条线的话,二维数组就是一个面,而三维数组即为一个体。

二维数组定义的一般形式

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

二维数组中的元素是按照行存放的,如int a[2][3],2代表2行,3代表3列。用矩阵形式表示二维数组,能形象的表达出行列关系,而在内存中,各个元素是连续存放的,不是二维的,是线性的。

二维数组的引用

引用的一般形式为:数组名[下标][下标];

注意:在引用数组时,注意下标的取值范围,如int a[3][4],行下标的取值范围为0-2,列下标的取值范围为0-3;

二维数组的初始化

1、分行给二维数组赋值。int a[2][2] = {{1,2},{3,4}};

2、可以将所有数据写在一个花括号内。int a[2][2]={1,2,3,4};

3、可以对部分元素赋值。int a[2][2] = {{1},{2}};未被初始化的自动初始化为0;

4、如果对全部元素赋值,第二维的长度不可省略。即int a[][2]={1,2,3,4};

1.3 字符数组

前已介绍,字符型数据是以字符的ASCII代码存储在存储单元中的,char类型数据一般占一个字节。C语言中没有字符串数据,字符串是存放在字符数组中的。

字符数据定义的一般形式

char 数组名[常量表达式];

字符数组的初始化

如果不进行字符数组的初始化,则字符数组中的值是不确定的。在初始化过程中,注意字符数组最多可包括几个字符。切记勿忘,字符数组最后一个字符为'\0';

字符数组的引用

与一维数组的引用类似。在此不作详细介绍。

字符串和字符串结束标志

字符串即字符数组,在实际工作中,人们往往关注的是字符串的长度,而不是字符数组的长度,当定义了一个100个字符的字符数组,而有效的字符仅为10个,为了明确字符串的实际长度,C语言规定了一个字符串结束标志,即'\0'。以字符'\0'作为字符串的结束标志。在遇到'\0'后, 表示字符串结束,把它前面的字符当作一个字符串。

说明:字符数组初始化时并不要求它的最后一个字符为'\0';因为系统在处理字符串常量存储时会自动加'\0'。

字符数组的输入输出 1、逐个字符输入输出。用%c输入或输出一个字符。

2、将整个字符一次输入或输出。用%s格式符。

如果一个字符数组中包含一个以上'\0',则遇上第一个'\0'时输出就结束。

在输入字符时,系统把空格字符作为输入的字符串之间的分隔符。

字符串处理函数

1、puts函数-输出字符串的函数:put(字符数组);

2、gets函数-输入字符串的函数:gets(字符数组);

puts和gets函数只能输出输入一个字符串。

3、strcat函数-字符串连接函数:strcat(字符数组1,字符数组2);

字符数组1必须足够大,以便容纳后面的字符串。连接两个字符串时,第一个字符串末尾的'\0'取消,只保留第二个字符串的末尾的'\0'。

4、strcpy和strncpy函数-字符串复制函数:strcpy(字符数组1,字符串2)

将字符串2复制到字符数组1中。字符数组1为字符数组名即可,字符串2可以时字符数组名或字符串常量;切记,不能用赋值语句将一个字符串常量复制到另一个字符数组中。而strncpy则将字符串2中的前n个字符复制到字符数组1中。如strncpy(str1,str2,2);

5、strcmp函数-字符串比较函数 :strcmp(str1,str2);

比较的结果为:

(1)如果字符串1=字符串2,则函数值为0;

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

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

6、strlen函数-测字符串长度的函数:strlen(字符数组)

函数值为字符串的实际长度,不包括('\0')在内。

7、strlwr函数-转换为小写的函数:strlwr(字符串)

8、strupr函数-转换为大写的函数:strupr(字符串)

注意:在使用字符串处理函数时,应当在程序文件的开头用#include

你可能感兴趣的:(C语言,电驱,c语言,驱动开发,算法,数据结构)