实验七__多维数组的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七__多维数组的使用

实验目的:

(1) 掌握二维数组的定义方法、初始化赋值和元素引用;

(2) 二维数组元素的输入/输出、求最值、均值问题的编程方法; 实验环境:

Turbo C for Windows 集成实验与学习环境 6.11 实验要求任务:

1.结合实验所给内容,自行设计实验步骤,认真完成实验。

2.总结实验过程,编写提交实验报告:方案、编程、调试、结果、分析、结论。 实验内容:

二维数组是一个m 行n 列矩阵。即: 1、二维数组的定义与初始化赋值: (1)定义格式: <类型> <数组名>[][]; 其中:m 、n 为常量表达式,m=数组行数,n=数组列数。 例如:int a[3][4];

表示定义了一个3行4列共12个元素的二维整型数组a ,数组中各元素分别为: 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][1] a[2][2] a[2][3]

可以把二维数组看作为一种特殊的一维数组,即它的每一个元素又是一个一维数组。 (2)二维数组的初始化赋值 二维数组初始化赋值的方法有: ① 所有元素赋初值

给数组的所有元素赋初值的方法有两种:

方法一:{{0行初值},{1行初值},…,{m 行初值}}

即每行一个花括号,花括号间用逗号分隔,全部初值再用一个花括号。 例如:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 方法二:{0行初值,1行初值,…,m 行初值}

所有初值放在一个花括号中,按数组排列的顺序给各元素赋初值。 例如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

注意:若对所有元素都赋初值,则定义数组时行数可不指定,而列数必须指定。 例如:

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

int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; ② 部分元素赋初值

{{0行部分初值},{1行部分初值},…,{m 行部分初值}} 例如:

(1)

a21 a22 … a2n A= … … … … …amn

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

表示二维数组a 的元素a[0][0]、a[0][1]、a[1][0]、a[2][0]、a[2][1]、a[2][2]赋了初值。

2、二维数组存储方式

按行存放二维数组各数组元素。

即先存第一行元素,再存第二行元素,依次把各行元素存

入一串连续的存储单元中。

例如上节中所定义的a 数组存储在内存中时各数组元素的

排列顺序如图所示。

3、二维数组元素的引用 <数组名>[<下标表达式1>][<下标表达式2>]

下标表达式1=元素行号,下标表达式2=元素列号(行号与列号必须为整型)。

【例1】 通过键盘给一个3行4列的二维数组输入整型数值,并按表格形式输出此数组的所有元素。

程序如下: main() {

int a[3][4], i, j;

printf("Input twelve integers:"); for ( i=0; i<3; i++ ) for ( j=0; j<4; j++ ) scanf(“%d ”, &a[i][j]); for ( i=0; i<3; i++ ) {

for ( j=0; j<4; j++ )

printf(“%5d ”, a[i][j]); printf(“\n ”); } }

程序执行后提示:

Input twelve integers: 1 2 3 4 5 6 7 8 9 10 11

12

1 2 3 4 5 6 7 8 9 10 11 12

思考题:输入两个二维数组A 、B ,数据处理为C=A+B ,最后输出数组C 。如何编程? 【例1】 将一个二维数组的行和列元素互换,形成另一个二维数组,即数组的转置运算。例如:

a 数组

b 数组

1

2 3 4 1 5 9 5 6 7 8 2 6 10 9 10 11 12 3 7 11

4 8 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][1] a[2][2] a[2][3]

分析:

将a数组转换成b数组,只要将其每个数组元素的两个下标交换即可,即b[j][i]=a[i][j]。程序如下:

main()

{

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

int b[4][3];

int i, j;

printf("Array a:\n");

for ( i=0; i<3; i++ ) /*输出a数组*/

{

for (j=0;j<4;j++)

printf(“%5d”,a[i][j]);

printf(“\n”);

}

for ( i=0; i<3; i++ ) /*将a数组转置成b数组*/ for ( j=0; j<4; j++ )

b[j][i]=a[i][j];

printf("Array b:\n");

for ( i=0; i<4; i++ ) /*输出b数组*/

{

for ( j=0; j<3; j++ )

printf(“%5d”, b[i][j]);

printf(“\n”);

}

}

程序运行后,输出:

Array a:

1 2 3 4

5 6 7 8

9 10 11 12

Array b:

1 5 9

2 6 10

3 7 11

4 8 12

【例3】某小组有5个学生,考了3门课程,他们的学号及成绩如表4.1所示,试编程求每个学生的平均成绩,并按表格形式输出每个学生的学号、3门课程成绩和平均成绩。

分析:可定义一个具有5行3列的二维数组来存放5个学生的3门课的成绩,数组的每一行的3个元素存放一个学生3门课的成绩,5个学生共5行。还可定义两个具有5个元素的一维数组分别存放5个学生的学号和平均成绩。

相关文档
最新文档