数组

合集下载

数据结构第四章 数组

数据结构第四章 数组

4.2
数组的存储结构
通常采用顺序存储结构 顺序存储结构 以二维数组Amn为例
行优先 a00 a01 … a0(n-1) a10 a11 … a1(n-1) … a(m-1)0 a(m-1)1 … a (m-1)(n-1) 列优先
Loc(aij)=Loc(a00)+(i×n+j)×k
a00 a10 … a (m-1)0 a01 a11 … a (m-1) 1 … a0(n-1) a1(n-1) … a (m-1)(n-1)
0 0 -3 0 0 15 12 0 0 0 18 0 9 0 0 24 0 0 0 0 0 0 0 -7 0 0 14 0 0 0
(以转置运算为例) 以转置运算为例)
0 0 0 0 0 0
M
转置后
0 12 9 0 0 0
0 0 0 0 0 0
–3 0 0 0 14 0
0 0 15 0 18 0 24 0 0 0 0 -7 0 0 0 0 0 0
思路:反复扫描a.data中的列序,从小到大依次进行转置。 思路:反复扫描a.data中的列序,从小到大依次进行转置。 a.data中的列序
col
三 元 组 表 a.data (0, 1, 12) ③ 1 (0, 2, 9 ) ⑤ 0 (2, 0, -3) ① (2, 4, 14) (3, 2, 24) 1 (4, 1, 18) 0 (5, 0, 15) (5, 3, -7)
其中,sb[n(n+1)/2]中存放着常数 中存放着常数。 其中,sb[n(n+1)/2]中存放着常数。
三、稀疏矩阵的压缩存储
稀疏矩阵:设矩阵A中有s个非零元素, 稀疏矩阵:设矩阵A中有s个非零元素,若 远远小于矩阵元素的总数( s远远小于矩阵元素的总数(即s≦m×n), 则称A为稀疏矩阵。 则称A为稀疏矩阵。

数组语法知识点总结

数组语法知识点总结

数组语法知识点总结1. 数组的定义数组是一种由相同类型的数据元素构成的有序集合。

每个元素在数组中都有一个唯一的索引,通过这个索引可以访问和操作元素。

数组的长度是固定的,一旦数组被创建,它的大小就不能再改变。

在大多数编程语言中,数组的定义语法通常是类似这样的:```dataType[] arrayName = new dataType[length];```其中,dataType是数组元素的数据类型,arrayName是数组的名称,length是数组的长度。

例如,在Java中,我们可以定义一个整数数组:```int[] numbers = new int[5];```这样就创建了一个长度为5的整数数组numbers。

在C语言中,我们可以定义一个字符数组:```char letters[10];```这样就创建了一个长度为10的字符数组letters。

2. 数组的初始化数组可以在定义的同时进行初始化,也可以在定义后逐个赋值。

在定义的同时进行初始化时,可以使用大括号来指定数组的初始值。

在Java中,我们可以这样初始化一个整数数组:```int[] numbers = {1, 2, 3, 4, 5};这样数组numbers就被初始化为{1, 2, 3, 4, 5}。

在C语言中,我们可以这样初始化一个字符数组:```char letters[5] = {'a', 'b', 'c', 'd', 'e'};```这样数组letters就被初始化为{'a', 'b', 'c', 'd', 'e'}。

3. 数组的访问数组元素的访问可以通过索引来实现。

数组的索引是从0开始的,因此第一个元素的索引是0,第二个元素的索引是1,以此类推。

在Java中,我们可以通过索引来访问数组元素:```int[] numbers = {1, 2, 3, 4, 5};int firstNumber = numbers[0];int secondNumber = numbers[1];```在C语言中,也可以通过索引来访问数组元素:```char letters[5] = {'a', 'b', 'c', 'd', 'e'};char firstLetter = letters[0];char secondLetter = letters[1];```4. 数组的遍历数组可以通过循环来遍历,对数组中的每个元素进行操作。

数组的常用方法总结22种

数组的常用方法总结22种

数组的常用方法总结22种数组是一种常用的数据结构,经常用于存储和操作一组相似类型的数据。

在许多编程语言中,数组都提供了一系列常用的方法来方便地操作数组。

以下是常用的数组方法的总结:1. Array.isArray(: 判断一个对象是否为数组。

2. push(: 将一个或多个元素添加到数组的末尾。

3. pop(: 删除数组的最后一个元素并返回该元素。

4. shift(: 删除数组的第一个元素并返回该元素。

5. unshift(: 将一个或多个元素添加到数组的开头。

6. slice(: 返回一个新的数组,包含原数组指定范围内的元素。

7. splice(: 从数组中添加或删除元素。

8. concat(: 连接两个或多个数组,并返回结果。

9. join(: 将数组的所有元素连接为一个字符串。

10. toString(: 将数组转换为字符串,并返回结果。

11. indexOf(: 返回指定元素在数组中第一次出现的位置。

12. lastIndexOf(: 返回指定元素在数组中最后一次出现的位置。

13. includes(: 判断数组是否包含指定元素。

14. every(: 判断数组中的所有元素是否满足指定条件。

15. some(: 判断数组中是否存在满足指定条件的元素。

16. filter(: 过滤数组中满足指定条件的元素,并返回结果数组。

17. map(: 对数组中的每个元素执行指定操作,返回操作后的结果数组。

18. reduce(: 对数组中的元素执行指定累加操作,返回累加结果。

19. reverse(: 颠倒数组中元素的顺序。

20. sort(: 对数组中的元素进行排序。

21. fill(: 用指定的值填充数组的所有元素。

22. forEach(: 对数组中的每个元素执行指定操作。

以上是常用的数组方法的总结,这些方法可以满足大多数数组操作的需求。

在实际应用中,根据具体需求选择合适的方法来操作数组可以大大提高编程效率。

第八章 数组

第八章  数组

例: int a[2][3]; 它在内存情况:
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
8.2 二维数组的引用与初始化
一、引用形式:数组名[下标][下标]
(1)下标可以是整型表达式或符号常量 例如:a[2][3],a[2-1][2*2-1]
(2)数组元素可以出现在表达式中,也可以被赋值。
例如: 有定义 int a[10]; 数组元素引用举例 /*可以引用元素的从a[0]到a[9]*/
a[5]=6; a[7]=a[5]++;
a[6]=3; a[0]=a[5]+a[7]-a[2*3];
8.1.3 一维数组的初始化
1.初始化--在定义数组时对数组元素赋初值; 2.初始化方法:
[static] 数组类型 数组名[数组长度]={数组元素值};
运行结果: I am happy
例8-stdio.h>
void main( )
{
char c[5][5]={{‘ ‘,’ ‘,’* ‘},{‘ ‘,’*’,’ ‘,’*’},{‘*’,’ ‘,’ ‘,’ ‘,’*’}, {‘ ‘,’*’,’ ‘,’*’},{‘ ‘,’ ‘,’*’}};
举例:
(1)给数组a各元素赋以初值: [static] int a[10]={0,1,2,3,4,5,6,7,8,9}; (2)可以只给一部分元素赋初值,后几个元素值为 0 [static] int a[10]={0,1,2,3,4}; (3)如果想使一个数组中全部元素值为0,可以写成: static int a[10]={0,0,0,0,0,0,0,0,0,0} 或static int a[10]; (4)在全部数组元素赋初值时,可以不指定数组长度: int a[5]={1,2,3,4,5}; 可以写成: int a[ ]={1,2,3,4,5};

数组知识

数组知识

第六章一、数组的概念数组是共享一个名字的一组具有相同类型的连续存放的变量的集合数组是一组有序数据的集合数组中各数据的排列是有一定规律的,下标代表数据在数组中的符号所有的数组元素具有统一的数据类型数组名是数组的首地址,每个元素是连续存放的数组元素是由数组名和下标唯一确定二、一维数组①怎样定义一维数组一维数组的定义方式为类型标识符数组名[常量表达式]其中类型标识符:任一种基本数据类型或者是构造数据类型数组名:自己定义的数组标识符,遵从标识符命名规则常量表达式表示数组的长度,也是元素的个数注意:(1)数组名不能和变量名相同(2)定义的时候要指定数组中的元素个数常量表达式可以包括常量和符号常量比如int[3+5]是合法的但是不可以包括变量int a[n]是不合法的C不允许对于数组的大小进行动态定义不过如果在被调用的函数中(不包括main)中定义数组其长度可以是变量或者非常量的表达式比如Void func(int n){ int a[2*n] //合法的n的值从实参中传来调用func函数时形参n从实参中得到值这种情况叫做“可变长数组”,允许在每次调用func时有不同的n不过每次使用的时候数组的长度是固定的(3)数组的大小不可以是浮点常量(4)定义数组的时候不能没有数组长度int a[] 非法②一维数组元素的引用数组元素是组成数组的基本单元 数组元素也是一种变量 引用的格式数组名[数组下标]其中数组下标只可以是整型常量或者整型表达式 如果是小数的话c 编译的时候会自动取整数组在定义之后数组名代表数组的首地址其中的元素按照下标依次存放而且下标从0开始!数组定义之后系统将给其分配一定的内存单元其所占内存单元的大小和数组元素的类型和数组的长度有关数组所占内存单元字节数=数组大小*sizeof (数组元素类型)其中Int 2字节(TC 中)编译器不同可能不同 Char 1 Short 1 Long 4 Float 4 Double 8比如要引用a[2] 就会先计算2000+2*2=2004 然后再从2004中取出内容占用的字节数为: 10 * sizeof(int) = 10 * 2 = 20内存地址2000 200220042018a……第1个元素 ……第2个元素 第3个元素第10个元素注意事项(1)只可以逐个引用数组的元素,不能一次性引用整个数组(所以常用循环)(2)数组引用要注意越界问题C语言对于数组不作越界检查,但是下标超范围会死机或者程序错误(3)一般对于数组长度会采用宏定义define③一维数组的初始化如果对于一维数组不赋初值,则为随机数对于数组元素的赋值,叫做数组的初始化不赋值不叫初始化数据类型符数组变量名[常量表达式]={表达式1…表达式n}(1)在定义数组时对全部数组元素赋予初值Inta[5]={1,2,3,4,5};数组的元素要放在花括号里边,元素之间用逗号隔开花括号里边的数据叫做“初始化列表”(2)也可以只给数组中的一部分元素赋值Inta[5]={1,2,3};则只给前三个赋值,后边两个自动为0(3)如果想让一个数组中的元素全部都为0,可以写Int a[5]={0,0,0,0,0}; 或者Int a[5]={0};//未赋值的部分自动为0(4)在对全部数组元素赋初值的时候由于元素的个数确定可以不用指定数组的长度Int a[]={1,2,3,4,5};虽然是没有指定长度不过系统会自动默认是5不过不可以int a[];所以如果要定义的长度比赋值的长度长,就要写下标注意:表达式的个数不能超过数组变量的大小如果定义数值型数组的时候未被初始化列表指定初始化的都是0如果定义字符型数组的时候未被初始化列表指定初始化的都是’\0’如果定义指针型数组的时候未被初始化列表指定初始化的都是NULL空指针C语言除了在定义数组变量时可以对数组整体赋值之外无法再全体赋值所以Char a[3]A=,‘1’,’2’,’3’-A*+=,‘1’’2’3’-;A*3+=,‘1’’2’’3’-; 都是错的所以数组定义后只能用赋值语句一一赋值Char str[80];Str*0+=’b’ str*1+=’y’ str*2+=’e’ str*3+=’\0’ //数组str赋值为一字符串bye一般一维数组的赋值使用循环语句④一维数组程序举例冒泡法折半查找法斐波那契数列请见第二章书上出现的算法三、二维数组①怎样定义二维数组类型符数组名[常量表达式][常量表达式];二维数组可以看作特殊的一维数组 它的元素又是一维数组a[0] a[0][0] a[0][1] a[0][2] a[1] a[1][0] a[1][1] a[1][2] a[2] a[2][0] a[2][1] a[2][2]数组元素的存放顺序已行序优先最右下标变化最快 二维数组的a[0]a[1] 不可以当成数组元素变量使用 对于a[0]是数组名 是a[0][0] a[0][1] a[0][2]的地址 二维数组的存贮空间 是先按照行序再列的比如float a[3][4] 一共有12个元素由于是float 类型每个元素占四个字节所以一共是48个字节 存储顺序a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23②怎样引用二维数组数组名[下标][下标]对于int a[4][5]以及a[4][5]有什么差别前者定义了4行五列的二维数组最多引用到a34而a45 说明引用到了第五行和第六列则至少应该为int a[5][6]③二维数组的初始化数据类型数组变量名[行常量表达式][列常量表达式]= {{第0行初值表},{第1行初值表},…{最后1行初值表}}(1) 分行给二维数组赋初值Int a[3][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6}};(2) 可以把所有数据都放在一个花括号内,按照数组元素排列顺序依次赋值Int a[3][4]={1,2,3,4,5,6,7,8,9,0,1,2};014523(3)可以对于部分元素赋初值Int a[3][4]={{3},{4},{5}};也可以只对某几行赋值(4)定义的时候第一维长度可以省略第二维不能省略Int a[][4]={{0,0,3},{},{1,2}}④二维数组程序举例对二维数组的每个元素进行操作要用二重循环外层循环控制行下标的变化,内层循环控制列下标变化输出二维数组两条对角线元素值的和Sum1+=a[i][i] //主对角线Sun2+=a[i][2-i] //副对角线矩阵左下半三角元素中的值置为0For(i=0;i<n;i++)For(j=0;j<=I;j++)A[i][j]=0;对二维数组元素的操作,实际上就是先找出对应元素的行下标与列下标,然后进行操作。

第6讲数组

第6讲数组

第6讲数组数组是具有相同类型的一组数据。

数组按照数组名、数据元素的类型和维数来进行描述。

当访问数组中的数据时,可以通过下标来指明。

数组具有以下属性。

(1)数组可以是一维、多维或交错的。

(2)数值数组元素的默认值设置为0或空。

(3)数组的索引从0开始:具有n个元素的数组的索引是0~n-1。

(4)数组元素可以是任何类型,包括数组类型。

一、一维数组1.数组的声明数据类型[] 数组名如:int[] myArray;数组的大小不是其类型的一部分,声明一个数组时,不用管数组长度如何。

2.数组对象的创建声明数组并不实际创建它们。

在C#中,使用new关键字创建数组的对象。

数组名=new 数据类型[数组大小表达式];如:myArray=new int[5];此数组包含myArray[0]~myArray[4]new运算符用于创建数组并将数组元素初始化它们的默认值。

此例初始化为0。

如:String[] myStringArray=new string[6]此数组包含myStringArray[0]~myStringArray[5],数组元素初始化为空。

3.一维数组的初始化数据类型[] 数组名=new 数据类型[] {初值表};例:int[] myArray = new int[]{1,3,5,7,9};或int[] myArray;myArray = new int[]{1,3,5,7,9};或int[] myArray= {1,3,5,7,9};4.一维数组元素的访问数组名[下标](1)用foreach遍历数组:int[] myArray= {1,3,5,7,9};foreach (int i in myArray){Console.WriteLine(i);}(2)用for语句遍历数组int[] myArray= {1,3,5,7,9};for (int i = 0; i < 5; i++){Console.WriteLine(myArray[i]);}或int[] myArray= {1,3,5,7,9};for (int i = 0; i < myArray .Length ; i++){Console.WriteLine(myArray[i]);}冒泡排序:int[] arr = new int[] { 10, 8, 3, 15, 26, 11, 30 };for (int j = 1; j < arr.Length; j++){for (int i = 0; i < arr.Length - j; i++){if (arr[i] < arr[i + 1]){int temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}}for (int i = 0; i < arr.Length; i++){Console.Write(arr[i] + " ");}二、值类型和引用类型值类型在栈(Stack)上分配,而引用类型在堆(Heap)上分配。

数组的定义

数组的定义
第七章 数组
1、概述 、 2、一维数组的定义和引用 、 3、二维数组的定义和引用 、 4、字符数组 、
章节总览
1. 基本类型之外,C语言还提供了构造类型的数据, 它们有:数组类型、结构体类型、共用体类型。构 造类型数据是由基本类型数据按一定规则组成的, 因此也可以称之为“导出类型”。 2. 数组是有序数据的集合 有序数据的集合。 有序数据的集合 (a)数组中的每一个元素都属于同一个数据类型。 (b)用一个统一的数组名和下标,唯一的确定数组 中的元素。
第二轮交换: (1) 8 (2) 5 (3) 5 (4) 5 第二轮结束 5 5 4 4 2 2 2 0 0 0 0 9 9 9 9 /*8>5,交换*/ /*8>4,交换*/ /*8>2交换*/ /*8>0,交换*/
8
4 4 4
8
2 2
ห้องสมุดไป่ตู้
8
0
8
9
那么第二轮进行了 n-2=6-2=4 次比较即循环了4次 总结:第 i 轮进行了 n- i 比较即循环了n- i 次. 一共要n-1轮比较即外围循环n-1次
一维数组的程序举例( ) 一维数组的程序举例(1)
运行结果: 例 7.2 用数组来处理Fibonacci数列问题。(见教材124页) 1 1 2 3 5 程序如下: 8 13 21 34 55 89 144 233 377 610 /*行号1*/ main( ) { 987 1597 2584 4181 6765 /*行号2*/ int i; /*行号3*/ /*行号4*/ /*行号5*/ /*行号6*/ /*行号7*/ /*行号8*/ /*行号9*/ /*行号10*/ /*行号11*/ int f[20]={1,1}; for(i=2,i<=20;i++) f [ i ]=f [ i -1]+f [ i -2]; for(i=0,i<20;i++) { if( i %5= =0) printf(“\n”);/*控制换行,每行输出五个数*/ printf(“%12d”,f [ i ]); } }

第六章 数组.

第六章 数组.

sc(i, j) = InputBox("输入sc(" &i & "," & j & ") 的值") Next j Next I
3、数组在内存中存放的顺序 数组在内存中存放时,首先变化的是最后一维的 下标,然后变化倒数第二维的下标…(按行存放)。 例如,数组A(4,3)在内存中的分配如下:
A(0,0) A(1,0)
其表示形式: A(1),A(6) X(1,1), X1(1,6), X(2,6)
Y(0,0,0), Y(1,2,5)
6.2 一维数组
一、 一维数组的声明 (无隐式声明)
形式:
Dim 数组名([<下界>to]<上界>)[As <数据类型>] 或: Dim 数组名[<数据类型符>]([<下界>to]<上界>) ‘ 声明了a数组有6个元素 数组元数的数据类型
二、 访问整个数组
对于数组中的各个元素,我们可以用数组名称 (索引值)进行访问。然而,是无法只用数组名称就 对所有的元素进行计算。
例如:要把数组中的各元素值都加上1 这是错误的! Dim X(4)
X=X+1 For I=0 to 4 x(i)=x(i) +1 这是正确的!
Next
无法对数组中的所有元素同时进行运算处理。 但是,可以一次“读取”整个数组本身。
6.4 数据排序与查找
数据交换
将A和B两个变量中的数值交换
A=B B=A Temp=A
A=B
B=Temp
一、选择排序
算法思想:
1)对有n个数的序列(存放在数组a(n)中),从中选 出最小(升序)或最大(降序)的数,与第1个数交 换位置;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

按行存放
a[1]
a[2]
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]

计算机程序设计基础
第七章 数组
7.2.2
二维数组元素的引用
数组名 [ 下标 1] [ 下标2 ]
7.1.2
一维数组元素的引用
数组名 [ 下标 ] 如:x=a[3];
数组中的每个元素可以作为一个变量来访问。
引用形式:

说明
下标可以是整型常量或整型表达式。 例:a[0]=a[5]+a[7]+a[2*3]; C语言取下标从0开始,下标最大值是数组长度减1。 如:a[5]表示a数组有5个元素,分别为 a[0]、a[1]、a[2]、a[3]、a[4]。 只能逐个引用数组元素,不能一次引用整个数组 以下引用是错误的:int a[10]; scanf(“%d”,&a);
计算机程序设计基础 第七章 数组
7.2 一维数组的定义和引用
7.1.1 一维数组的定义 类型说明符 数组名[常量表达式] 例:int a[10] ;
说明:⑴ “类型说明符”:数组中各个元素的类型,数组 名定名规则和变量名相同,数组名代表数组首地址。 ⑵常量表达式:元素的个数,必须用中括号[ ]括起 ⑶常量表达式可以是常量或符号常量,不可为变量 如: # define SIZE 100 char text[SIZE*2+1] int n=10; char name[n];
计算机程序设计基础 第七章 数组


例7.1 从键盘输入10个数,输出最大值。
问题分析:输入10个数,并存放在一 个长度为10的一维数组中。令变 量max等于数组的第一个元素,然 后用max和后面的各个元素比较大 小。如果有某个元素的值大于max, 则把该元素的值赋值给max. 算法: ①输入10个数,并赋给一个长度为10 的一维数组的各个元素a[i]。 ②令变量max等于数组的第一个元素, 令变量i等于1。 ③当i的值大于9时,转向第⑥步;否 则执行第④步 ④比较max和a[i]的大小,若max小于 a[i],则令max等于a[i] ⑤i的值自增,并转向第③步
计算机程序设计基础
第七章 数组
#include"stdio.h" void main() { int a[2][3],i,j; printf("input the numbers:\n"); for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); printf("the result is:\n"); for(j=0;j<3;j++) { for(i=0;i<2;i++) printf("%d ",a[i][j]); printf("\n"); } } 计算机程序设计基础 第七章
引用形式:
说明
下标必须是整型常量或整型常量表达式。 例:a[2-1][2*2-1] ⑵ 二维数组中的每个元素可进行与变量相同的操作。 例:b[1][2]= a[2][3]/2 ⑶ 下标取值从0开始。 例:如果定义了一个数组 int a[3][4],其第 一个元素和最后一个元素的下标分别是什么? a[0][0] a[2][3]
第七章 数组

计算机程序设计基础

下标值应在已定义的数组大小的范围内。 请看:以下语句是否有错? int a[3][4]; for(i=1;i<=3;i++) for(j=1;j<=4;j++) a[i][j]=i*j;
注意: 1、C语言程序在执行过程中并不检测数据的下标是否越界 。因此在编写程序时,保证数组下标不越界是十分重要的。 2、1个数组元素,实质上就是1个变量,它具有和相同类型单 个变量一样的属性,可以对它进行赋值和参与各种运算。 3、在C语言中,数组作为1个整体,不能参加数据运算,只能 对单个的元素进行处理。
对全部数组元素赋初值时,可不指定数组长度。 例: int a[ ]={ 0,1,2,3,4 };
计算机程序设计基础 第七章 数组
7.1.4、一维数组程序举例
例7.2 用冒泡法对n个数排序(由小到大)。
冒泡法的基本思想:
让大数逐步“沉入”数组的底部,让小数象气泡似的“冒起” 到数组的顶点。 其做法是:将相邻两个数比较,将小的调到前头。
数组
补充例题:形成n×n阶方阵,使其对角线上的元素为1, 其它元素为0,然后输出该方阵。
以5 ×5阶方阵为例!
j= 0
对二维数组中的每个元 素进行操作必须使用二 重循环! for(i=0;i<n;i++) for(j=0;j<n;j++) { …… } 考察一下,值为1的元素有 (i==j) || (i+j==n-1) 何特征?
以五个数为例 数组
数组的初始状态 第一轮比较结果 第二轮比较结果 第三轮比较结果 第四轮比较结果
a[0] 82
a[1] 31
a[2] 65
a[3] 9
a[4] 47
31
31 9 9
65 82
9 65 31 31
9 82
47 65 47 47
47 82
65 65 65
82
82 82 82
计算机程序设计基础
③确定每层循环的边界
– 外层循环n-1次 i=0 to n-2 – 内层循环n-1-j次 j=0 to n-2-i
a[j] a[j+1]
输出a[0]到a[N-1]
④依次输出数组a中的各 个元素。
计算机程序设计基础 第七章 数组
输入N个数给a[0]到a[N-1] for ( i=0 ; i<N-2 ; i++) for ( j=0 ; j<N-2-i ; j++)
}
第七章 数组
计算机程序设计基础
7.2 二维数组
7.2.1 二维数组的定义
类型说明符 数组名[ 常量表达式1 ][ 常量表达式2 ] 例:float a[3][4]; 不能写成a[3,4]
可以把二维数组想象成一张二维的表。“常量表达 式1”用来表示该数组的行数,“常量表达式2”用来 表示该数组的列数。 例如:float a[3][4] 可被看成是一张3行4列的表
计算机程序设计基础
第七章 数组
例 7.3 按行优先次序输入一个2 ╳ 3的矩阵,再按列优 先次序输出。
a=
1 2 3 4 5 6 1 4 2 5 3 6
算法: 1、先将a数组存入一个2╳3的矩阵。 2、再按列优先次序输出二维数组a的各个元素:先输 出a[0][0]、a[1][0],再输出a[0][1]、a[1][1],最后输 出a[0][2]、a[1][2]。
1 0
2 0
3 0
4 1
i= 0
1
2 3 4
1
0
0
1
0 1 0
0
1 0 0
1
0
0
0
01ຫໍສະໝຸດ 1001
计算机程序设计基础
第七章 数组
#include <stdio.h> void main( ) { int a[30][30], i, j, n; scanf( "%d",&n); /* 输入方阵阶数, 2≤n ≤30 */ for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j || i+j==n-1) a[i][j]=1; /* 对角线上元素赋为1 */ else a[i][j]=0; /* 其它元素赋为0 */ printf("%3d",a[i][j]); /* 输出该元素 */ } printf("\n"); /* 输完一行换行 */ } }
7.1.3
一维数组的初始化
数组元素也可以象简单变量一样在定义的同时进行初始化。
初始化形式:
类型说明符 1. 数组名 [ 常量表达式 ]={数值表} int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 数值表中列出的各常量要用逗号隔开。
说明 说明
2.
3.
可以只给一部分元素赋值。 例: int a[10]={ 0,1,2,3,4 };
计算机程序设计基础 第七章 数组
int a[10] ; 数组a在内存中是 如何存放的呢?
… a [0] a [1] a [2] a [3] a [4] a [5] a [6] a [7] a [8] a [9] …
a
数组中各个元素顺 序相邻地存储在一 段相连的内存区域 中。
计算机程序设计基础
第七章 数组
计算机程序设计基础 第七章 数组
7.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}; ⑶ 可只对每行的前一部分元素赋初值。 例: int a[3][4]={{1},{5},{9}}; 例: int a[3][4]={{1},{5,6}}; ⑷ 如果对全部元素赋初值,则定义数组时第一维的长度可以不指 定,但第二维的长度不能省。 例: int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 例: int a[ ][4]={{0,0,3},{ },{0,10}};
相关文档
最新文档