版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计基础程序设计基础第第 8章章 批量同类型数据的组织批量同类型数据的组织数组数组 一维数组一维数组 二维数组二维数组本章的基本内容是:本章的基本内容是:程序设计基础程序设计基础【任务【任务8.1】舞林大会】舞林大会【问题问题】某学校组织现代舞比赛,聘请了某学校组织现代舞比赛,聘请了N名评委为参赛选手名评委为参赛选手打分,评分原则是去掉一个最高分和一个最低分,取剩下评分打分,评分原则是去掉一个最高分和一个最低分,取剩下评分的平均值作为该选手的最后得分。评委给出的评分范围为的平均值作为该选手的最后得分。评委给出的评分范围为0, 10,并且可以是小数。假设评委的评分由键盘输入,要求输出,并且可
2、以是小数。假设评委的评分由键盘输入,要求输出参赛选手的最终得分。参赛选手的最终得分。【想法想法】设长度为设长度为N的一维数组存放的一维数组存放N名评委的打分,找出最高名评委的打分,找出最高分和最低分,统计剩下评分的平均值。分和最低分,统计剩下评分的平均值。 【算法算法】 输入:输入:N个评分(小数)个评分(小数) 输出:除输出:除最高分和最低分外剩下评分的平均值最高分和最低分外剩下评分的平均值1. 在数组中扫描一遍,找到最小值和最大值,并计算评分的总和在数组中扫描一遍,找到最小值和最大值,并计算评分的总和sum;2. 平均分平均分(sum - 最小值最小值 - 最大值最大值)/(N-2);3.
3、 返回平均分;返回平均分;程序设计基础程序设计基础8.1 一维数组一维数组1. 一维数组的定义一维数组的定义【语法语法】声明一维数组的一般形式如下:声明一维数组的一般形式如下: 一维数组的定义和初始化一维数组的定义和初始化基类型基类型 数组变量名数组变量名整型常量表达式整型常量表达式 ;数组元素的类型数组元素的类型数组长度数组长度数组名数组名【语义语义】声明一个一维数组变量,编译器为其分配一段连续声明一个一维数组变量,编译器为其分配一段连续的存储空间。的存储空间。一维数组一维数组仅使用一个下标即可惟一标识数组元素。本质上,一仅使用一个下标即可惟一标识数组元素。本质上,一维数组就是数据集合的线性
4、排列,因此,一维数组也称为维数组就是数据集合的线性排列,因此,一维数组也称为向量向量。数组也要先声明后使用。数组也要先声明后使用。程序设计基础程序设计基础8.1 一维数组一维数组一维数组的定义和初始化一维数组的定义和初始化一维数组的存储:连续的存储单元。一维数组的存储:连续的存储单元。数组三要素:数组三要素:1. 数组名:数组的起始地址数组名:数组的起始地址2. 基类型:数组元素的数据类型基类型:数组元素的数据类型3. 数组长度:数组元素的个数数组长度:数组元素的个数 数组名数组名 数组长度数组长度数组元素的存储单元数数组元素的存储单元数程序设计基础程序设计基础8.1 一维数组一维数组一维数组
5、的定义和初始化一维数组的定义和初始化int a10 ; /声明数组声明数组a,数组元素的类型为整型,共有,数组元素的类型为整型,共有10个数组元素个数组元素char ch10 ; /声明数组声明数组ch,数组元素的类型为字符型,共有,数组元素的类型为字符型,共有10个数组元素个数组元素double b5 ; /声明数组声明数组b,数组元素的类型为双精度型,共有,数组元素的类型为双精度型,共有5个数组元素个数组元素数组长度必须是一个固定的值,声明数组时数组长度不能是变量数组长度必须是一个固定的值,声明数组时数组长度不能是变量 int n = 10 ;int an ;const int N = 1
6、0 ;int aN ;程序设计基础程序设计基础8.1 一维数组一维数组2. 一维数组元素的引用一维数组元素的引用引用数组元素使用数组名和该元素在数组中的下标。引用数组元素使用数组名和该元素在数组中的下标。 【语法语法】访问一维数组元素的一般形式如下:访问一维数组元素的一般形式如下: 一维数组的定义和初始化一维数组的定义和初始化【语义语义】引用该下标对应的数组元素。引用该下标对应的数组元素。 数组变量名数组变量名整型常量表达式整型常量表达式 数组下标数组下标数组下标的取值范围是数组下标的取值范围是0, 数组长度数组长度1 程序设计基础程序设计基础8 .1一维数组一维数组一维数组的定义和初始化一维
7、数组的定义和初始化int a10 ; /声明一个声明一个int型数组型数组下标:下标: 0 1 2 3 4 5 6 7 8 9a0 a1 a2 a3 a4 a5 a6 a7 a8 a9地址:地址:&a0 &a1 &a2 &a3 &a4 &a5 &a6 &a7 &a8 &a9元素值:元素值: 数组元素具有变量的基本属性数组元素具有变量的基本属性变量名:变量名:ai地址:地址:&ai变量值:变量值:ai类型:类型:int程序设计基础程序设计基础8.1 一维数组一维数组3. 一维数组的初始化一维数组的初始化【语法
8、语法】初始化一维数组的一般形式如下:初始化一维数组的一般形式如下: 一维数组的定义和初始化一维数组的定义和初始化【语义语义】将初值表中各数据值赋给数组中相应元素。将初值表中各数据值赋给数组中相应元素。 如果提供的初值个数小于数组长度,则未指定值的数组元素如果提供的初值个数小于数组长度,则未指定值的数组元素被赋值为被赋值为0; 如果提供的初值个数多于数组长度,其结果取决于编译器,如果提供的初值个数多于数组长度,其结果取决于编译器,有些编译器会忽略多余的初值,有些编译器会给出错误信息。有些编译器会忽略多余的初值,有些编译器会给出错误信息。 基类型基类型 数组变量名数组变量名整型常量表达式整型常量表
9、达式 = 初值表初值表;缺省则为初值个数缺省则为初值个数逗号分隔的数据值逗号分隔的数据值 程序设计基础程序设计基础8.1 一维数组一维数组一维数组的定义和初始化一维数组的定义和初始化int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ; int a10 = 0, 1, 2, 3, 4 ; int a = 0, 1, 2, 3, 4 ; 程序设计基础程序设计基础8.1 一维数组一维数组一维数组的操作一维数组的操作1. 输入输入/ /输出操作输出操作在在C语言中,不能整体读入一个数组,也不能整体输出一个语言中,不能整体读入一个数组,也不能整体输出一个数组。可以使用循环语句
10、实现将一批数据读入数组,在循环数组。可以使用循环语句实现将一批数据读入数组,在循环体中读取键盘的输入并送到指定数组元素中,也可以使用循体中读取键盘的输入并送到指定数组元素中,也可以使用循环语句实现输出数组中的全部数据。环语句实现输出数组中的全部数据。 int a10, i ;for (i = 0; i 10; i+)scanf(%d, &ai) ; /元素元素ai相当于简单变量,其地址为相当于简单变量,其地址为&aifor (i = 0; i 10; i+) printf(%d, ai) ;程序设计基础程序设计基础8.1 一维数组一维数组2. 赋值操作赋值操作一维数组的操作一维
11、数组的操作int a5 ;a0 = 1; a1 = 10 ; a2 = 12 ; a3 = 16 ; a4 = 28 ;int a10, i ;for (i = 0; i 10; i+ ) ai = 2 * i ; /数组元素为偶数数组元素为偶数int a5 = 1, 2, 3, 4, 5, b5;b = a ; / /不能对数组进行整体赋值不能对数组进行整体赋值程序设计基础程序设计基础编译器没有提供数组下标越界检查,注意数组下标不能越界编译器没有提供数组下标越界检查,注意数组下标不能越界 8.1 一维数组一维数组int a5, x = 0 ;int i ;for (i = 0; i = 5;
12、 i+) ai = i ; /当当i = 5时下标越界,但是编译器没有任何提示时下标越界,但是编译器没有任何提示a0 a1 a2 a3 a4 x 0 1 2 3 4 0 5一维数组的操作一维数组的操作2. 赋值操作赋值操作程序设计基础程序设计基础8.1 一维数组一维数组3.其他操作其他操作 本质上,数组元素是一个简单变量,因此,数组元素的使用方本质上,数组元素是一个简单变量,因此,数组元素的使用方法与同类型的简单变量的使用方法相同。法与同类型的简单变量的使用方法相同。 int a10 ; /定义定义int型数组型数组a a0 = 1 ; a1 = 2 ;a2 = a0 + a1 * 5 ; /
13、取数组元素值并执行算术运算取数组元素值并执行算术运算一维数组的操作一维数组的操作程序设计基础程序设计基础8.1 一维数组一维数组例例8.1 在一维数组在一维数组rn中查找最大值元素中查找最大值元素。2 #include 2 #include 3 #define N 53 #define N 54 4 5 int main( )5 int main( )6 6 7 int aN, i, max; 7 int aN, i, max; 8 printf(8 printf(请输入请输入%d个整数:个整数:, N) ;9 for (i = 0; i N; i+)9 for (i = 0; i N; i+
14、)10 10 11 scanf(%d, &ai) ;11 scanf(%d, &ai) ;12 12 13 max = a0; 13 max = a0; 14 for (i = 1; i N; i+)14 for (i = 1; i N; i+)15 15 程序设计基础程序设计基础8.1 一维数组一维数组例例8.1 在一维数组在一维数组rn中查找最大值元素中查找最大值元素。2 #include 2 #include 3 #define N 53 #define N 54 4 5 int main( )5 int main( )6 6 7 int aN, i, max; 7 in
15、t aN, i, max; 8 printf(8 printf(请输入请输入%d个整数:个整数:, N) ;9 for (i = 0; i N; i+)9 for (i = 0; i N; i+)10 10 11 scanf(%d, &ai) ;11 scanf(%d, &ai) ;12 12 13 max = a0; 13 max = a0; 14 for (i = 1; i N; i+)14 for (i = 1; i N; i+)15 15 16 if (max ai) 17 max = ai ;18 19 printf(最大值为:最大值为:%dn, max);20 re
16、turn 0 ; 21 程序设计基础程序设计基础函数定义:将形参声明为一维数组,无需指定数组长度,即函数定义:将形参声明为一维数组,无需指定数组长度,即在数组名后只跟一个空的方括号;在数组名后只跟一个空的方括号;函数调用:将数组名作为实参,且实参数组与形参数组的基函数调用:将数组名作为实参,且实参数组与形参数组的基类型一致;类型一致;参数传递的过程:将实参数组的首地址传递给形参,实际上参数传递的过程:将实参数组的首地址传递给形参,实际上传递的是整个数组。传递的是整个数组。数组大小:可以一致也可以不一致,编译器对形参数组长度数组大小:可以一致也可以不一致,编译器对形参数组长度不进行检查,形参数组
17、长度由函数调用时的实参数组决定。不进行检查,形参数组长度由函数调用时的实参数组决定。为了方便函数中处理数组元素,可以另设一个参数传递数组为了方便函数中处理数组元素,可以另设一个参数传递数组长度。长度。 8.1 一维数组一维数组一维数组作为函数的参数一维数组作为函数的参数函数声明:函数声明:int Max(int r , int n) 相当于相当于int Max(int *r, int n)函数调用:函数调用:Max ( a, 10) ;参数结合的过程相当于:参数结合的过程相当于:int *r = a, int n = 10 ;程序设计基础程序设计基础8.1 一维数组一维数组例例8.2 在一维数
18、组在一维数组rn中查找最大值元素。中查找最大值元素。 1 /* example7-1.cpp */2 #include 3 #define NUM 104 int Max(int r , int n) ;56 int main( )7 8 int i, aNUM ;9 printf(请输入请输入%d个整数:个整数:n, NUM) ;10 for(i = 0; i NUM; i+)11 12 scanf(%d, &ai) ;13 14 printf(最大值为:最大值为:%d, Max(a, NUM) ;15 return 0 ;16 程序设计基础程序设计基础8.1 一维数组一维数组例例8
19、.2 在一维数组在一维数组rn中查找最大值元素。中查找最大值元素。 1 /* example7-1.cpp */2 #include 3 #define NUM 104 int Max(int r , int n) ;56 int main( )7 8 int i, aNUM ;9 printf(请输入请输入%d个整数:个整数:n, NUM) ;10 for(i = 0; i NUM; i+)11 12 scanf(%d, &ai) ;13 14 printf(最大值为:最大值为:%d, Max(a, NUM) ;15 return 0 ;16 1718 int Max(int r ,
20、 int n)19 20 int i, index = 0;21 for (i = 1; i NUM; i+)22 23 if (rindex r1,则,则max1 = r0; max2 = r1; 否则否则max1 = r1; max2 = r0;step2: step2: 下标下标i从从2n-1重复执行下述操作:重复执行下述操作: step2.1: step2.1: 如果如果ri = max1,则,则max2 = max1; max1 = ri; 否则,如果否则,如果ri max2,则,则max2 = ri; step2.2: i+; step2.2: i+;step3: step3: 返
21、回返回max1和和max2;程序设计基础程序设计基础8.1 一维数组一维数组【程序程序】函数函数FirstSecondMax有有4个参数,其中参数个参数,其中参数r和和n是典型的一维数组作为是典型的一维数组作为函数的参数,用来接收算法的输入,参数函数的参数,用来接收算法的输入,参数p和和q以指针传递方式返回函数的两个以指针传递方式返回函数的两个计算结果。计算结果。2 #include 2 #include 3 #define N 10; 3 #define N 10; 4 void FirstSecondMax(int r , int n, int 4 void FirstSecondMax(
22、int r , int n, int * *p, int p, int * *q) ; q) ; 5 5 6 int main( )6 int main( )7 7 8 int i, aN, firstMax, secondMax ;8 int i, aN, firstMax, secondMax ;9 printf(9 printf(请输入请输入%d个整数:个整数:, N) ;10 for (i = 0; i N; i+) 10 for (i = 0; i r1) 22 if (r0 r1) 23 23 24 max1 = r0; max2 = r1; 24 max1 = r0; max2
23、= r1; 25 25 26 else26 else27 27 28 max1 = r1; max2 = r0; 28 max1 = r1; max2 = r0; 29 29 30 for (i = 2; i n; i+) 30 for (i = 2; i = max1) 32 if (ri = max1) 33 33 程序设计基础程序设计基础8.1 一维数组一维数组18 18 19 void FirstSecondMax(int r , int n, int 19 void FirstSecondMax(int r , int n, int * *p, int p, int * *q) q)
24、 20 20 21 int max1, max2, i; 21 int max1, max2, i; 22 if (r0 r1) 22 if (r0 r1) 23 23 24 max1 = r0; max2 = r1; 24 max1 = r0; max2 = r1; 25 25 26 else26 else27 27 28 max1 = r1; max2 = r0; 28 max1 = r1; max2 = r0; 29 29 30 for (i = 2; i n; i+) 30 for (i = 2; i = max1) 32 if (ri = max1) 33 33 34 max2 =
25、max1; max1 = ri; 35 36 else if (ri max2) 37 max2 = ri;38 39 *p = max1; *q = max2; 40 程序设计基础程序设计基础解决任务解决任务8.1的程序的程序 1 #include 2 #define N 5;3 double Average(double r,int NUM);45 int main ()6 7 double aNUM;8 int i;9 printf(请输入请输入%d个分数,可以是小数个分数,可以是小数,NUM);10 for (i = 0;i NUM;i+)11 12 scanf(%lf,&ai
26、);13 14 printf(参赛选手的最终得分是:参赛选手的最终得分是:%4.1f, Average(a, NUM);15 return 0;16 17程序设计基础程序设计基础18 double Average(double r,int NUM)19 20 double max=r0, min=r0, sum=r0 ;21 int i ;22 for (i = 1; i NUM; i+)23 24sum = sum + ri ;25if (max ri)28 min = ri ;29 30 return (sum - max - min)/(NUM - 2);31 解决任务解决任务8.1的程
27、序的程序 程序设计基础程序设计基础【任务【任务8.2】幻方问题】幻方问题【问题问题】幻方又称魔方阵、幻方阵,在我国古代称为幻方又称魔方阵、幻方阵,在我国古代称为“纵横纵横图图”,它是在一个,它是在一个nn的矩阵中填入的矩阵中填入1到到n2的数字(的数字(n为奇数),为奇数),使得每一行、每一列、每条对角线的累加和(幻和)都相等。使得每一行、每一列、每条对角线的累加和(幻和)都相等。【想法想法】 “左上斜行法左上斜行法”的填数方法,具体填数过程如下:的填数方法,具体填数过程如下: 由由1开始填数,将开始填数,将1放在第放在第0行的中间位置;行的中间位置;将魔方阵想象成上下、左右相接,每次往左上角
28、走一步,则:将魔方阵想象成上下、左右相接,每次往左上角走一步,则: 左上角超出上边边界,则在最下边相对应的位置填入下一个数字;左上角超出上边边界,则在最下边相对应的位置填入下一个数字; 左上角超出左边边界,则在最右边相对应的位置填入下一个数字;左上角超出左边边界,则在最右边相对应的位置填入下一个数字; 左上角已填入数据,则在原位置的同一列下一行填入下一个数字。左上角已填入数据,则在原位置的同一列下一行填入下一个数字。61875329412132132415324615324程序设计基础程序设计基础【任务【任务7.2】幻方问题】幻方问题1. 在第在第0行的中间位置填行的中间位置填1 ;2. 循环
29、执行下述操作,将数字循环执行下述操作,将数字i(2n*n)填入)填入 2.1 求求i所在的行号所在的行号p和列号和列号q; 2.2 如果位置如果位置(p, q)已经有数,填入原位置的同一列下一行已经有数,填入原位置的同一列下一行; 否则,在位置否则,在位置(p, q)上填入上填入i;【算法算法】程序设计基础程序设计基础8.2 二维数组二维数组二维数组的定义和初始化二维数组的定义和初始化【语义语义】定义定义一个二维数组变量,编译器为其分配一段连续的一个二维数组变量,编译器为其分配一段连续的存储空间。存储空间。 基类型基类型 数组变量名数组变量名整型常量表达式整型常量表达式1 整型常量表达式整型常
30、量表达式2;数组元素的类型数组元素的类型数组名数组名 数组行数数组行数 数组列数数组列数二维数组二维数组需要两个下标即可惟一标识数组元素,主要用于表示需要两个下标即可惟一标识数组元素,主要用于表示二维表和矩阵。二维表和矩阵。 【语法语法】声明二维数组的一般形式如下:声明二维数组的一般形式如下:1. 1. 二维数组的定义二维数组的定义程序设计基础程序设计基础8.2 二维数组二维数组二维数组的定义和初始化二维数组的定义和初始化【语义语义】定义定义一个二维数组变量,编译器为其分配一段连续的一个二维数组变量,编译器为其分配一段连续的存储空间。存储空间。 基类型基类型 数组变量名数组变量名整型常量表达式
31、整型常量表达式1 整型常量表达式整型常量表达式2;数组元素的类型数组元素的类型数组名数组名 数组行数数组行数 数组列数数组列数二维数组二维数组需要两个下标即可惟一标识数组元素,主要用于表示需要两个下标即可惟一标识数组元素,主要用于表示二维表和矩阵。二维表和矩阵。 【语法语法】声明二维数组的一般形式如下:声明二维数组的一般形式如下:1. 1. 二维数组的定义二维数组的定义程序设计基础程序设计基础8.2二维数组二维数组二维数组的定义和初始化二维数组的定义和初始化int a105 ; /int a105 ; /定义二维数组定义二维数组a a,元素类型为整型,共有,元素类型为整型,共有10105 5个
32、元素个元素char ch105 ; /char ch105 ; /定义二维数组定义二维数组chch,元素类型为字符型,共有,元素类型为字符型,共有10105 5个元素个元素double b510 ; /double b510 ; /定义二维数组定义二维数组b b,元素类型为双精度型,共有,元素类型为双精度型,共有5 51010个元素个元素以下都是合法的二维数组定义:以下都是合法的二维数组定义:程序设计基础程序设计基础8.2 二维数组二维数组【语法语法】引用二维数组的一般形式如下:引用二维数组的一般形式如下: 二维数组的定义和初始化二维数组的定义和初始化【语义语义】引用行下标和列下标对应的二维数
33、组元素。引用行下标和列下标对应的二维数组元素。数组变量名数组变量名整型常量表达式整型常量表达式1 整型常量表达式整型常量表达式2行下标 列下标a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23列下标列下标0 1 2 3行下标行下标012 二维数组及其存储方式二维数组及其存储方式a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23a第第0行行第第1行行第第2行行2. 2. 二维数组元素的引用二维数组元素的引用程序设计基础程序设计基础8.2 二维数组二维数组二维数组的定义和初始化二维数组的定义和初始化3. 3. 二维
34、数组的初始化二维数组的初始化【语法语法】初始化二维数组的一般形式如下:初始化二维数组的一般形式如下:基类型基类型 数组变量名数组变量名整型常量表达式整型常量表达式1 整型常量表达式整型常量表达式2 = 初值表初值表;所有数据值写在一个花括号内所有数据值写在一个花括号内基类型基类型 数组变量名数组变量名整型常量表达式整型常量表达式1 整型常量表达式整型常量表达式2 = 初值表初值表, ,初值初值表表;每一行的数据值写在一个花括号每一行的数据值写在一个花括号内内【语义语义】将初值表中各数据值依次赋给数组中相应元素。如果提将初值表中各数据值依次赋给数组中相应元素。如果提供的初值个数小于数组长度,则未
35、指定值的数组元素被赋值为供的初值个数小于数组长度,则未指定值的数组元素被赋值为0 0;如果提供的初值个数多于数组长度,其结果取决于编译器,有些如果提供的初值个数多于数组长度,其结果取决于编译器,有些编译器会忽略多余的初值,有些编译器会给出错误信息。编译器会忽略多余的初值,有些编译器会给出错误信息。程序设计基础程序设计基础8.2 二维数组二维数组二维数组的定义和初始化二维数组的定义和初始化3. 3. 二维数组的初始化二维数组的初始化int a34 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;int a34 = 1, 2, 3, 4, 5, 6, 7, 8, 9
36、, 10, 11, 12;int a34 = 1, 2, 3, 4, /为第0行元素赋值5, 6, 7, 8, /为第1行元素赋值 9, 10, 11, 12; /为第2行元素赋值也可以写作也可以写作写作如下形式会增加程序的清晰性写作如下形式会增加程序的清晰性程序设计基础程序设计基础8.2 二维数组二维数组二维数组不能实现整体读入和整体输出。可以使用循环语句二维数组不能实现整体读入和整体输出。可以使用循环语句实现将一批数据读入数组,在循环体中读取键盘的输入并送实现将一批数据读入数组,在循环体中读取键盘的输入并送到指定数组元素中,也可以使用循环语句实现输出数组中的到指定数组元素中,也可以使用循环
37、语句实现输出数组中的全部数据。全部数据。 二维数组的操作二维数组的操作1.1.输入输入/ /输出操作输出操作int a510, i, j ;for (i = 0; i 5; i+) for (j = 0; j 10; j+) scanf(%d, &aij) ; /元素元素aij相当于简单变量,其地址为相当于简单变量,其地址为&aijfor (i = 0; i 5; i+) for (j = 0; j 10; j+) printf(%d, aij) ;程序设计基础程序设计基础8.2 二维数组二维数组二维数组的操作二维数组的操作2.赋值操作赋值操作int a510, i, j ;f
38、or (i = 0; i 5; i+ ) /为第为第i行元素赋值行元素赋值 for (j = 0; j 10; j+) aij = i + j ;int a580 ;a04 = 12 ; a112 = 10 ; a220 = 12 ; 程序设计基础程序设计基础8.2 二维数组二维数组二维数组的操作二维数组的操作3.3.其他操作其他操作二维数组元素的使用方法与同类型的简单变量的使用方法相同。二维数组元素的使用方法与同类型的简单变量的使用方法相同。 int a34; /定义二维数组定义二维数组a,共有,共有34 = 12个数组元素个数组元素a00 = 1 ; a01 = 2 ;a02 = a00
39、+ a01 / 10 ; /取数组元素值并执行算术运算取数组元素值并执行算术运算程序设计基础程序设计基础8.2 二维数组二维数组例例8.4 求二维数组求二维数组rmn的最大值元素。的最大值元素。2 #include 2 #include 3 3 4 int main( )4 int main( )5 5 6 int a1010 , max, i, j , m, n ; 6 int a1010 , max, i, j , m, n ; 7 printf(7 printf(请输入二维数组的行数和列数:请输入二维数组的行数和列数:) ;8 scanf(%d%d, &m, &n) ;
40、8 scanf(%d%d, &m, &n) ; 9 printf(9 printf(请输入请输入%d个整数:个整数:, m * n) ; 10 for (i = 0; i m; i+) 10 for (i = 0; i m; i+) 11 for (j = 0; j n; j+) 11 for (j = 0; j n; j+) 12 scanf(%d, &aij) ; 12 scanf(%d, &aij) ; 13 max = a00; 13 max = a00; 14 for (i = 0; i m; i+) 14 for (i = 0; i m; i+) 1
41、5 for (j = 0; j n; j+)15 for (j = 0; j n; j+)16 if (max aij) 16 if (max aij) 17 max = aij ; 17 max = aij ; 18 printf(18 printf(最大值是:最大值是:%dn, max) ;19 return 0; 19 return 0; 20 20 程序设计基础程序设计基础8.2二维数组二维数组二维数组作为函数的参数二维数组作为函数的参数 函数定义:函数定义:对形参数组的声明可以指定每一维的长度,也可对形参数组的声明可以指定每一维的长度,也可以省略第一维的长度,但必须指明第二维的长度,
42、而且必须为以省略第一维的长度,但必须指明第二维的长度,而且必须为常量表达式;常量表达式; 函数调用:函数调用:将二维数组名作为实参,且实参数组与形参数组将二维数组名作为实参,且实参数组与形参数组的基类型一致;的基类型一致; 参数传递的过程:参数传递的过程:将实参数组的首地址传给形参数组,将实将实参数组的首地址传给形参数组,将实参数组的行数和列数传给形参。参数组的行数和列数传给形参。因为从实参传递过来的是数组的首地址,在内存中按行优先存因为从实参传递过来的是数组的首地址,在内存中按行优先存放,如果在形参中不说明列数,则编译器无法确定该数组的行放,如果在形参中不说明列数,则编译器无法确定该数组的行
43、数和列数。数和列数。 程序设计基础程序设计基础8.2 二维数组二维数组函数声明:函数声明:int Max(int r100100, int m, int n)或或 int Max(int r 100, int m, int n),相当于,相当于 int Max(int *r, int m, int n) ;函数调用:函数调用:Max (a, 3, 4);参数结合的过程相当于:参数结合的过程相当于:int *r = a, int m = 3, int n = 4 ;例例8.5 求二维数组求二维数组rmn的最大值元素。要求用函数实现的最大值元素。要求用函数实现.二维数组作为函数的参数二维数组作为函
44、数的参数程序设计基础程序设计基础8.2 二维数组二维数组1 /* example7-2.cpp */2 #include 5 int Max(int r100100, int m, int n) ;67 int main( )8 9 int a100100 , i, j , m, n ;10 printf(请输入二维数组的行数和列数:请输入二维数组的行数和列数:) ;11 scanf(%d%d, &m, &n) ;12 printf(请输入请输入%d个整数:个整数:, m * n) ;13 for(i = 0; i m; i+)14 for(j = 0; j n; j+)15 scanf(%d, &aij) ;16 printf(最大值是:最大值是:%d, Max(a, m, n) ;17 18程序设计基础程序设计基础8.2 二维数组二维数组1 /* example7-2.cpp */2 #include 5 int Max(int r100100, int m, int n) ;67 int main( )8 9 int a100100 , i, j , m, n ;10 printf(请输入二维数组的行数和列数:请输入二维数组的行数和列数:) ;11 scanf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度酒店泊车服务合同版
- 二零二五年度智慧城市建设车位投资合作合同
- 2025年度柴油发电机维修培训及售后服务合同4篇
- 2025年度厂房买卖中介合同模板(附环保条款)4篇
- 二零二五年度福建省事业单位劳动合同解除及补偿条款
- 二零二五年度粉刷施工劳务派遣服务合同
- 二零二五年度常年法律顾问企业并购法律事务合同
- 二零二五版房地产无底薪业务员佣金分配与业绩考核合同3篇
- 2025年度水利设施测绘地理信息服务合同4篇
- 2025年度石油机械租赁合同范本
- 中华民族共同体概论讲稿专家版《中华民族共同体概论》大讲堂之第一讲:中华民族共同体基础理论
- 《商务沟通-策略、方法与案例》课件 第一章 商务沟通概论
- 广西《乳腺X射线数字化体层摄影诊疗技术操作规范》编制说明
- 风筝产业深度调研及未来发展现状趋势
- 吉利汽车集团总部机构设置、岗位编制
- 矿山安全生产法律法规
- 小学数学《比的认识单元复习课》教学设计(课例)
- 词性转换清单-2024届高考英语外研版(2019)必修第一二三册
- GB/T 44670-2024殡仪馆职工安全防护通用要求
- 安徽省合肥市2023-2024学年七年级上学期期末数学试题(含答案)
- 合同债务人变更协议书模板
评论
0/150
提交评论