目录

  • 1 计算机概述
    • 1.1 计算机简介
    • 1.2 计算机系统
    • 1.3 数值在计算机中的表示
  • 2 C语言概述
    • 2.1 C语言发展及特点
    • 2.2 C语言程序的运行步骤和开发环境
    • 2.3 简单的C语言程序
  • 3 C语言基础
    • 3.1 变量、常量及数据类型
    • 3.2 运算符和表达式
    • 3.3 输入、输出
  • 4 选择结构
    • 4.1 计算机编程和算法
    • 4.2 if语句
    • 4.3 if嵌套和if多分支
    • 4.4 switch语句
  • 5 循环结构
    • 5.1 while语句和do...while语句
    • 5.2 for语句
    • 5.3 break语句和continue语句
    • 5.4 goto语句构成的循环
    • 5.5 嵌套循环结构
    • 5.6 程序设计举例
  • 6 函数
    • 6.1 函数的定义与调用
    • 6.2 函数的嵌套调用和递归调用
    • 6.3 作用域和生命周期
    • 6.4 章节小结与测试
  • 7 数组
    • 7.1 一维数组及应用
    • 7.2 二维数组及应用
    • 7.3 字符数组
    • 7.4 数组作为函数参数
    • 7.5 章节小结与测试
  • 8 指针
    • 8.1 指针变量
    • 8.2 指针与数组
    • 8.3 指针的多种形态
  • 9 字符串
    • 9.1 字符串概念及输入输出
    • 9.2 字符串函数
    • 9.3 指针与字符串
    • 9.4 章节小结与测试
  • 10 编译预处理
    • 10.1 宏定义
    • 10.2 文件包含
    • 10.3 条件编译
  • 11 结构体、共用体和用户定义类型
    • 11.1 结构体类型变量
    • 11.2 结构体类型数组与指针
    • 11.3 结构体与函数
    • 11.4 用指针处理链表
    • 11.5 共用体
  • 12 位运算
    • 12.1 位运算的概念和运算规则
  • 13 文件
    • 13.1 C文件概述
    • 13.2 文件的打开与关闭
    • 13.3 文件读写
    • 13.4 位置指针的定位
二维数组及应用

学习目标:

    掌握二维数组的概念(难点)

    掌握二维数组的定义和引用

    掌握二维数组的应用

重点:

    二维数组的遍历方法

难点:

    二维数组的概念的理解

 

一、二维数组

1.定义

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

1)类型说明符:表示数组的类型int , short , long ,unsigned , float , double , char等

2)数组名:表示各数组元素的统一名字

3)常量表达式:表示数组的长度

即:int a[3][4]  //定义一个3行4列的二维数组

说明:

a)每一维的下标从0开始,整个数组元素为:3×4=12个

b)C语言中,二维数组中元素排列的顺序是按行存放。

即:先存放第一行的元素,再存放第二行的元素,12个元素的存放的顺序及坐标如下所示:

                       

 

a[0][0]

 
 

a[0][1]

 
 

a[0][2]

 
 

a[0][3]

 
 

a[1][0]

 
 

a[1][1]

 
 

a[1][2]

 
 

a[1][3]

 
 

a[2][0]

 
 

a[2][2]

 
 

a[2][2]

 
 

a[2][3]

 

如有赋值为3,4,5,6,7,8,9,10,11,12,13,14则存储单元对应图如下图所示:

                                                     

 

a[0][0]

 
 

3

 
 

第0行元素

 
 

a[0][1]

 
 

4

 
 

a[0][2]

 
 

5

 
 

a[0][3]

 
 

6

 
 

a[1][0]

 
 

7

 
 

第1行元素

 
 

a[1][1]

 
 

8

 
 

a[1][2]

 
 

9

 
 

a[1][3]

 
 

10

 
 

a[2][0]

 
 

11

 
 

第2行元素

 
 

a[2][1]

 
 

12

 
 

a[2][2]

 
 

13

 
 

a[2][3]

 
 

14

 

 

2.二维数组初始化

1)分行给二维数组赋初值,没有赋值的元素值为0。

如:int a[2][3]={{1,2,3},{5,6,7}};

2)所有数据写在一个化括弧内

如:int a[2][3]={1,2,3,5,6,7};

3)可以对部分元素赋初值

如:int a[3][4]={{1},{3}};

等价于: int a[3][4]={{1,0,0,0},{3,0,0,0},{0,0,0,0};

如:int a[3][4]={{1,5},{0},{0,0,9}};

等价于: int a[3][4]={{1,5,0,0},{0,0,0,0},{0,0,9,0}};

4)定义数组时,第一维的长度可以不指定,但第二维的长度要指定。

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

等价于: int a[3][3]={1,2,3,4,5,6,7,8,9};

如int a[][4]={{1},{3,1},{0,0,9}};

等价于: int a[3][4]={{1,0,0,0},{3,1,0,0},{0,0,9,0}};

 

3.二维数组元素的引用

1)只能逐个引用数组元素,而不能一次引用整个数组,引用方式同一维数组。

2)同样要注意引用越界错误。

即:int a[3][4]={{1,0,0,0},{3,1,0,0},{0,0,9,0}};

printf(“%d”,a[2][2]);//输出结果为9

printf(“%d”,a[0][4]);//如此引用错误,越界

printf(“%d”,a[3][0]);//如此引用错误,越界

printf(“%d”,a[3][4]);//如此引用错误,越界

 

二、二维数组应用举例

1.例7.3:二维数组的遍历输入输出。定义一个二维数组a[3][4],输入100以内随机整数,然后输出。


2.例7.4:定义一个二维数组a[4][4],输入二位随机整数,求对角线上元素之和。


讨论题:

1)在例7.3中代码中第11行代码中的\t换成\n,结果会怎么样?没有第13行代码,结果会怎么样?

2)在例7.3中输出结果如果按下列要求分10个一行输出,代码如何改写?

 

 

上机实践题:

1)8名学生,三门功课,所有的分数(60~100随机整数)存入一个二维数组中,求每位同学的总分。

求每门功课的最高分。

2)定义一个二维数组a[5][5],输入二位随机整数,求四周元素之和。