当前位置:首页 >> 能源/化工 >>

一维数组的定义和引用


第七章 数组

1、概述 、 2、一维数组的定义和引用 、 3、二维数组的定义和引用 、 4、字符数组 、

章节总览
1. 基本类型之外,C语言还提供了构造类型的数据, 它们有:数组类型、结构体类型、共用体类型。构 造类型数据是由基本类型数据按一定规则组成的, 因此也可以称之为“导出类型”。

2. 数组

是有序数据的集合 有序数据的集合。 有序数据的集合 (a)数组中的每一个元素都属于同一个数据类型。 (b)用一个统一的数组名和下标,唯一的确定数组 中的元素。

一维数组的定义(1) 一维数组的定义
一、定义方式: 定义方式: 类型说明符 数组名 [ 常量表达式 ] ; 二、说明: 说明: 定名规则和变量名相同, 标识符定名 (1)数组名定名规则和变量名相同,遵循标识符定名 )数组名定名规则和变量名相同 遵循标识符 规则。 规则。 例如: 例如 int a [ 10 ]; 表示数组名为a 此数组有 个元素,每个元素为整型数据 此数组有10个元素 每个元素为整型数据. 表示数组名为 ,此数组有 个元素 每个元素为整型数据 方括弧括起来的常量表达式, (2)数组名后是用方括弧括起来的常量表达式,不能用圆括 )数组名后是用方括弧括起来的常量表达式 弧。 下面的用法是错误的 下面的用法是错误的: 错误 int a(10);

一维数组的定义(2) 一维数组的定义
表示元素的个数, 数组长度。 (3)常量表达式表示元素的个数,即数组长度。 )常量表达式表示元素的个数 例如: 表示a数组中 个元素, 例如 在a[10]中,10表示 数组中有10个元素 中 表示 数组中有 个元素 下标从0开始 开始, 个元素是:a[0], a[1], a[2], a[3], a[4], 下标从 开始 这10个元素是 个元素是 a[5], a[6], a[7], a[8], a[9] 注意:不能使用数组元素 注意 不能使用数组元素a[10]; 不能使用数组元素 常量和 (4)常量表达式可以包括常量和符号常量,不能包含变 )常量表达式可以包括常量 符号常量, 不允许对数组的大小作动态定义 量。C不允许对数组的大小作动态定义,即数组的大小不 不允许对数组的大小作动态定义, 依赖于程序运行过程中变量的值。 依赖于程序运行过程中变量的值。 例如:下面这样定义数组是不行的 下面这样定义数组是不行的: 例如 下面这样定义数组是不行的 更准确的说法是 整型常量表达式 整型常量 int n; scanf(“%d”,&n); int a[n];

数组在内存的存放形式 int a[10];
合法标识符

a

1 2 3

4 数组名表示内存首地址, 5 是地址常量 6

a[0] a[1] a[2] a[3] a[4] a[5]

表示元素个数 下标从0开始

编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型)

例 int i=15; int data[i];

(×不能用变量定义数组维数)

一维数组元素的引用(1) 一维数组元素的引用
一、规则: 规则: 先定义, (1)数组必须先定义,后使用。 )数组必须先定义 后使用。 (2)数组元素的使用形式为: )数组元素的使用形式为: 数组名 [ 下标 ] 下标可以是整型常量或整型表达式, 下标可以是整型常量或整型表达式 整型常量或整型表达式 例如: 例如 a[0]=a[5]+a[7]-a[2*3]; 注意: 注意 C语言规定只能逐个引用数组元素 语言规定只能逐个引用数组元素, 语言规定只能逐个引用数组元素 不能一次引用整个数组. 不能一次引用整个数组

一维数组元素的引用举例
例7.1 数组元素的引用 main() { int i ,a[10]; for( i =0; i<=9; i ++) a[ i ]= i ; for(i=9;i>=0;i--) for(i=0;i<=9;i++) printf(“%d”,a[i]); printf(“%d,”,a[i]) ; } 程序使a[0]到a[9]的值为0~9, 程序使a[0]到a[9]的值为0~9, a[0] 的值为 然后按顺序输出

如果按逆序输出

运行结果: 9,8,7,6,5,4,3,2,1,0, 0, 1, 2, 3, 4, 5, 6,7,8,9,

一维数组的初始化(1) 一维数组的初始化
1、在定义数组时对数组元素赋以初值。 、在定义数组时对数组元素赋以初值。 例如: 例如:int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 初始化之后:a[0]=0,a[1]=1, a[8]=8, 初始化之后:a[0]=0,a[1]=1,……a[8]=8,a[9]=9。 :a[0]=0,a[1]=1, a[8]=8 a[9]=9。 2、可以只给一部分元素赋值. 、可以只给一部分元素赋值 例如:int a[10]={0,1,2,3,4}; 例如: 只给前五个元素赋值,后五个元素为0。 只给前五个元素赋值,后五个元素为 。 初始化之后:a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4, 初始化之后:a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4, a[5]=0,……,a[8]=0,a[9]=0。 a[5]=0, ,a[8]=0,a[9]=0。 3、如果想使一个数组中全部元素值为0, 、如果想使一个数组中全部元素值为 , 可以写成 int a[10]={0,0,0,0,0,0,0,0,0,0}; 不能写成 int a[10]={0*10};

一维数组的初始化(2) 一维数组的初始化
4、对全部数组元素赋初值时,可以不指定数组长度。 、对全部数组元素赋初值时,可以不指定数组长度。 例如: 例如:int a[]={1,2,3,4,5}; 上面的写法中,{ }中只有五个数,系统会据此自动定 上面的写法中, 中只有五个数, 中只有五个数 义数组的长度为5。 义数组的长度为 。 初始化之后:a[0]=1,a[1]=2,a[2]=3 a[4]=4,a[5]=5。 :a[0]=1,a[1]=2,a[2]=3, 初始化之后:a[0]=1,a[1]=2,a[2]=3,a[4]=4,a[5]=5。 如果被定义的数组长度与提供初值的个数不同, 如果被定义的数组长度与提供初值的个数不同, 则数组长度不能省略。 则数组长度不能省略。 例如:想定义数组长度为10,就不能省略数组长度的定义。 例如:想定义数组长度为 ,就不能省略数组长度的定义。 int a[10]={ 1,2,3,4,5}; 而必须写成 , , , , 只初始化前面5个元素 个元素, 个元素为0。 只初始化前面 个元素,后5个元素为 。 个元素为 不能写成 int a[ ]={1,2,3,4,5}; , , , ,

注意:对部分元素赋初值时,长度不能省。 注意:对部分元素赋初值时,长度不能省。

一维数组的程序举例( ) 一维数组的程序举例(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 ]); } }

例(2) 输入10个数并从中找出最大者. 输入10个数并从中找出最大者. 10个数并从中找出最大者 main( ) { int a[10] ,i , j , max ; printf( “ input 10 numbers: \n ” ) ; for( i = 0 ; i < 10 ; i + + ) scanf( “ %d ” , & a [ i ] ) ; printf( “ \n ” ) ; max = a [ 0 ] ; i = 1 ; for( ; i < 10 ; ) { if ( max < a [ i ] ) max = a [ i ] ; i++; } printf(“\nmax=%d”,max); }

一维数组的程序举例( ) 一维数组的程序举例(3.1)
例 7.3 用起泡法对n个数排序(由小到大)。(见教材124页) 起泡法的思路是:将相邻两个数比较,将小的调到前头。 具体参见课本: 例如:对一个这样的序列排序:9,8,5,4,2,0(一共有6个数) (1) (2) (3) (4) (5) 第一轮结束

9
8 8 8 8 8

8

9
5 5 5 5

5 5

9
4 4 4

4 4 4

9
2 2

2 2 2 2

9
0

0 0 0 0 0

/*9>8,交换*/ /*9>5,交换*/ /*9>4,交换*/ /*9>2,交换*/ /*9>0,交换*/

9

那么第一轮进行了 n-1=6-1=5 次比较即循环了5次

一维数组的程序举例( ) 一维数组的程序举例(3.2)
第二轮交换: (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次

一维数组的程序举例( ) 一维数组的程序举例(3.3)
算法的N-S结构流程图如下: 源程序如下: main(){int a[10], i,j,t; for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(j=0;j<10;j++) for(i=0;i<=10-j-1;j++) if(a[i]>a[i+1]) {t=a[i]; a[i]=a[i+1]; a[i+1]=t;} for(i=0;i<10;i++) printf(“%d”,a[i]); }

输入n个数给a[0]到a[n-1] for j=1 to n-1 for i =0 to n-j-1
a[ i]>a[ i+1]

真 t=a[i];
a[ i]=a[i+1]; a[i+1]=t;



输出a[0]到a[n]

求2-100以内的素数 以内的素数 源程序: 源程序 题目分析:首先定义一个 型数组b[100],将b当作一个 题目分析:首先定义一个int型数组 型数组 , 当作一个 筛子,并规定当b[i]的值为非 时,表示整数 在筛中。2为素 的值为非0时 表示整数i在筛中 在筛中。 为素 筛子,并规定当 的值为非 main() 输出, 的倍数筛去, 数{int b[100],i,j; ,将2输出,然后将筛中 的倍数筛去,即将下标为 的倍 输出 然后将筛中2的倍数筛去 即将下标为2的倍 数的元素清零。此时,筛中下一个非零元素为b[3],说明 数的元素清零。此时,筛中下一个非零元素为 ,说明3 b[0]=b[1]=0; 为素数将其输出,然后再将下标为3的倍数的元素清零 筛去3 的倍数的元素清零(筛去 为素数将其输出,然后再将下标为 的倍数的元素清零 筛去 for(i=2;i<100;i++) 的倍数)。这样,在下一个元素为b[5],将5输出并筛去 的 输出并筛去5的 的倍数 。这样,在下一个元素为 , 输出并筛去 b[i]=1; ,直到筛中无非零元素为止。 倍数, 倍数,……,直到筛中无非零元素为止。 for(i=2;i<100;i++) if(b[i]!=0) {printf(“%4d”,i); for(j=i;j<100;j+=i) b[j]=0;}}


相关文章:
C语言一维数组的定义和引用
C语言一维数组的定义和引用_计算机软件及应用_IT/计算机_专业资料。C语言一维数组的定义和引用 C 语言一维数组的定义和引用在程序设计中,为了处理方便,把具有相同...
-一维数组的定义与引用教案
-一维数组的定义与引用教案_教学计划_教学研究_教育专区。纯粹自创课题序号 1 10 单招、10 计 算机 授课日期 第 周 月 日(星期 ) 授课班级 授课章节 名称 使...
一维数组的初始化和引用
数组的初始化和引用 #include<stdio.h> //一维数组的初始化和引用 void main...一维数组引用分析 7页 免费 C语言一维数组的定义和引... 5页 免费 C++ 一维...
一维数组的定义
。 例如: int a,b,c,d,k1[10],k2[20]; 课堂小结:数组的概念及一维数组的定义 ……} 作业批改与讲评教后记 预习 题目 及 指导 要求 怎样引用一维数组? ...
二维数组的定义和引用
二维数组的定义和引用_工学_高等教育_教育专区。C语言考试复习 二维数组的定义和引用 1.1 二维数组的定义前面介绍的数组只有一个下标,称为一维数组,其数组元素 ...
C语言数组试题
重点难点:本章的重点是一维数组、二维数组和字符数组的定义、初始化、元素引用, 字符串处理函数的使用。 本章的难点是字符串与字符数组的区别, 指针数组和数组元素...
实验05 一维的数组的定义及使用
程序参见教材 P136 三、仪器、设备、材料 仪器、设备、 微机四、实验准备 1.理论知识预习及要求 ①数组定义及数组元素的书写规范; ②一维数组的定义及元素的引用...
数组的定义格式
数组的定义格式 (1) (2) 引用 数组名[下标名] 16. 结构体类型说明的一般...一维数组 类型名 数组名[常量表达式] 二维数组 类型名 数组名[常量表达式 1] ...
C语言二维数组的定义和引用
C 语言二维数组的定义和引用 7.1.1 二维数组的定义 前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问 题中有很多量是二维的或...
一维数组试题
长度为 n 的数组中,最后一个元素下标 4、一维数组是最简单的数组,其定义形式...( ) 9、在 C 语言中引用数组元素时,其数组下标的数据类型允许是( ) B....
更多相关标签:
一维数组的引用 | matlab 一维数组引用 | matlab定义一维数组 | 一维数组的定义 | 一维数组定义 | java定义一维数组 | c语言宏定义一维数组 | matlab定义一维空数组 |