一维数组的定义和引用汇总

合集下载

数组(一维与二维)

数组(一维与二维)

• 例 有一个3×4的矩阵,求出其中最大值,以及它所在的行和列。 main() { int i,j,r=0,c=0,max; static int a[3][4]={{1,5,3,4},{9,8,7,6},{-8,20,1,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,r=%d,c=%d\n″,max,r,c); }
注意:数组元素的下标(行 static 数据类型 二维数组名[常量][常量]={{常量列
表},…};
功能: 定义一个二维数组,并给每个数组元素赋初值。
(1)分行给二维数组赋初值。
static int a[3][4] ={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; (2)将所有数据写在一个花括弧内,按数组排列的顺序对各元素 赋初值。 static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; (3)可以对部分元素赋初值。


一维数组的定义和引用
二维数组的定义和引用
字符数组
一维数组的定义和引用
1.1 一维数组的定义 格式: [存储类型] 数据类型 数组名[常量表达式]; 功能: 定义一个一维数组,常量表达式的值,就是数组元素的个 数。 例如:int a[10]; 表明数组名为a,此数组有10个元素.
说明:
(1)数组名规定和变量名相同,遵守标识符命名规则。 (2)数组名后是用方括弧括起来的常量表达式,不能为圆括弧。
2.4 二维数组应用举例 • 例 求一个3×3矩阵的主对角线之和。 main() { static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum=sum+a[i][j]; printf(“sum=%d”,sum); } 运行结果: sum=15

一维数组的定义(精)

一维数组的定义(精)
可以用赋值语句或输入语句使数组中的元 素得到值,但占运行时间,同时也可以使数组 在程序运行之前初始化,即在编译期间使之得 到初值。
对数组元素的初始化可以用以下方法实现: ⒈ 在定义数组时,对数组元素赋以初值。 如: int a[10]={0,1,2,3,4,5,6,7,8,9}; ⒉ 可以只给一部分元素赋值。 如: int a[10]={0,1,2,3,4}; 表示只给前5个元素赋初值,后5个元素自动赋以0 值。 ⒊ 对static数组不赋初值,系统会对所有元素自动赋 以0值。 即, 如果想使数组a中全部元素值为0,可以这样定 义数组: static int a[5]
a[0] a[2] a[4] a[1] a[3] 0 0 0 0 0
也可以 int a[5]={0};
⒋ 在对全部数组元素赋初值时,可以不指定数组长度。 static int a[5]={1,2,3,4,5};
static int a[ ]={1,2,3,4,5};
例2.用数组来处理求Fibonacci数列问题(求前40项)
b
b[0][0] b[1][0] b[2][0]
b[0][1] b[1][1] b[2][1]
for(i=0;i<=1;i++) for( j=0;j<=2;j++) b[j][i]=a[i][j];
main( ) {static int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2], i, j; printf("array a:\n"); for(i=0;i<=1;i++) {for(j=0;j<=2;j++) printf("%5d",a[i][j]); printf("\n"); } for(i=0;i<=1;i++) for( j=0;j<=2;j++) b[j][i]=a[i][j]; printf("array b:\n"); for(i=0;i<=2;i++) {for(j=0;j<=1;j++) printf("%5d",b[i][j]); printf("\n"); } }

一维数组的定义(精)

一维数组的定义(精)
第6章
§6.1.1
数 组
一维数组的定义和引用
一、一维组的定义
⒈ 定义方式: 类型说明符 数组名[整型常量表达式]; 例:int a[10]; ⒉ 说明: ① 数组名的定名规则和变量名相同,遵循标识符定名规 则。 ② 数组名后的常量表达式用[ ]括起来。 ③ 常量表达式表示数组元素的个数,即数组长度。 例: a[10]表示数组a中包括10个元素,分别为 a[0]~a[9]
例1.1 main( ) {int i,a[10]; 通过赋值语句给 for (i=0;i<=9;i++) 数组元素赋值 a[i]=i; (i=9;i>=0;i-) for (i=0;i<=9;i++) (i=0;i<=9;i++) printf("%4d",a[i] ); a[9-i]); a[i]); }
a[0] a[2] a[4] a[1] a[3] 0 0 0 0 0
也可以 int a[5]={0};
⒋ 在对全部数组元素赋初值时,可以不指定数组长度。 static int a[5]={1,2,3,4,5};
static int a[ ]={1,2,3,4,5};
例2.用数组来处理求Fibonacci数列问题(求前40项)
f[0] f[1] f[2] f[3] f[4] f[5] f[6] f[7] f[8] f[9] .............
1
1
2 0
3 0
5 0
8 0
13 0
21 0
34 0
55 0
.........
main( ) { int i; static long int f[40]={1,1}; for(i=2;i<40;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<40;i++) { if(i%5= =0) printf("\n"); printf("%12ld",f[i]); } }

实验十——一维数组的定义及引用

实验十——一维数组的定义及引用

实验⼗——⼀维数组的定义及引⽤1.本次课学到的知识点:(1)⼀维数组定义的⼀般形式:类型名数组名 [数组长度];类型名指定数组中每⼀个元素的类型;数组是数组变量的名称;数组长度是⼀个常量;数组名是⼀个地址常量,存放数组内存空间的⾸地址。

(2)数组元素的引⽤形式:数组名[下标]下标可以是整型表达式;合理范围是[0,数组长度-1]不能越界。

(3)⼀维数组初始化的表达形式:类型名数组名[数组长度]=[初值表];C语⾔中只能对静态存储数组初始化,静态存储数组如果没有初始值,系统会⾃动给所有的数组元素赋值为0。

(4)可将下标作为循环变量,可以对数组的所有元素逐个进⾏处理。

(5)选择排序法2.实验过程中遇到的问题及解决⽅法:(1)算法的程序流程还不是特别清楚。

(2)多看书、多练习。

3.实验⼼得体会及本章学习总结:(1)⼼得体会:在最近⼏次的作业练习中,增加了⾃⼰对题⽬的理解与思考,不再像以前⼀样对照书本模仿。

每当做出⼀道新题⽬的时候,还是蛮有成就感的(~ ̄▽ ̄)~(2)学习总结:本章学习了⼀种最基本的构造类型——数组,它是⼀组相同类型数据的有序结合。

数组中的元素在内存中连续存放,每个元素都属于同⼀种数据类型,⽤数组名和下标可以唯⼀的确定数组元素。

这是与之前不同的新内容,更需要付出100%的努⼒去学习。

4.预习:⼆维数组:(1)⼆维数组定义形式:类型名数组名 [⾏长度] [列长度];(2)⼆维数组的引⽤要引⽤两个下标,形式为:数组名 [⾏下标] [列下标]⾏下标合理范围[0,⾏长度-1],列下标合理范围[0,列长度-1](3)⼆维数组初始化⽅法⼀:分⾏赋初值⼀般形式:类型名数组名 [⾏长度] [列长度]={{初值表0},…,{初值表k},…};⽅法⼆:顺序赋初值⼀般形式:类型名数组名 [⾏长度] [列长度]={初值表};。

关于c语言数组(一维二维知识点总结)

关于c语言数组(一维二维知识点总结)

关于c语言数组(一维二维知识点总结)关于数组一、一维数组1)定义:int a[10];2)数组中元素的书写:a[0],…….a[9]3)数组名a是?数组的首地址:&a[0]4)一维数组中所有的元素在地址上是连续的!5)数组元素中数据的获得?1)在定义数组的同时初始化:完全初始化、部分初始化;2)定义后,对数组元素单独赋值:a[2]=120;3)从键盘接收数据:for(i=0;i<10;i++)scanf("%d",&a[i]);6)数组元素的输出for(i=0;i<10;i++)printf("%d",a[i]);7)数组元素的计算for(i=0;i<10;i++)s+=a[i];二、二维数组1.二维数组的定义:int b[3][4];2.行标号和列标号3.数组名b,也是它的首地址:&b[0][0]4.二维数组中数组元素是按行存储的,所有的元素地址是连续的5.每个二维数组可以把它看成多个一维数组(每行是一个一维数组)6.二维数组中数组元素的值的获得?1)在定义数组的同时初始化:完全初始化、部分初始化;2)定义后,对数组元素单独赋值:b[2][0]=120;3)从键盘接收数据:for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&b[i][j]);7.二维数组的输出:for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%d",b[i][j]);printf("\n");}三、。

第4章-数组 - 第1讲 - 一维数组

第4章-数组 - 第1讲 - 一维数组

一维数组的赋值
void *memcpy (void *d, void *s, unsigned n) 功能:将s为首地址的一片连续的n个字节内存单元的值拷贝到以d为首地址的一 片连续的内存单元中 。 例如,两个数组元素之间的赋值 。 int a[5] = {1, 2, 3, 4, 5}, b[5], i; for (i = 0; i < 5; i++) b[i] = a[i];
void *memset (void *s, char ch, unsigned n)
适合于字节型数组的整 功能:就是将s为首地址的一片连续的 n个字节内存单元都赋值为ch。 体赋值,或对非字节型 数组进行清0或-1 。 例如,将数组str的每个数据单元赋值为'a'。
char str[10]; memset (str, 'a', 10);
三、一维数组的应用举例
4
1、一维数组的定义 定义方式:
[ ]: 数组运算符 不能用( ) 用分号结尾
数据类型符 数组变量名[整型常量表达式];
数组元素的数据 类型
例如: int a[10]; float f[20]; char str1[10], str2[20];
合法的标识符
表示元素个数 下标从0开始
注意:memset函数是针对每个字节进行操作的,所以 例如,将数组 a的每个数据单元赋值为0(清0)。 不使用它给非字节型数组整体赋值。
int a[10]; memset (a, 0, 10*sizeof(int));
13

一维数组在程序中赋值 使用memcpy函数实现数组间的赋值 memcpy函数原型:
例 int a[4] = {1, 2, 3, 4, 5};

第9章:一维数组

第9章:一维数组

指针=一维数组名
可以写 三种形式
一维数组名作为实参,形参的三种形式
main( )
对应的函数的首部可写成:
1、fun( int *a )
2、fun( int a[ ] )
{ int x[20],i;
fun(x);
{……}
{……}
3、fun( int a[20] ) {……}
……
}
9.4 一维数组应用举例
}
一、选择题
p-133
9.1 若已定义 int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 其中0≤i≤9,则对a数组元素引用不正确的是 A)a[p-a] B)*(&a[ i ]) C)p[ i ] D)*(*(a+i) )
9.2 以下程序段给数组所有元素输入数据,应在下划线处填入的是 A)a+(i++) main( ) { int a[10],i=0;while(i<10) scanf(“%d”,______); } B)&a[i+1] C)a+i D)&a[ ++i]
9.5 以下程序的输出结果是
A) 17 B)18 C)19 D)20
p-134
main ( ) { int a[ ]={2,4,6,8,10},y=1,x,*p=&a[1]; for(x=0;x<3;x++) y+=*(p+x); printf(“%d\n”,y);
}
9.6 以下程序的输出结果是
…… }
int a[8]= 0; int a[8]={ };
int a[8]={5};
9.1.4 通过赋初值定义数组的大小

一维数组

一维数组

课堂练习:
输入10个学生的语文成绩,并求出
他们的总分。 题目分析:
1、确定成绩的数据类型。 2、成绩输入。 3、各个成绩相加求和 4、输出总分
课堂练习:
代码:
main() { float scores[10],sum=0; int i; for(i=0;i<10;i++) { scanf(“%f”,&scores[i]); sum= sum + scores[i]; } printf(“%f\n”,sum); }

数组与循环语句相结合
输出数组的每一个元素值:
printf("x[0]=%d ",x[0]); printf("x[1]=%d ",x[1]); printf("x[2]=%d ",x[2]); printf("x[3]=%d ",x[3]); printf("x[4]=%d ",x[4]); 可以替换为:for(i=0;i<5;i++) printf(“x[%d]=%d",i,x[i]);
一维数组的定义
定义方式:
类型说明符 数组名[常量表达式]; 例如: Int a[10]; double scores[50*2]; 常用类型说明符: 整型 int 浮点型 float 双浮点型double 字符型 char
“数组名”定义规则
遵循标识符的命名规则——

只能由字母、数字或下划线组成, 且不能以数字开头。
一维数组
定义和使用
复习过度
习题:输入10个整数,输出其中的正数。 main() { int a,i,n=1; for(i=0;i<10;i++) { printf("%d) ",n); scanf("%d",&a); if(a>0) printf(" Yes %4d\n",a); n++; } getch(); }

一维数组的定义和引用(精)

一维数组的定义和引用(精)

6.2
二维数组的定义和引用
6.2.1 二维数组的定义 当数组中的每个元素带有两个下标时,称这样的数组 为二维数组,其中存放的是有规律地按行、列排列 的同一类型数据。所以二维数组中的两个下标,一 个是行下标,一个是列下标。 二维数组的定义格式: 类型说明符 数组名[常量表达式][常量表达式]; 例如:float a[3][4],b[5][10];
int a[n];
6.1.2 一维数组元素的引用
数组元素的引用形式: 数组名[下标];
注意:
1)数组必须先定义,后使用。 2)数组的下标都是从0开始。 3)下标可以是整型常量或整型表达式。 例如:
a[i]=3;
printf( “%d” , a[3] ); scanf ( “%d” , &a[3] );
注意:
1)下标可以是整型常量或整型表达式。 例如: a[2][3]、 a[3-1][2*2-1]、 y[i+k][j+k] 2)在使用数组元素时,注意下标值应在已定义的数组大小的范 围内。 例如: int a[3][4]; … a[3][4]=3; //代表某一个元素 //定义数组的维数和各维的大小
定义a为3×4(3行4列)的数组,b为5×10(5行10列)的数组。
说明: (1) 二维数组的行、列下标均从0开始。
(2)二维数组中元素排列的顺序是:按行存放,即在内存 中先顺序存放第一行的元素,再存放第二行的元素。 例:int a[2][3]
a[0][0]
a[0][1]
a[0][2]
a[1][0]
main()
{ int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; 例2将一个二维数组行 printf("array a:\n"); 和列元素互换,存到另 for (i=0;i<=1;i++) 一个二维数组中。 { for (j=0;j<=2;j++) { printf("%5d",a[i][j]); b[j][i]=a[i][j]; } printf("\n"); } 程序运行结果: printf("array b:\n"); array a: for (i=0;i<=2,i++) 1 2 3 4 5 6 { for(j=0;j<=1;j++) array b: printf("%5d",b[i][j]); 1 4 printf("\n"); 2 5 } 3 6

一 维 数 组

一 维  数 组

⑵ 数组元素的下标是从0开始的。
如:int a[2]; scanf(“%d,%d”,&a[1],&a[2]);
⑶ 数组元素的赋值是逐个元素进行的,不允 许把一个数组作为一个整体赋给另一个数组。 除了数组初始化外,也不允许用在花括号中列 表的方式对数组整体赋值。
例1: int a[5]={ 2 , 4 , 6 , 8 , 10 } , b[5] ;
scanf(“%d”,&a[i]); printf(“\n”); for(j=1 ; j<=9 ; j++) /* 控制9轮排序 */ for(i=1 ; i<=10-j ; i++) /* 每轮排序比较次数*/
if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; }
如: int a[ ]={ 2 , 4 , 6 , 8 , 10 };
int a[ ]; ╳
⑵初始化的数据个数允许少于数组的长度,但不 能多于数组的长度。当初始化的数据个数(至 少要有一个)少于数组的长度时,未初始化部 分将被编译系统自动用 0 赋值。 如:int a[5]={ 2 , 4 }; 相当于:a[0]=2, a[1]=4, a[2]=0, a[3]=0, a[4]=0 int a[5]={1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 }; ╳
2 .使用其它方法初始化
⑴利用赋值语句初始化 main() { char as[26],ch;
for(ch='A';ch<='Z';ch++) as[ch-'A']=ch; …... }

一维数组(C语言)

一维数组(C语言)
符数组名,而不是数组元素名。 printf(“%s〞,c[1]); 错误
字符数组
C、如果数组长度大于字符串实际长度,也只输出到遇‘\0’结束。 D、如果一个字符数组中包含一个以上‘\0’,那么遇到和第一个‘\0’ 就结束。〔利用scanf输入字符串,空格可作为结束符。〕
例:char str[13]; scanf(“%s〞,str);
字符数组
〔3〕给字符数组元素逐个赋初值。 char str[9]; str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;
应注意:用字符数组来存放字符串时,假设是逐个字符 赋值给数组元素,要在最后一个字符之后加上字符串结 束标志‘\0’。 用逐个字符给字符数组赋初值,对字符串的存取不太方 便。
printf(“\n〞);
}
B、使用getchar putchar getch getche函数。
字符数组
〔2〕将整个字符串一次输入或输出。用%s格式符。 例:char c[ ]=“china〞; printf(“%s〞,c);
结果为:china
注意: A、输出字符不包括结束符‘\0’; B、用%s格式符输出字符串时,printf 函数中的输出项是字
int a[10], b[10], k; for (k=0;k<10;k++) scanf(“%d〞,&a[k]); b=a; /*error*/ for(k=0;k<10;k++) b[k]=a[k];
一维数组
(3) 在使用数组元素时,数组元素中的下标表 达式的值必须是整型。 下标表达式值的下限为0,值的上限为该数 组元素的个数减1。 使用数组时注意其下标不要越界。如果下 标越界,程序无法得到正确的结果。

C语言一维数组的定义和引用数组

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

一维数组的定义与引用(初学者)

一维数组的定义与引用(初学者)

⼀维数组的定义与引⽤(初学者)数组:具有相同类型的数据组成的序列,且该序列是有序集合。

数组中的每⼀个数据称为数据元素(下标变量)。

数组元素由其所在的位置序号(数据元素的下标)来区分。

数组名与下标的意义:可以⽤统⼀的⽅式来处理数组中的所有元素,从⽽⽅便的实现处理⼀批具有相同性质数据的问题。

注意:数组元素的有序不是指元素⼤⼩顺序。

1、⼀维数组的定义在C语⾔中使⽤数组必须先进⾏定义。

⼀维数组的定义⽅式为:类型说明符数组名[常量表达];例:int a[10];它表⽰定义了⼀个整型数组,数组名为a,此数组有⼗个元素,10个元素都是整型变量。

注意:(1)类型说明符是任意⼀种基本数据类型或构造数据类型。

对于同⼀个数组,其所有元素的数据类型都是相同的。

(2)数组名是⽤户定义的数组标识符,书写规则应符合标识符的书写规定。

(3)⽅括号中的常量表达式表⽰数据元素的个数,也称为数组的长度。

(4)允许在同⼀个数据说明中,说明多个数组和多个变量。

例:int a,b,c,d,k1[10],k2[2];(5)a[7]表⽰a数组有7个元素,注意下标是从0开始的,这7个元素是a[0],a[1],a[2],a[3],a[4],a[5],a[6]。

不存在数组元素a[7]。

(6)C语⾔不允许对数组的⼤⼩做动态定义,即数组的⼤⼩不依赖于程序运⾏过程中变量的值。

例:int n; scanf("%d",&n); /*在程序中临时输⼊数组的⼤⼩*/ int a[n];为⾮法。

常见错误:(1)float a[0];/*数组⼤⼩为0没有意义*/(2)int b(2)(3);/*不能使⽤圆括号*/(3)int k,a[k];/*不能⽤变量说明数组⼤⼩*/重点补充:⼀维数组在内存中的存放:从低地址向⾼地址储存。

2、⼀维数组元素的引⽤数组元素是组成数组的基本单元。

数组元素也是⼀种变量,其表⽰⽅法为数组名后跟⼀个下标。

下标表⽰了元素在数组中的顺序号。

一维数组的定义及引用(精)

一维数组的定义及引用(精)

6.2.3 二维数组的引用
二维数组引用的一般格式为: 数组名[下标] [下标]; 如:a[2][1]表示引用二维数组a的第2行第1列的元素。
第六章 数组
6.2 二维数组的定义和引用
6.2.4 二维数组初始化 对二维数组初始化方法如下: (1)分行初始化二维数组。如: static int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; (2)按元素在内存中存放顺序依次给全部元素初始化。如: static int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; 它的效果同上,二者此时可省略第一维下标。 (3)对部分元素初始化。此时不可省第一维下标。如: static int a[3][4] = {{1},{5},{9}};
它的初始化结果为:
1 0 0 0 5 0 0 0 9 0 0 0
第六章 数组
6.2 二维数组的定义和引用
6.2.5 二维数组应用举例 【例6.3】求3×4矩阵中最大者,并输出其所在行、列。 其思路为:以一个3×4数组存放该矩阵,以变量max标记该矩阵的最大值,以变量row 、 colum标记最大值所在的行、列。设第一个元素a[0][0]最大并将它作为max的初始值,而 后用数组的每一个元素与max比较;若 a[i][j]大于max 则将a[i][j]赋予max ,并且将i、j赋 予row、colum。 源程序如下: main() { int a[3][4]; void inputdata(int a[][]); void bijiao_output(int a[][]); inputdata(a); bijiao_output(a); }
第六章 数组
6.3 字符数组

一维数组的定义及引用(精)

一维数组的定义及引用(精)

求第几个最大值有关。对10个数由大到小排列的程序如下:
第六章 数组
main() { int i,j,t,a[10]; printf("enter 10 numbers:\n"); for(i=0;i<10;i++) { printf("a[%d]= ",i); scanf("%d",&a[i]); } printf("\n"); for(i=0;i<9;i++) { for(j=i+1;j<10;j++) if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t; } printf("%d ",a[i]); } printf("%d\n",a[9]); } 本例在给数组各元素键入值时,通过printf() 函数进行动态提示。
数组元素引用的一般形式为:
数组名[下标表达式]; 注意:在引用中,下标表达式可以含有变量,但该变量此时应具有确定的值。 如:

int i = 2,a[20]; a[i] = 100; 就是合法的引用。 /*定义*/ /*引用*/
第六章 数组
6.1.4 一维数组的初始化 定义数组就是为了使用,对数组的使用不外乎这样几种情况: (1)用数组存储数据。 (2)对存储的数据进行加工。 (3)对数组数据的输出。 不管那一种用法都要先定义后引用。 对数组数据的输出只是在输出语句中引用数组元素,如:printf("%d",a[0]); 对数组数据的加工只是对数组元素进行其类型范围内的各种操作。如:对int型数组a, 下面的操作是合法的。 a[0]4+a[1]/a[2]; 用数组存储数据就是要给数组元素赋值。赋值有两种方法:(1) 用赋值语句或输入 语句依次给数组元素赋值;(2) 在定义数组时给其赋值(即初始化)。 C语言规定只有静态的和外部的数组才能对其初始化。 对数组初始化可分以下几种形式: (1)对数组元素全部初始化。这种情况可不指定数组长度。如: static int a[] = {1,2,3,4,5}; 它等价与static int a[5] = {1,2,3,4,5}; (2)对数组元素部分初始化。这种情况必须指定数组长度。如: static int a[5] = {1,2,3};它表示将1,2,3分别赋给数组的前三个元素,后两个元素 系统自动为其赋值为0。 如对静态的和外部的数组不显式初始化,系统自动为其赋值为0。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*行号9*/ printf(“ d”,f [ i ]);
/*行号10*/ }
/*行号11*/ }
例(2) 输入10个数并从中找出最大者.
main( ) {
int a[10] ,i , j , max ; printf( “ input 10 numbers\:n ” ) ; for( i = 0 ; i < 10 ; i + + )
下面的用法是错误的:
int a(10);
一维数组的定义(2)
(3)常量表达式表示元素的个数,即数组长度。
例如: 在a[10]中,10表示a数组中有10个元素,
下标从 0开始,这10个元素是:a[0], a[1], a[2], a[3], a[4],
a[5], a[6], a[7], a[8], a[9]
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。 如果被定义的数组长度与提供初值的个数不同, 则数组长度不能省略。 例如:想定义数组长度为10,就不能省略数组长度的定义。 而必须写成 int a[10]={ 1,2,3,4,5}; 只初始化前面5个元素,后5个元素为0。 不能写成 int a[ ]={1,2,3,4,5};
一维数组的定义(1)
一、定义方式: 类型说明符 数组名 [ 常量表达式 ] ;
二、说明: (1)数组名定名规则和变量名相同,遵循标识符定名 规则。
例如: int a [ 10 ]; 表示数组名为a ,此数组有10个元素,每个元素为整型数据.
(2)数组名后是用方括弧括起来的常量表达式,不能用圆括 弧。
合法标识符
a
1 a[0]
2 a[1]
3 a[2]
4 a[3]
数组名表示内存首地址, 是地址常量
5
a[4]
6 a[5]
表示元素个数 下标从0开始
编译时分配连续内存 内存字节数=数组维数*
sizeof(元素数据类型)
例 int i=15; int data[i];
(? 不能用变量定义数组维数)
一维数组元素的引用(1)
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); }
注意:不能使用数组元素a[10];
(4)常量表达式可以包括常量和符号常量,不能包含变 量。C不允许对数组的大小作动态定义,即数组的大小不 依赖于程序运行过程中变量的值。
例如:下面这样定义数组是不行的:
int n; scanf(“%d”,&n); int a[n];
更准确的说法是 整型常量表达式
数组在内存的存放形式 int a[10];
一、规则:
(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 ++)
1、在定义数组时对数组元素赋以初值。
例如:int a[10]={ 0,1,2,3,4,5,6,7,8,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[5]=0,……,a[8]=0,a[9]=0。
第七章 数组1、概述 Fra bibliotek、一维数组的定义和引用 3、二维数组的定义和引用 4、字符数组
章节总览
1. 基本类型之外,C语言还提供了构造类型的数据, 它们有:数组类型、结构体类型、共用体类型。构 造类型数据是由基本类型数据按一定规则组成的, 因此也可以称之为“导出类型”。
2. 数组是有序数据的集合。 (a)数组中的每一个元素都属于同一个数据类型。 (b)用一个统一的数组名和下标,唯一的确定数组 中的元素。
一维数组的程序举例(3.1)
例 7.3 用起泡法对n个数排序(由小到大)。(见教材124页) 起泡法的思路是:将相邻两个数比较,将小的调到前头。
具体参见课本: 例如:对一个这样的序列排序:9,8,5,4,2,0(一共有6个数)
/*行号3*/ int f[20]={1,1};
/*行号4*/ for(i=2,i<=20;i++)
/*行号5*/ f [ i ]=f [ i -1]+f [ i -2];
/*行号6*/ for(i=0,i<20;i++)
/*行号7*/ {
/*行号8*/ if( i %5= =0) printf(“\n”);/控* 制换行,每行输出五个数*/
a[ i ]= i ; for(i=09;i<>=90;i+--+) )
printf(“%d,””,,aa[[ii]])); ; }
程序使a[0]到a[9]的值为0~9, 然后按顺序输出
如果按逆序输出
运行结果: 09,81,,72,6,,35,44,,35,2,,61,70,8,9,
一维数组的初始化(1)
注意:对部分元素赋初值时,长度不能省。
一维数组的程序举例(1)
例 7.2 用数组来处理Fibo运nac行ci结数果列:问题。(见教材124页)
11235
程序如下:
8 13 21 34 55
/*行号1*/ /*行号2*/
main( ) { int i;
89 144 233 377 610 987 1597 2584 4181 6765
相关文档
最新文档