数组的基本概念一维数组二维数组第

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

§6–2 一维数组的定义和使用
一 、一维数组的定义
格式:
类型 标识符 [长度 ]
变量名, 即数组名
所有元素为 同一类型
数组中所含 元素的个数 int a[10]; [ ] 由10个 整数组成的数组, 共同拥有数组名
说明: 用方括号 数组长度必须是整型量 可以用常量表达式 不能不定义长度, 也不能做动态定义
§6-4 字符数组的定义和引用
五、字符数组的输入输出
⒈输入输出有两种方式: ①逐个字符输入输出。用“%c” ②将整个字符串一次输入输出。用“%s” ⒉输出应注意的问题 static char c[]={“china”}; printf(“%s”,c); ①输出字符不包括结束符‘\0’ ②用“%s”格式输出字符时,printf函数中的输出项是字符 数组名,而不是数组元素名。 ③如果数组长度大于字符串实际长度,也只输出到‘\0’结 束 ④如果一个字符数组中包含一个以上‘\0’,则遇到第一个 ‘\0’时输出就结束。 ⒊输入时应注意: 在使用scanf函数时,若输入字符串,用“%s”格式,则后面
§6 –2 一维数组的定义和使用
下标表示了元素在数组中的位置 下标可以用表达式 a[2*3]相当于a[6]
说明
(数组中第?个元素)
三、 一维数组的初始化 变量在使用之前使其有值
数组初始化的方法
可以对静态或外部存贮类 型的数组进行初始化。
int a[4]
如果没 有初值?
§6 –2 一维数组的定义和使用
运行结果:1,2,3,4,5,6,7,8,9,10,
§6 –2 一维数组的定义和使用
有一个数组,内有10个数,求出最小的数和它的下 标,然后将它与数组中的第一个数对换。
int a[10] 26 a[0]
1
13
3
68
20
1
7
53
12
65
思 路
a[ i ]Biblioteka Baidu
13 3 68 20 26 7 53 12
a[9]
§6-4 字符数组的定义和引用
三、字符数组的引用 原则: 逐一引用
标识符[N1][N2]
可以引用字符数组中的一个元素,得到一个字符。
方法: 数组名[下标1][下标2] a[0][0]…..a[3][1] 共8个数据 下标1从0到长度-1 下标2从0到长度-1
例1.输出一个字符串
main( ) { int i; static char c[11]={'I',' ','a','m',' ','a',' ','b','o','y’ }; for(i=0;i<10;i++) printf("%c",c[i]); printf("\n"); }
(对本例,决不可能有元素a[4][2])
三、二维数组的初始化 方法: 1 对全部元素赋初值,分行,各用一个{ }
int a[2][3]={{1,2,3},{4,5,6}};
§6-3 二维数组的定义和引用
2 整体赋值,系统自动分行
1,2,3 int a[2][3]={1,2,3,4,5,6} ;
3 对部分元素赋初值,注意区别:
在数组说明的同时进行初始化的一般形式为:
数据类型 数组名 [常量表达式]={ 初始化数据 };
1.定义数组时,对全部元素赋值 int a[5]={1,2,3,4,5};
2 对部分元素赋值
用{ } 包括所有初值, 用逗号分隔各数值
按顺序给前2个元素赋值
float x[5] = { 1.9, 2.0 };
int a[n],n=10;
int a[2*3]

§6 –2 一维数组的定义和使用
二 、一维数组元素的引用 原则 数组必须先定义,再使用 数组中的元素必须逐一引用 方法:通过数组名及其元素的下标逐一引用
定义时 类型 数组名[N] 引用时 数组名[下标] int a[10]
下标范围从 0 到 N-1 a[0],a[1],…a[9]为数组a中的所有元素
§6-3 二维数组的定义和引用
例题:不用输入,自动生成下列矩阵
1 2 3 4 5 main ( ) 1 1 6 7 8 { int i,j,a[5][5]; 1 1 1 9 10 k=2; 1 1 1 1 11 for(i=0;i<5;i++) /* 按行循环 */ 1 1 1 1 1 for(j=0;j<5;j++) /* 按列循环 */ if(j<=i) a[i][j]=1; /*下三角 */ else a[i][j]=k++; /*上三角 */ 元素值为 1 for(i=0;i<5;i++) { for(j=0;j<5;j++) printf(“%4d”,a[i][j]); printf(“\n”); /* 输出一行后换行 */ } }
类型,用统一的名称标 识这一组数,用下标唯 一地确定这组数中的 每一个值。
§6–2 一维数组的定义和使用
数组是有限个相同的数据类 型的数据分量的有序集合
数组的三要素
相同的数据类型(定义数组时规定) 有限的成员个数 (定义数组时规定) 彼此有序的排列 (引用数组元素时的下标)
int a[5]; a[0]=1;a[1]=2;…..
(1)int a[2][3]={{1},{2,3}}; (2) int a[2][3]={1,2,3}; 当为全部元素赋值时, (3) int a[2][3]={{0},{1,2,3}}; 一维长度可省略 int a[ ][3]={1,2,3,4,5,6}; 类似可以推广到三维或多维数组
§6-3 二维数组的定义和引用
按 行 递 增
§6-4 字符数组的定义和引用
字符数组 用来存放字符数据的数组是字符数组。 字符数组中的一个元素存放一个字符。
一、字符数组的定义
二、字符数组的初始化
定义方式与前面介绍的类似。 与前面介绍的类似,只是数组 例:char c[10], d[2][3]; 的每一个元素对应一个字符。
由于字符型与整型是互相通用 static char c[10]={‘I’,’a’, ‘m’, 的,因此也可定义 int c[10]; ‘’, ‘n’,’a ’, ‘p’, ‘p’, ‘y’}; static char c[2][3]={ {‘ ’, ‘*’}, {‘*’, ‘ ’}, {‘ ’, ‘*’} };
教学 科研 文体 其他

88年
4 3 5 3 5
5 5 4 5 3
4 4 3 5 4
3 3 3 3 3
张 李 王
用数组定义
int a[ ][ ][ ]? a[1][1][1]=?
90年
张 李
3
5
3
5
§6-3 二维数组的定义和引用
以下二维数组说明方式中正确的是: A) int a[3][ ]; B) float a(3,4); C) double a[1][4]; D) float a(3)(4);
13 3 1 26 &min
min=1 k=5
a[i]=a[0] a[0]=min
main( ) { int i,a[10],min,k; for(i=0;i<10;i++) scanf ( “%d”,&a[i] ); min=a[0]; for(i=1;i<10;i++) if(min>a[i] ) { min=a[i] ; k=i ; } a[i]=a[0]; a[0]=min; for(i=0;i<10;i++) printf(“4d”,a[i]); printf(“%d,%d”,k,min); }
循环输入10个数
循环找出最小的
交换数据 输出数组
输出最小值和原始下标
§6-3 二维数组的定义和引用
当一个一维数组中的每个元素本身又是一 个一维数组时,该数组为一个二维数组
一、二维数组的定义
最后一 个元素
1 格式:类型 标识符[长度1][长度2] int a[3][4] 2 二维数组元素需要两个下标表示 例:int a[3][4]表示数组a中有3行4列共12个数据 3 二维数组在存储空间中是按行优先存储
a[0][0] a[0][1] a[0][2] a[0][3] ….. a[2][3]
第一行
§6-3 二维数组的定义和引用
二 、二维数组的引用
原则: 逐一引用
标识符[N1][N2]
方法: 数组名[下标1][下标2] 下标1从0到长度-1 a[0][0]…..a[3][1] 共8个数据 下标2从0到长度-1
x[0]=1.9;x[1]=2.0;其余元素为
若要对数组的全部元素初始化,则可省略数组说明中的大小。 int a[ ] = {1, 2, 3, 4};
§6 –2 一维数组的定义和使用
* 初值的个数不能超过定义的数组长度
要求 C规定,只有静态数组(static)才能初始化,(第7章内
容), Turbo C中,允许为数组(非静态)初始化 区别: static int a[5]={1,2,3};后两个元素值为0 int a[5]={1,2,3};后两个元素为随机数 int i, a[10]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<10;i++) printf(“%d,”,a[i]); 通过数组名和下 标引用数组中的 每一个数据
§6-4 字符数组的定义和引用
main()
六、字符串处理函数
{char str[13];
gets(str); ⒈puts(字符数组) 将以‘\0’结束的字符序列输出到终端,使用puts函数输出的字符 puts(str); 串中可以包含转义字符。 } ⒉gets(字符数组) 从终端输入一个字符串到字符数组,并且得到一个函数值,该函 Computer & C <回车> 数值是字符数组的起始地址。 Computer & C ⒊strcat(字符数组1,字符数组2) 连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结 果放到字符数组1中,函数调用后得到一个函数值----字符数组1的地址。 说明: ①字符数组1必须足够大,以便容纳连接后的新字符串 ②连接时,自动取消数组1后的‘\0’,只在新串最后保留一个
引用 若定义int a[3][4],则对a的正确引用是: A) a [ 2 ][ 4 ] B) a [ 1,3] C) a [1+1][ 0 ] D) a (2)(1)
假设二维数组a有m列,则计算任一元素a[i][j] i*m+j+1 在数中的位置的公式为: i*m+j+1 即a[0][0]位于数组的第一个位置上
i=1 13<26 min=a[1] k=1 i=2 3<13 min=a[2] k=2 i=3 68>3 min和k的值不变 i=4 20>3 min和k的值不变 min=a[5],k=5 i=5 1<3 i=6 7>1 min和k的值不变 i=7 53>1 min和k的值不变 i=8 12>1 min和k的值不变 i=9 65>1 min和k的值不变
第一节 数组的基本概念 第二节 一维数组 第三节 二维数组 第四节 字符数组 第五节 应用实例
§6 –1 数组的基本概念
变量先定义,再使用,如果变量个数少,且彼此独立 时,可以 int a,b,c ; a = 5; b=10;c=23; printf(“%d,%d,%d”,a,b,c); 当变量个数比较多,并且有内在的关系时,例如 :全班有 30个人,每人一个成绩 一组有序数据的集合, 定义int a1,a2,……a30 ? 各个元素属于同一个 C中定义了在基本数据类型基础 上的构造数据类型(数组,结 构体,共用体等)
* ** * * * * * *
§6-4 字符数组的定义和引用
四、字符串和字符串结束标志
在C语言中,字符串是作为字符数组来处理的。同时,为了测 定字符串的实际长度,在C语言规定了一个“字符串结束标志”( 字符‘\0’ ),如一个字符串第10个字符为‘\0’,则此字符串的 有效字符为9个,即在遇到第一个字符‘\0’时,表示字符串结束 ,由它前面的字符组成字符串。 系统对字符串常量也自动加一个‘\0 ’作为结束符,当然在定 义字符数组时应估计实际字符串长度。 对字符数组初始化,可以用字符串常量来使字符数组初始化。 如:static char c[ ]={“I am happy”}; 或 static char c[ ]=“I am happy”; 此时系统自动在串尾加‘\ 0’。
§6-4 字符数组的定义和引用
例2.输出一个图形 main( ) { char a[5][5],i,j; for(i=0;i<5;i++) for(j=0;j<5;j++) if(j= =0||i= =j) a[i][j]='*'; else a[i][j]=' '; for(i=0;i<5;i++) {for(j=0;j<5;j++) printf("%c",a[i][j]); printf("\n"); } }
65
定义两个临时变量 min和 k 假定第一个元素就是最小的,min=a[0],k=0
用min与数组中的每一个元素a[i]比较, 若a[i]比min小, 将a[i]赋给min, 将下标I赋给k, 否则,继续比较.
§6 –2 一维数组的定义和使用
1 26 13 3
68
20
26 1 7
53
12
65
min=a[0]
相关文档
最新文档