计算机考研复试之C语言(第六章)

文章目录

    • 6.1 定义和引用一维数组
    • 6.2 定义和引用二维数组
    • 6.3 字符数组

6.1 定义和引用一维数组

  • 1、定义一维数组
    (1)一般形式
    类型符 数组名[常量表达式]
    (2)注意事项
    ①数组名的命名规则和变量名相同,遵循标识符命名规则;
    ②方括号中的常量表达式用来表示元素的个数,即数组长度;
    ③常量表达式中可以包括常量和符号常量,不能包含变量。
    (3)存储形式
    数组的存储形式如下图所示:
    计算机考研复试之C语言(第六章)_第1张图片
  • 2、引用一维数组
    引用一维数组的表述形式为:
    数组名[下标]
  • 3、一维数组的初始化
    可以用“初始化列表”方法实现数组的初始化,一般有:
    (1)在定义数组时对全部数组元素赋予初值。例如:
    int a[10]={0,1,2,3,4,6,7,8,9};
    (2)可以只给数组中的一部分元素赋值,未赋值的元素值为0。
    (3)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。

6.2 定义和引用二维数组

  • 1、定义二维数组
    (1)基本概念
    二维数组定义的一般形式为:
    类型说明符 数组名[常量表达式][常量表达式];
    (2)元素存放方式
    C语言中,二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一行的元素,接着再存放第二行的元素。
    如:a[3][4]数组存放的顺序如下图所示:
    计算机考研复试之C语言(第六章)_第2张图片
    假设数组a存放从2000字节开始的一段内存单元中,一个元素占4个字节,则其存放形式如下图所示:
    计算机考研复试之C语言(第六章)_第3张图片
    (3)多维数组
    C语言中还允许使用多维数组。例如float a[2][3][4];
  • 2、引用二维数组的元素
    (1)表示形式
    数组名[下标][下标]
    (2)引用
    数组元素可以出现在表达式中,也可以被赋值,例如:
    b[1][2]=a[2][3]/2;
  • 3、二维数组的初始化
    可以用“初始化列表”对二维数组初始化。
    (1)分行给二维数组赋初值。例如:
    在这里插入图片描述
    (2)可以将所有的数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值。例如:
    在这里插入图片描述
    (3)可以对部分元素赋初值。例如:
    int a[3][4]={{1},{5},{9}};,其余元素为0。
    (4)如果对全部元素都符初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

6.3 字符数组

  • 1、定义字符数组
    定义字符数组的方式:
    类型说明符 数组名[常量表达式];
    例如:
    char a[10];
  • 2、字符数组的初始化
    (1)将各个字符依次赋给数组中的各元素。例如:
    在这里插入图片描述
    (2)花括号内提供的初值个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即’\0’)。
    (3)如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度。
    (4)也可以定义和初始化一个二维字符数组。
  • 3、字符串和字符串结束标志
    (1)字符串结束标志
    C语言在遇到字符’\0’时,表示字符串结束,把它前面的字符组成一个字符串。C系统在用字符数组存储字符串常量时会自动加一个’\0’作为结束符。
    (2)字符串给字符数组赋值
    对字符数组初始化的方法补充一种方法,即用字符串常量来使字符数组初始化,赋值时有以下情况:
    ①若数组没有指定大小,则数组最后由系统自动加上一个’\0’;
    ②若数组指定大小,则未被赋值的元素会自动赋值为’\0’,如:
    在这里插入图片描述
    其存储情况如下:
    在这里插入图片描述
  • 4、字符数组的输入输出
    (1)输入输出方法分类
    ①逐个字符输入输出
    用格式符“%c”输入或输出一个字符。
    ②将整个字符串一次输入或输出
    用“%s”格式符,意思是对字符串(string)的输入输出。
    (2)详细说明
    ①输出的字符中不包括结束符’\0’;
    ②用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名;
    ③如果数组长度大于字符串的实际长度,也只输出到遇’\0’结束;
    ④如果一个字符数组中包含一个以上’\0’,则遇第一个’\0’时输出就结束。
  • 5、字符串处理函数
    (1)puts函数------输出字符串的函数
    puts(字符数组);
    其作用是将一个字符串(以’\0’结束的字符序列)输出到终端。
    (2)gets函数------输入字符串的函数
    gets(字符数组);
    (3)strcat函数------字符串连接函数
    strcat(字符数组1,字符数组2);
    其作用是把两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值,即字符数组1的地址。
    说明:
    ①字符数组1必须足够大,以便容纳连接后的新字符串。
    ②连接前两个字符串的后面都有’\0’,连接时将字符串1后面的’\0’取消,只在新串最后保留’\0’。
    (4)strcpy和strncpy函数------字符串复制函数
    strcpy(字符数组1,字符串2);
    它表示“字符串复制函数”,作用是将字符串2复制到字符数组1中去。
    说明:
    ①字符数组1必须定义得足够大,以便容纳被复制的字符串2。
    ②“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。
    ③可以用strncpy函数将字符串2中前面n个字符复制到字符数组1中去。例如:
    strncpy(str1,str2,2);
    (5)strcmp函数------字符串比较函数
    ①一般形式
    strcmp(字符串1,字符串2);
    ②比较规则
    将两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到’\0’为止。
    a. 如全部字符相同,则认为两个字符串相等;
    b. 若出现不相同的字符,则以第1对不相同的字符的比较结果为准。
    ③比较结果
    a. 如果字符串1=字符串2,则函数值为0;
    b. 如果字符串1>字符串2,则函数值为一个正整数;
    c. 如果字符串1<字符串2,则函数值为一个负整数。
    (6)strlen函数------测字符串长度的函数
    strlen(字符数组);
    函数的值为字符串中的实际长度(不包括’\0’在内)。
    (7)strlwr函数------转换为小写的函数
    strlwr(字符串);
    (8)strupr函数------转换为大写的函数
    strupr(字符串);

说明:在使用字符串处理函数时,应当在程序文件的开头用#include把“string.h”文件包含到本文件中。

你可能感兴趣的:(C语言,计算机考研复试)