首页 > 代码库 > 作业九总结

作业九总结

一、知识点

1.二维数组的定义和引用

(1)二维数组的定义

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

       例:float  a[3][4],b[5][10]; 

说明:

  ①  可以把二维数组看作是一种特殊的一维数组。

            a[0] → a[0][0]   a[0][1]   a[0][2]   a[0][3]  

            a[1] → a[1][0]   a[1][1]   a[1][2]   a[1][3]

            a[2] → a[2][0]   a[2][1]   a[2][2]   a[2][3]

②  二维数组在内存中按行存放

                       

 

 

 

a[0][0]     ↑   a[0][2]      ↑   a[1][0]    ↑    a[1][2]    ↑    a[2][0]    ↑     a[2][2]   ↑

          a[0][1]          a[0][3]         a[1][1]          a[1][3]          a[2][1]         a[2][3]    

③  多维数组定义方式与二维数组类似

                int    x[3][4][2];

                float   y[4][2][3];

(2)二维数组的引用

    引用形式为: 数组名[下标][下标]

        注:下标可以是整型表达式,但应在已定义的数组大小的      

                范围内。

(3)二维数组的初始化

⒈  分行给二维数组赋初值。如:

        int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

⒉  可以将所有数据写在花括弧内,按数组排列的顺序对各元素赋初值。

    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}

⒊  可以对部分元素赋初值,不赋的为0。如:

   int a[3][4]={{1},{5},{9}}

   int a[3][4]={{1},{0,6},{0,0,11}};

⒋  如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

2.矩阵与二维数组

int   a[N][N];             N是正整数

a[i][j]:i、j的取值范围[0,N-1]

 用二维数组a表示N*N方阵时,对应关系:

a[0][0]   a[0][1]  a[0][2]   主对角线   i==j

a[1][0]   a[1][1]  a[1][2]   上三角      i<=j

a[2][0]   a[2][1]  a[2][2]   下三角      i>=j

                                      付对角线    i+j==N-1

3.字符数组

  • 字符串的存储和运算可以用一维字符数组实现
  • 一维字符数组的定义、引用、初始化与其他类型的一维数组一样。

  char  str[80];

   定义一个含有80个字符型元素的数组str

   char t[5]={‘H‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘};

  初始化数组 t

   (1)  一维字符数组

   char t[5] = {‘H‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘};

   static char s[6] = {‘H‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘};

   static char s[6]={‘H‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘, 0};

   0代表字符‘\0‘,也就是ASCII码为0的字符

   static char s[6]={‘H‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘, ‘\0‘};

    (2)字符串

  字符串常量用一对双引号括起来的字符序列

  一个字符串结束符 ‘\0‘      字符串结束符

  "Happy"               ↓

  6个字符       ‘H‘   ‘a’   ‘p’   ‘p’   ‘y‘     ‘\0‘

  字符串的有效长度:有效字符的个数

 (3)字符串与一维字符数组

  字符串:一个特殊的一维字符数组

  • 把字符串放入一维字符数组(存储)
  • 对字符串的操作 ===> 对字符数组的操作

  字符串的存储-数组初始化

  字符串可以存放在一维字符数组中

  static char s[6] = {‘H‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘, ‘\0‘};

  (4)字符数组初始化:用字符串常量

  static char s[6] = {"Happy"};

  static char s[6] = "Happy";

  数组长度 >= 字符串的有效长度 + 1

  (5)字符串的存储

  auto char s[80]= "Happy";

  字符串遇 ‘\0‘ 结束

  第一个 ‘\0‘ 前面的所有字符和 ‘\0‘ 一起构成了字符串 "Happy”

  ‘\0‘ 之后的其他数组元素与该字符串无关

  (6)对字符串的操作

  • 把字符串放入一维字符数组(存储)
  • l对字符串的操作 ===> 对字符数组的操作

  普通字符数组:数组元素的个数是确定的,一般用下标控制循环

  字符串:没有显式地给出有效字符的个数,只规定在字符串结束符 ‘\0‘ 之前的字符都是字符串的有效字符,一般用结束符 ‘\0‘ 来控制循环

  循环条件:s[i] != ‘\0‘

    (7)字符串的存储-赋值和输入

  • 将字符串存入数组,对字符串初始化还可以采用赋值和输入方法
  数组初始化

  static char s[6]= "Hello";

  赋值

  s[0]=‘a‘; s[1]=‘\0‘;

  或者

  static char s[6]= "a";

  输入

  ‘\0‘ 代表空操作,无法输入

  输入时,设定一个输入结束符

  将输入结束符转换为字符串结束符 ‘\0‘

二、实验中遇到的问题及解决方法

这次的实验内容有点难度,后面的两个实验内容有不会的地方,问了问做完的同学,其他的还好!以后会越来越难,加油!↖(^ω^)↗!

作业九总结