第六章 用数组处理数据

  1. 6.1定义和引用一维数组
    1. 6.1.1 定义一维数组:(1)格式:类型符 数组名[常量表达式];(2)说明:常量表达式可包括常量、符号常量
    2. 6.1.2 引用一维数组:数组名[下标];与定义时的 数组名[常量表达式]形式相同,含义不同。
    3. 6.1.3 一维数组的初始化:(1)定义时全部元素赋初始值,int a[3]={1,2,3}(2)部分元素赋值,int a[3]{1,2}(3)对全部元素赋予初值可不指定长度,int a []={1,2,3},(3) 数组中的全部元素为0,int a[10]={0}或~。
  2. 6.2 定义与引用二维数组
    1. 二维数组常称为矩阵
    2. 6.2.1 定义二维数组
      1. 类型说明符 数组名 [常量表达式][常量表达式],例如:float a [2][3];
      2. 说明:在C语言中二维数组是按行存放的,即先存放第一行,再放第二行;在内存中数据是连续存放的,线性的。
    3. 6.2.2 引用二维数组
      1. 数组名 [下标][下标]
      2. 数组元素可以用在表达式中也可以被赋值;注意:对数组元素的引用时,下标值应在已定义的数组下标内,否则就出现数组下标越界的异常。
    4. 6.2.3 二维数组的初始化
      1. (1)分行赋初始值:int a[2][2]={{1,2},{2,3}}
      2. (2)将所有元素写在一个花括号内,int a[2][2]={1,2,3,4}
      3. (3)只对部分元素赋初始值,int a[2][2] ={{1},{2},{3}} 只对各行第一列元素赋初值,其余列补充0。
      4. (4)对全部元素赋初始值时,在定义时可省略第一维的长度,但是第二维的长度不可省。

  3. 6.3 字符数组
    1. C语言中无字符串类型也没有字符串变量,字符串是存放在字符型数组中的。
    2. 6.3.1 定义字符数组
      1. 含义:用来存放字符数据的数组;字符数组的一个元素存放一个字符。
      2. 定义字符数组:char c [12]; c[0]=’I’ ,c[1]=’a’; 与定义数值型数组类似
      3. 也可以用整型数组存放字符数据(字符型数据是以整数形式存放在内存中的):int c[1];
    3. 6.3.2 字符数组的初始化
      1. 格式:初始化列表 , char c[12] ={ ‘I’, ‘ ‘ ,’ a’,’ m’, ‘ ‘, ‘a ‘, ‘ ‘ , ‘b’, ‘o’ ,’y’};
      2. 说明:(1)如果花括号中的初始值个数大于数组长度,则出现语法错误;如果初值个数小于数组长度,之后的元素自动补充为空字符 ‘\0’。(2)如果初值个数等于数组长度,定义时可以省略[]的长度。
    4. 6.3.3 引用字符数组的元素
      1. 引用字符数组的一个元素:char c [2]={‘1’ ,’2’}; c[1]—>2;
      2. char c [][2]={{‘1’,’3’} ,{‘2’,’5’}}; c[0][1] —>3;
    5. 6.3.4 字符串和字符串结束标志
      1. (1)规定以字符’\0’ 作为结束标(空操作符)即在遇到它时字符串就结束;C系统在用字符数组存储字符串常量时时会自动加一个’\0’,
      2. (2)用字符串常量初始化字符数组:char c ={“ Live Happily Everyday”} 或省略花括号。
    6. 6.3.5 字符数组的输入与输出
      1. 两种方法:(1)逐个字符输入与输出: 用格式符“%c”; (2)输入与输出整个字符串:“%s”。
      2. 说明:① 用 “%s”输出时,printf中的输出项是字符数组名而非元素,printf (“%s”, c)。②当数组实际长度小于数组长度,则只输出字符串中的有效数字。③ 一个字符数组中含有一个以上的’\0’,则只输出到第一个符号处。④ 如果利用scanf输入多个字符串,则在输入时加空格符 :“How much”;数组中未被赋值的元素默认置’\0’。**⑤ scanf函数中输入项如果是字符数字名,则不加&,因为数组名代表数组首元素的地址。**
    7. 6.3.6 使用字符串处理函数
      1. 1. puts 函数——输出字符串的函数
        1. puts (字符数组) ,作用是将一个字符串(\0结束)输出到终端。
      2. 2.gets函数——输入字符串的函数
        1. gets(字符数组):从终端输入一个字符串到字符数组。
      3. 3.stract函数——字符串连接函数
        1. strcat(字符数组1,字符数组2):意思是把字符串2连接到1后面,结果放在字符数组1中,但要求字符数组1长度够大。
      4. 4.strcay, strncpy函数——字符串复制函数
        1. (1)strcay:strcay(字符数组1,字符串2),将字符串2复制到字符数组1 中。说明:字符数组1大小要足够大;字符数组1必须写成数组名的形式,字符串2可以是数组名形式也可以写成字符串常量形式;不可以直接用把一个字符串常量或字符数组赋值给另一个数组。
        2. (2)strncay: strncap(str1,str2, n),把 字符串2 的前个n字符赋值到字符串1。
      5. 5.strcmp函数——字符串比较函数
        1. 格式:strcmp(字符串1,字符串2);比较规则:将两个字符串自左至右逐个字符比较(按ASCII码),直到出现不同的字符或遇到\0为止。
        2. 说明:(1)如果全部字符相同则相等;(2)若出现不同的字符则第一对不同的字符的比较结果为准;(3)比较结果由函数值带回,0\正数\负数。
        1. strlen 函数——计算字符串的长度
        2. 格式:strlen(字符数组);说明:函数的值为字符串中的实际长度且不包括\0.
      6. 7.strlwr函数和strupr函数
        1. strlwr函数——转换为小写,strupr函数——转换为大写