C语言 一维数组的定义和引用 数组
C语言第六章_数组_2
if (a[i]>a[i+1])
{temp=a[i];a[i]=a[i+1];a[i+1]=temp;14}
#include <stdio.h> main(){ /*对10个整数排序*/
int a[10]={9, 8, 5, 4, 2, 0, 6, 1, 3, 7}, i, k; for (k=1;k<10;k++)
f0=1 (n=0m) ain(){
f1=1
(n=1) int i; long f [20]={1,1};
0 f1n=fn-1f+[0f]n-2 (nfo2r) (i=2;i<20;i++)
1
1
f[1]
2
2
f[2]
f[i]=f[i-2]+f[i-1];
3
3
f[3]
for(i=0;i<20;i++)
4
数组是具有一定顺序的若干同数据类型变 量的集合体。数组要有名称,要有规模。
一.一维数组定义
类型说明符 数组名[常量];
例如:int a[6]; a = = &a[0]
a
内存映象:编译时分配一片连续的内 存空间,数组名为该空间的首地址— —常量地址。
0 a[0]
1 a[1]
2 a[2]
3 a[3]
1
4 a[4]
4
一行一行地存储所有的数组 5
a[0][1] a[0][2] a[0][3] a[1][0] a[1][1]
元素,数组名为该空间的首 6 a[1][2]
地址——地址常量。
7 a[1][3]
8
C_C++语言程序设计基础-7-1一维数组
a[0]=5,a[1]=4,a[2]=0, a[3]=0, a[4]=0
(3)对全部元素赋初值时,可以不指定数组长度,系统自 动根据初值个数来决定数组长度。例如:
int a[ ]={0,1,2,3,4};等价 int a[5]={0,1,2,3,4};
今天教大家一个新的数据类型: 一个变量名称可以代表成百上千个 同种类型的数据,即数组。
源程序:从键盘输入3个整数,顺序(反序)输出。
#include<stdio.h> main() { int x1,x2,x3;
scanf("%d%d%d",&x1,&x2,&x3); pprriinnttff((""%%dd %%dd %%dd \\nn"",,xx13,,xx22,,xx31));; }
但不能省略[] int a={0,1,2,3,4}; 是错误的 (4)对数组进行初始化时,不允许初始化的元素个数超过 数组的长度,如: int a[5]={0,1,2,3,4,5}; 是错误的
数组课堂练习2:
14.若有定义语句:int m[5]={5,4,3,2,1},i=4;,则下面对m数组元素
long num[N]; short w[2*N]; 5. inintt ppeerrssoonn((1100));; 错误 6. int n=10, a[n]; 错误 7. float a[10.5]; 错误
7.1.2 一维数组元素的引用
数组必须先定义再引用
int a[5];
数组元素引用形式为: 数组名 [下标];
3/50
掌握一维和二维数组的定义和数组元素的引用方法(精)
static int arr[3][2]={{1, 2},{3}}; /*采用第①种赋初值方式*/ static int arr[3][2]={ 1, 2, 3}; /*采用第②种赋初值方式*/ 上面二种对数组arr部分元素赋初值的结果是相同的, 都是对数组arr的前面3个元素赋初值,后面叁个元素未 赋初值,系统自动化赋以0值。
12
§7.2 二维数组的定义和引用
在计算机中多维数组其实只是一个逻辑上的概念,在内 存中,多维数组只按元素的排列顺序存放,形成一个序 列,就好似一维数组一样。 §7.2.1 二维数组的概念
二维数组的应用很广,例如平面上的一组点的集合就可 用二维数组表示,平面上的点可用二维数组来表示:
08:47
13
⑦元素个数代表着数组的长度。
08:47 5
§7.1.2 一维数组使用
数组一经定义后,就可在程序中使用,使用格式如下: 数组名[下标] 例如 : var[3]=28; var[4]=var[2]; str[3]= ‘d’; str[2]=str[4]; printf(“%d”, a[0]); 说明: ①下标可以是整数或整型表 达式 。如:var[i+j]=2; ②C编译不检查下标是否 “出界”。
下标的值不应超过数组的长度,如var数组的长度为5, 则下标的取值在0~4的范围内。
08:47 6
【例7-1】 一维数组在程序中的使用
/*exam7_1.c 一维数组在程序中的使用*/ #include <stdio.h> main() { int i,a[5]={1,2,3,4,5}; /*初始化数组*/ printf("输出数组元素的正确值: \n"); for(i=0;i<5;i++) printf("%d\t",a[i]); printf("\n输出超出下标的元素的值:\n"); for(i=5;i<10;i++) /*使用超出下标的元素*/ printf("%d\t",a[i]); printf("\n改变数组元素的值:\n");
第八章 数组
例: 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};
C语言一维数组
6
例题巩固
在C 语言中,引用数组元素时,其数组下标的 数据类型允许是 。 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式
C语言中,数组名代表 A.数组全部元素的值 B.数组首地址 C.数组第一个元素的值 D.数组元素的个数
合法的数组定义是 A.int a[ ]=”string”; B.int a[5]={0,1,2,3,4,5}; C.char a=”string”; D.char a[ ]={0,1,2,3,4,5};
以下程序的输出结果是________。 main( ) { int i,p=0,a[10]={1,5,9,0,-3,8,7,0,1,2}; for(i=1;i<10;i++) if(a[i]<a[p]) p=i; printf("%d,%d\n",a[p],p); } A) -3,4 B) 0,1 C) 9,2 D) 2,9
35
35
int a[5]
a[0] a[1] 第一轮 21 13 13 13 21 21
a[2] 90 90 90
a[3] a[4] 32 32 32 -1 -1 -1
13 13
21 21
32 32
90 -1
-1 90
第一轮的结果: 将最大的数移到了最后一个位置(n-1)。
int a[5]
a[0] a[1]
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] 0 1 2 3 4 5 6 7 8 a[9] 9
数组a
max = a[0];
32
32
定义
main()
{ int i, max, x[10];
C语言学习入门笔记之数组
数组笔记在程序设计中,把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
1.一维数组的定义和引用1.一维数组的定义方式在C语言中使用数组必须先进行定义。
一维数组的定义方式为:类型说明符数组名[常量表达式];其中:类型说明符是任一种基本数据类型或构造数据类型。
数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例如:int a[10]; 说明整型数组a,有10 个元素。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字符数组ch有20 个元素。
对于数组类型说明应注意以下几点:1)数组的类型实际上是指数组元素的取值类型。
对于同一个数组,其所有元素的数据类型都是相同的。
2)数组名的书写规则应遵循标识符命名规则。
3)数组名不能与其它变量名相同。
例如:main(){int a; float a[10];……}是错误的。
4)方括号中常量表达式表示数组元素的个数,如a[5]表示数组a 有5 个元素。
但是其下标从0 开始计算。
因此5 个元素分别为a[0],a[1],a[2],a[3],a[4]。
5)常量表达式中可以包括常量和符号常量,不能用变量来表示元素的个数,也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
例如:#define FD 5 main(){int a[3+2],b[7+FD];……}是合法的。
但是下述说明方式是错误的。
main(){int n=5; int a[n];……}6)允许在同一个类型说明中,说明多个数组和多个变量。
c语言程序设计第7章(谭浩强)PPT版本
如 int a[5]; static int a[5]={6,2,3}; int a[]={1,2,3,4,5,6}; 等价于: a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0; 等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; 如 编译系统根据初值个数确定数组维数 int a[3]={6,2,3,5,1}; ()
例
38 49 49 38 65 76 97 13 97 76 97 27 13 30 97 27 97 30 初 始 关 键 字 n=8
38 49 65 13 76 27 76 13 30 76 27 76 30 97 第 一 趟
38 49 13 65 27 65 13 30 65 27 65 30
程序举例
#include <stdio.h> #define SIZE 10 例 读10个整数存入数组,找出其中最大值和最小值 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) 步骤: { printf("%d:",i+1); 1. 输入:for循环输入10个整数 scanf("%d",&x[i]); 2. 处理: } (a) 先令max=min=x[0] max=min=x[0]; (b) 依次用x[i]和max,min比较(循环) for(i=1;i<SIZE;i++) 若max<x[i],令max=x[i]{ if(max<x[i]) max=x[i]; 若min>x[i],令min=x[i] if(min>x[i]) min=x[i]; 3. 输出:max和min } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); }
1213一维数组的定义,赋值,遍历
printf(“%d\n”,a[1]);
printf(“%d\n”,a[0]);
13
}
从键盘输入5个整数,保存到数组a中;再逆序 输出。
main()
{
int a[5];
scanf(“%d”,&a[0]);
scanf(“%d”,&a[1]);
scanf(“%d”,&a[2]);
scanf(“%d”,&a[3]);
20
课堂练习
– 2. 修改上例:
• 要求输出数组元素中所有5的倍数,怎么做?
21
课堂练习
– 3. 修改上例,要求实现求数组元素中所有下
标为偶数的元素的和怎么做?
22
小结
– 数组的定义、初始化、引用、输入、输出概念、 操作必须掌握
– 数组下标从0开始 – 数组名代表数组首地址,是一个常量 – C语言不允许动态定义数组,即定义数组时数
一维数组元素的查找
例:定义一个一维数组num, 再从键盘 上输入一个整数x,查找数组中是否有元 素的值与x相等。如果有,输出相应的下 标;如果没有,输出“该值在数组中不存 在” 。
26
一维数组元素的查找
#include <stdio.h> main() {
int num[10], x, i, j; for(i=0; i<10; i++)
outputScore(score,10);
//函数调用
}
void outputScore(int a[ ],int length) {
int i=0;
//函数定义
printf("学生成绩如下:\n"); for(i=0;i<length;i++)
11《C语言程序设计》教案第四章数组(1)—一维数组
min_p=j;} printf(“the min is%d,position %d”,min,min_p);
} (5)数组在内存中的存放 例如 int data[3];则在内存中的状态如下:
1000 1002
1004
data[0] data[1] data[2]
讨论、思考题、作业: 实验指导书习题
f[0]=1;f[1]=1;f[2]=f[0]+f[1];f[3]=f[2]+f[1];依次类推找出 公式为: f[i]=f[i-1]+f[i-2]; 循环语句为:for(i=2;i<20;i++) 程序代码: main()
{ int i;
static int f[20]={1,1};
/*定义 20 个元素的数组
参考资料(含参考书、文献等):
叶斌 陈世强. C 语言程序设计. 北京:科学出版社 授课类型:理论课 讨论课□ 实验课□ 练习课□ 其他□ 教学方式:传统授课 双语□ 讨论□ 示教□ 指导□ 其他□ 教学资源:多媒体 模型□ 实物□ 挂图□ 音像□ 其他□
定义了一个二维数组 b,该数组由 9 个元素构成,其中每一个数组元素都属于浮点(实
数)数据类型。
数组
b
的各 个数据元 素依次
是:b[0][0],b[0][1],b[0][2],b[1][0],b[1][1],b[1][2],b[2][0],b[2][1],b[2][2](注意:下标从 0-2)。
每个数组元素也都可以作为单个变量使用。
例如:int a[10]={0,0,0,0,0,0,0,0,0,0}; 或 int a[10];系统会对所有数
组元素自动赋 0 值。
4)在对全部数组元素赋初值时,可以不指定数组长度。
C语言数组的定义及引用
引导语:数组是在程序设计中,为了处理⽅便,把具有相同类型的若⼲变量按有序的形式组织起来的⼀种形式。
以下是百分⽹店铺分享给⼤家的数组,希望⼤家喜欢! 1.1 ⼀维数组的定义、初始化和引⽤ 1.⼀维数组的定义⽅式为: 类型说明符数组名[常量表达式] (1)数组名的命名⽅法与变量名相同,遵循标识符命名规则; (2)数组是⽤⽅括号括起来的常量表达式,不能⽤圆括号; (3)常量表达式表⽰数组元素的个数,即数组的长度,数组的下标从0开始,下标的最⼤值为:常量表达式-1; (4)常量表达式中可以包括常量和符号常量,不能包括变量。
可以⽤赋值语句或输⼊语句使数组中的元素得到值,但要占⽤运⾏时间。
可以使数组在运⾏之前初始化,即在编译阶段使之得到初值。
2.对数组初始化可以⽤以下⽅法实现: (1)在定义数组时对数组元素赋以初值。
如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上⾯的定义和初始化后,a[0]=0,a[1]=1,…,a[9]=9。
(2)初始化时可以只对⼀部分元素赋初值。
例如: static int a[10]={0,1,2,3,4}; 定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。
(3)如果想使⼀个数组的元素值全部为0,可以⽤下⾯的⽅法: static int a[10]={0,0,0,0,0,0,0,0,0,0}; 不能⽤: static int a[10]={0*10}; 如果对static型数组不赋初值,系统会对定义的所有数组元素⾃动赋以0值。
(4)在对全部数组元素赋初值时,可以不指定数组长度。
3.⼀维数组的引⽤⽅法是: C语⾔规定不能⼀次引⽤整个数组,引⽤时只能逐个元素引⽤,数组元素的表⽰形式为: 数组名[下标] 下标可以是整型常量或整型表达式。
如: a[0]=a[5]+a[7]-a[2*3]; 1.2 ⼆维数组的定义、初始化和引⽤ 1.⼆维数组定义的⼀般形式为 类型说明符数组名[常量表达式][常量表达式] C语⾔采⽤上述定义⽅法,我们可以把⼆维数组看做是⼀种特殊的⼀维数组:它的元素⼜是⼀维数组。
C与数据结构 第9次课--一维数组和二维数组的定义和使用
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组元素的引用
引用形式 数组名[整型表达式] 下标的取值 0≤ 整型表达式 ≤元素个数-1 例如 int a[10]; 表示有10个整型元素,分别为: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
第4章
二维数组的初始化
二维数组定义时赋值,可以按行分段赋值,也可以 按行连续赋值。 例如 按行分段赋值: int a[3][3]={ {80,75,92}, {61,65,71}, {59,63,70} }; 按行连续赋值: int a[3][3]={ 80,75,92,61,65,71,59,63,70 };
在全部元素赋值的情况下,这两种 赋初值的结果是完全相同的。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组的初始化
例如 (1)int a[3][3]={ {80,75}, {61}, {59,63} }; (2)int a[3][3]={ 80,75,61,59,63 }; (3)int a[3][3]; 问题:这三行的结果如何? (1)
第4章
一维数组的定义
定义形式 类型标识符 数组名[整型常量表达式]; 本质 声明数组元素的类型和个数之后,编译器才能为 该数组分配合适的内存。 举例 #define M 20 int a[10]; 定义a是有10个整型元素的数组 float b[5]; 定义b是有5个浮点型元素的数组 char ch[M+6];定义ch是有M+6即26个元素的字符 型数组
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
c语言怎么定义一维数组和二维数组
c语言怎么定义一维数组和二维数组
c语言怎么定义一维数组和二维数组
c/c++编程我们常常需要用到一维数组和二维数组,下面就通过两个例子介绍一下如何声明以为二维数组,并且进行赋值应用。
1、一维数组
一维数组的声明包括如下结构:类型变量名[N],其中N是你要定义的一维数组长度。
下面我们就通过一个例子声明一个int类型的数组,并且进行数组的'赋值以及输出。
2、在cpp文件main()函数中输入以下语句
int a[10];//声明一维整形数组,数组长度为10
for (int i =0;i<10;i++)
{
a[i]=i;
cout<<i<<endl;< p="">
}
return 0;
然后ctrl+F5运行
我们可以看到如下结果:在i行输出的是a[i]
3、二维数组
二维数组的声明结构:类型变量名[M][N],其中M代表行数,N 代表列数,下面我们也通过一个例子声明一个整形(int)的二维数组,并且进行相应的赋值与输出。
4、在main()函数中输入以下代码
int a[4][5];//二维数组声明
int i,j;
for ( i =0;i<4;i++)
{
for (j=0;j<5;j++)
{
a[i][j]=(i+1)+(j+1); cout<
下载全文。
C语言一维数组的定义和引用数组
printf("a[%d][%d]=%f\n",i,j,a[i][j]);}
}
3.多维数组的定义和在内存中的存放顺 序:
如 int a[2][3][4]; 共24个元素,在内存中排列的顺序是 :第三维变化最快,然后是第二维,第 一维最慢。
7.2.2 二维数组的引用 形式:数组名[下标][下标] 其中:下标是整型或字符型的常量,变量或表 达式。(定义时不能使用变量)
运行:input 6 numbers: 输入:9 8 5 4 2 0 输出:0 2 4 5 8 9
7.2 二维数组的定义和引用 7.2.1 二维数组的定义 1.一般形式:类型说明符 数组名[常量表达式][常量 表达式]
如:float a[3][4] 定义数组a具有三行四列 在C中,可将二维数组看着是特殊形式的一维数组。
int a[5] a[0], a[1], a[2], a[3], a[4] 5个元素 ,下标从0 ~ 4
注意:
在Turbo C 中超过定义的数组下标元素是可以引用的,系 统不作检查。
例T7-0-1.c
main( )
{int i, a[5];
for(i=0;i<=4;i++)
printf (a[%d]=%d\ n,i,a[i]=i+1);
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; r=i;c=j}
1 2 34 a= 9 8 7 5
c语言一维数组的定义语句中,数组名后带有一对中括号
c语言一维数组的定义语句中,数组名后带有一对中括号摘要:1.一维数组的定义语句概述2.数组名后带有一对中括号的含义3.举例说明一维数组的定义和使用4.总结:一维数组的定义语句及其应用正文:在学习C语言的过程中,我们经常会接触到一维数组。
一维数组是一种线性数据结构,用于存储一系列相同类型的数据。
在C语言中,一维数组的定义语句通常如下:```c类型数组名[数组长度]```其中,数组名后带有一对中括号,表示这是一个数组。
例如:```cint a[5]; // 定义一个整型一维数组,长度为5```这里的`a`是数组名,中括号内的`5`表示数组的长度。
这个定义语句告诉我们,数组`a`可以存储5个整型数据。
在实际编程中,我们可以通过以下方式使用一维数组:```cint a[5] = {1, 2, 3, 4, 5}; // 初始化数组for (int i = 0; i < 5; i++) {printf("%d ", a[i]); // 输出数组元素}```这段代码首先初始化了一个长度为5的整型数组,并将1、2、3、4、5分别存储在数组中。
接着,使用一个for循环遍历数组,并使用`printf`函数输出数组的每个元素。
需要注意的是,在一维数组中,元素的访问是通过索引实现的。
数组的第一个元素索引为0,第二个元素索引为1,依此类推。
因此,在上面的示例中,`a[0]`表示数组的第一个元素,`a[1]`表示数组的第二个元素,以此类推。
总之,在C语言中,一维数组的定义语句中,数组名后带有一对中括号,表示这是一个数组。
语言程序设计 一维数组的定义和初始化
数组元素类型 数组名
定义了100个元素,分别为a[0]、a[1]、a[2]、……、a[99],相当于100个int类型 的变量,每一个称为数组中的一个元素,这些元素在内存中的存储示意如下。
a[0]
a[1]
a[2]
……
a[99]
C语言 一维数组定义
# include <stdio.h>
int main( )
C语 言 程 序 设 计
一维数组的定义和 初始化
C语言 数组类型的引入
例:设计程序实现,输入100个整数,反序输出。
01
分析:
02
因为要反序输出,所以直到最后一个数输入前我们无法输出,必须保存这100个整数的值。 应用前面所学的知识,我们进行如下的数据定义和输入函数调用。
a1
a2
a3
……
a100
int main( )
//下标值由大到小遍历 // 输出a[i]的值
C语言 一维数组元素的引用
如何使两个数组的值相等?
main()
{
int a[5] = {1,2,3,4,5}, b[5];
b = a; }
×
原因:数组名表示数组的首地址,其 值不可改变!
解决方法:
方法1:逐个元素赋值
b[0]=a[0];
b[1]=a[1]; b[2]=a[2];
C语言 一维数组的初始化
定义数组后,数组元素的初值是随机数,可以在定义数组的同 时对数组元素进行初始化。
int a[5] = { 12, 34 }; √ int a[5] = { 12, 34, 0, 0, 0 }; √ int a[5] = { 0 }; √ int a[ ] = { 12, 34, 56 ,78 ,9 }; √ int a[5] = { 12, 34, 56 ,78 ,9,18,20 }; ×
《c语言程序设计教学资料》第8章---数组
一维数组的初始化
不为自动数组初始化,数组中的元素值是不确定的 不为静态或外部数组初始化,则对数值型数组元素, 初值为0,而对字符型数组元素,初值为空字符 ‘\0’ 对数组元素初始化的实现方法:
1.在定义数组时对数组元素赋以初值。
例如: int a[10]={0,1,2,3,4,5,6,7,8,9}; 将数组元素的初值依次放在一对花括弧内。经过上 面的定义和初始化之后,a[0]=0,a[1]=1,a[2]=2, a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8, a[9]=9。
0
30
b1]
1
34
b[2]
2
38
b[3]
3
3c
b[4]
4
40
c
52
44
a
61
48
i
14678910235
4c
b[8]
8
50
b[9]
9
54
b[10]
10
58
c和a的值因数组越界编辑p而pt 被破坏了 b[11]
11
5c
二维数组程序举例
例: 将一个二维数组行和列元素互换,存到另一个二维数 组中。
数组名 [下标] 下标可以是整型常量或整型表达式。例如: a[0]=a[5]+a[7]-a[2*3]
注意
定义数组时用到的“数组名[常量表达式]” 和引用数 组元素时用到的“数组名[下标]” 是有区别的。 例如∶ int a[10]; // 定义数组长度为10
t=a[6]; //引用a数组中序号为6的元素
sizeof(数组名)
编辑ppt
C语言 数组1
程序编写过程: #include <stdio.h> main( ) { int i, x, a[5],flag=0 ; for ( i=0; i<5; i++ )输入数据, 赋给数组元素 scanf("%4d",a[i]); printf("Input x:"); scanf("%d",&x); 输入需查找的数 printf("\n"); for( i=0; i<5; i++ ) 逐个查找数 if ( x==a[i] ) {printf("下标值=%d\n", i); flag=1; 若找到,输出下标 break;}
fib[0]=fib[1]=1
fib 1 1 2 3 5 8 13 21 34 55
+ + + + + + + +
fib[i]=fib[i-1]+ fib[i-2]
程序编写过程: #include <stdio.h> main( ) { int i;
运行结果:
1 1 2 3 5 8 13 21 32 55
第7章
数组
常用于处理大批量数据 数据特点:存在内在联系 数组——具有相同数据类型的变量集合 这些变量都有相同名字,但下标不同 称这些变量为数组元素 数组元素在内存中连续存放 只有一个下标——一维数组 有两个下标——二维数组
本章将介绍的内容
一维数组
二维数组
字符串
一维数组
数组名 [ 下标 ]
例如: a[2],b[i],b[i+1]是合法引用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译指出:constant expression
required in function main (主函数
中要求常量表达式)
.
4
7.1.2 一维数组元素的引用
引用规则:1.先定义,后使用。 2.引用形式:数组名[下标] 下标可以是整、字符 型的常量、变量或表达式。 3.引用方法:针对元素而不是整个数组。
区。
.
7
7.1.4 一维数组程序举例
例T7-2.c 求Fibonacci 数列问题
i
关于菲波那契算法:头两个数各为1, 2
以后的每个数皆为前两个数之和。
3 4
main( )
5
{
6
int i;
7
int f[20]={1,1};
for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1];
第7章
数
组
数组:是构造类型,元素由基类型(整、实
、字符)组成。
它是有序的、同类型数据的集合。
7.1 一维数组的定义和引用
7.1.1 一维数组的定义
形式:类型说明符 数组名[常量表达式]
如:int a[5];
float b[10];
说明:
1.命名规则:数组名是由合法的标识符组成。
.
1
2.数组名后是用 [ ] 括起来的是常量表达式 包括:整、字符、符号常量表达式。 如: int a[2+3], b[5], c[‘a’] , _d[8],
其中:下标是整型或字符型的常量,变量或表
达式。(定义时不能使用变量)
如: a[1][2]
a[i][j]
1.数组元素可出现在表达式中,如:
a[1][2]=a[2][2]/2
2.使用数组元素时,应注意不要超出其定义的
范围;
如: int a[2][3];
a[2][3]=5;
.
17
7.2.3 二维数组的初始化 1.按行给二维数组赋初值
0 b[0][0] a[0][0]=1
1 b[1][0] a[0][1]=2
2 b[2][0] a[0][2]=3
0 b[0][1] a[1][0]=4
1 b[1][1] a[1][1]=5
2 b[2][1] a[1][2]=6
21
例T7-5.c 有3 × 4矩阵,求出其中最大元素所在的行号和列号
如: int a[2][3]={{1,2,3},{4,5,6}}; 2.按数组元素排列的顺序赋初值
如:int a[2][3]={1,2,3,4,5,6}; 3.对部分元素赋初值,按行赋值 较直观
如:int a[2][3]={{2,5},{3}};
.
1 a=
4
1 a=
4
2 a=
3
23 56
23 56
50 0 018
main( )
{int i, j, r=0,c=0, max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; r=i;c=j} printf(“max=%d,row=%d, colum=%d\n”,max,r,c);
for(i=0;i<20;i++)
{ if(i%5==0) printf (“\ n” );
printf (“%12d”,f[i]; 运行结果:
}
1
1
2
}
8
13
21
89 144 233
9.87 1597 2584
f[i]=f[i-2]+f[i-1] f[2]=f[1]+f[0]=2 f[3]=f[2]+f[1]=3 f[4]=f[3]+f[2]=5 f[5]=f[4]+f[3]=8 f[6]=f[5]+f[4]=13 f[7]=f[6]+f[5]=21
第一轮大数沉底 第二轮
5444 4522 2250 0005
第三轮
42
24
2
00
0
4
2
第四轮 第五轮
此处:n=6 外层循环j(1~n-1)次
内层循环i (1~n-j)次
.
9
.
10
main( ) {int a[7]; int i, j , t; printf (“input 6 numbers:\ n”); for(i=1;i<7;i++) scanf(“%d”, &a[i ]; printf (“\ n”); for(j=1; j<=5; j++)
&a[1][2]=ffd8 a[1][2]=11
for(j=0;j<3;j++)
{printf(“&a[%d][%d]=%x ”, i, j,
地址 值
&a[i][j]);
ffce 1
printf (“a[%d][%d]=%d\ n”,i,j,a[i][j]);
ffd0 ffd2
3 5
}
ffd4 7
数组元素
printf("a[%d][%d]=%f\n",i,j,a[i][j]);}
}
.
15
3.多维数组的定义和在内存中的存放顺 序:
如 int a[2][3][4]; 共24个元素,在内存中排列的顺序是 :第三维变化最快,然后是第二维,第
一维最慢。
.
16
7.2.2 二维数组的引用
形式:数组名[下标][下标]
for(i=1; i<=6-j; i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf (“the sorted numbers:\ n”); for(i=1;i<7;i++) printf(“%d _ _”,a[i]);
}
.
x a[0] 9 a[1] 8 a[2] 5 a[3] 4 a[4] 2 a[5] 0 a[6]
a[0][0] a[0][1] a[0][2] a[1][0]
}
ffd6 9 a[1][1]
ffd8 11 a[1][2]
.
14
注:从键盘给实型数组元素赋值时,应通过一中间变量进行, 或采用其它办法实施。 T7-3-2.c 实型数组从键盘赋值情况
main()
{int i,j;
float a[2][3],k;
4.全部元素赋值时,第一维下标可省略 如: int a[ ][3]={1,2,3,4,5,6};
又如:int a[ ][4]={{0,0,3},{0},{0,10}};
12 3 a=
45 6
00 30 a= 0 0 0 0
0 10 0 0
.
19
7.2.4 二维数组程序举例 例T7-4 将一个二维数组的行和列元素互换, 存到另一个二维数组中 。
┆
3 34 377 4181
5 55 610 68765
例T7-3.c 用起泡法对6个数排序(由小到大) 思路:将相邻两数两两比较,若小则调到前头,不小也要比较
988888 895555 559444 444922 222290
000009
85555 58444 44822 22280 00008
如: int a[5]={1, 3, 5}; 3. 初始化时给全部元素赋0值
如:int a[5]={0,0,0,0,0}; 或 int a[5]={0};
4. 对全部元素赋初值时可以不指出长度 如:int a[5]={2,4,6,8,10};
或 int a[ ]={2,4,6,8,10}; 效果一样
printf (“a[5]=%d\t”,a[5]);
printf (“a[6]=%d\ n”,a[6]);
}
运行结果:
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]=5
a[5]=-30
a[6]=285
.
3
4.数组大小的定义只能是常量,而不能是变 量或动态地定义。 例7-0-2. C main( ) { int n=5,a[n];
for(i=0;i<2;i++)
for(j=0;j<3;j++) {scanf("%f",&k);
a[i][j]=k; }
for(j=0;j<3;j++) scanf(“%f%f”,&a[0][j],&a[1][j])
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{printf("&a[%d][%d]=%x ",i,j,&a[i][j]);
}
printf(“array b:\ n”);
for(i=0;i<=2; i++)
i 0
{for(j=0;j<=1;j++)
printf(“%4d”,b[i][j]); printf(“\ n”); 1 }
}
.
运行结果:
array a: