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

合集下载

掌握一维和二维数组的定义和数组元素的引用方法(精)

掌握一维和二维数组的定义和数组元素的引用方法(精)
பைடு நூலகம்
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语言学习入门笔记之数组

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)允许在同一个类型说明中,说明多个数组和多个变量。

数组应用的实验报告

数组应用的实验报告

一、实验目的1. 掌握数组的定义、声明、初始化和引用方法。

2. 熟悉数组在数据存储和操作中的优势。

3. 学习并实现一些常用的数组操作,如排序、查找、插入和删除等。

4. 提高编程能力,培养解决实际问题的能力。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容1. 一维数组的定义、初始化和引用2. 二维数组的定义、初始化和引用3. 数组元素的查找4. 数组元素的排序5. 数组元素的插入和删除四、实验步骤1. 一维数组的定义、初始化和引用(1)定义一个整型一维数组,并初始化前5个元素为1、2、3、4、5。

(2)使用循环遍历数组,输出所有元素。

(3)使用指针遍历数组,输出所有元素。

2. 二维数组的定义、初始化和引用(1)定义一个整型二维数组,并初始化前3行3列的元素。

(2)使用嵌套循环遍历数组,输出所有元素。

(3)使用指针遍历数组,输出所有元素。

3. 数组元素的查找(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。

(2)编写一个函数,用于查找数组中是否存在指定的元素。

(3)在主函数中调用该函数,查找元素5在数组中的位置。

4. 数组元素的排序(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。

(2)编写一个冒泡排序函数,用于对数组进行排序。

(3)在主函数中调用该函数,对数组进行排序,并输出排序后的结果。

5. 数组元素的插入和删除(1)定义一个整型数组,并初始化前10个元素为1、2、3、4、5、6、7、8、9、10。

(2)编写一个插入函数,用于在数组中插入一个新元素。

(3)编写一个删除函数,用于删除数组中的指定元素。

(4)在主函数中调用插入和删除函数,对数组进行操作,并输出操作后的结果。

五、实验结果与分析1. 一维数组的定义、初始化和引用实验结果:成功定义、初始化和引用了一维数组,并输出所有元素。

1213一维数组的定义,赋值,遍历

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++)

第6章数组(一维数组)

第6章数组(一维数组)

9
31
1
for ( i=0; i<n-1; i++ ) for (( j=0; j<n-1-i; j++ ) for j=0; j<n-1; j++ ) 相邻两数比较, ) if ( a[j]>a[j+1] 前小后大 a[j]a[j+1]
• • • • • 其他不变,改变声明项为:int 其他不变,改变声明项为:int 其他不变,改变声明项为:int 其他不变,改变声明项为:int 其他不变,改变声明项为: int n; a[n]={0,1,2,3}; a[4]={0,1,2,3}; a[4]={2,8}; a[4]={2,4,6,8,10}; a[4]={2,4,6,d};
注意: 不能写成 b=a;
•例:(P159)
16
[例] N盏灯排成一排,从1到N按顺序依次编号。有N 个人也从1到N依次编号。第一个人(1号)将灯全部 关闭。第二个人(2号)将凡是2和2的倍数的灯打开。 第三个人将凡是3和3的倍数的灯做相反处理(该灯如 为打开的,将它关闭;如为关闭的,将它打开)。以 后的人都和3号一样,将凡是与自己相同的灯和是自 己编号倍数的灯做相反处理。请问:当第N个人操作 之后,哪几盏灯是点亮的。
17
#include <stdio.h> #define N 10 void main(void) { int lamp[N+1]; int i,j,k; for(i=1;i<=N;i++) /*将灯全部关闭*/ lamp[i]=0; for(i=2;i<=N;i=i+2) /*将凡是2和2的倍数的灯打开*/ lamp[i]=1; for(j=3;j<=N;j++) /*将3和3的倍数的灯做相反处理*/ for(i=j;i<=N;i=i+j) for(i=1,k=j;k<=N;k=i*j,i++) lamp[i]=!lamp[i]; for(i=1;i<=N;i++) if(lamp[i]) printf("%2d", i); }

第7章 一维数组应用

第7章 一维数组应用

第七章 数组
例如:一维数组: 例如:一维数组: mark[100]; float mark[100]; 低地址 每个数据元素占用 的字节数,就是基 的字节数,就是基 类型的字节数 类型的字节数 一个元素占4个 一个元素占 个字节
高地址
86.5 92.0 77.5 52.0
. . . 94.0
mark[0] mark[1] mark[2] mark[3]
第七章 数组
第7章 数组
7.1 一维数组
7.1 一维数组 数组是一组有序数据的集合 有序数据的集合, 数组是一组有序数据的集合,数组中每一个元 素的类型相同 类型相同。 数组名和下标来唯一确定数 素的类型相同。用数组名和下标来唯一确定数 组中的元素。 组中的元素。 7.1.1 一维数组的定义(先定义后使用)全部元素均指定初值,定义中可以省略元素的个数, 如果全部元素均指定初值,定义中可以省略元素的个数, 可以省略元素的个数 例: static int a[5] = {1,2,3,4,5}; 可以写为: 可以写为: static int a[ ] = {1,2,3,4,5}; 两种写法一样效果, 两种写法一样效果,系统会自动根据元素的个数来确定数组的 大小,但是如果是局部制定元素值则不能省略长度值。例如: 大小,但是如果是局部制定元素值则不能省略长度值。例如: {1,2,3};不可以写为 不可以写为: static int a[5] = {1,2,3};不可以写为: {1,2,3};这样系统会自动根据初始值 static int a[ ] = {1,2,3};这样系统会自动根据初始值 个数来认为数组只含有三个元素,即默认其长度为3 个数来认为数组只含有三个元素,即默认其长度为3。 5、与给变量初始化不同的是给数组初始化只能在定义时进行, 与给变量初始化不同的是给数组初始化只能在定义时进行, {1,2,3};不能写成 不能写成: 如: static int a[5] = {1,2,3};不能写成: static int a[5]; a[5] = {1,2,3};(因为a[5]指单个元素) {1,2,3};(因为a[5]指单个元素) a[5]指单个元素

中职C语言教案:一维数组的定义和使用

中职C语言教案:一维数组的定义和使用
二、讲授:
1、数组概述:
数组:是数目固定,类型相同的若干个变量的有序集合,用数组名标识。
序:是数组元素之间的位置关系,不是元素值的大小顺序。
数组名:是用于区别其它数组及变量的。
数组元素:集合中的变量,属同一数据类型,用数组名和下标确定。
下标:是数组元素在数组中的位置。
数组的维数:数组名后所跟下标的个数。
教法
讲授法、案例教学法、讨论法
教学设备
黑板 计算机 网络机房
教学
环节
教学活动内容及组织过程
个案补充




一、导入:
提问:保存一个班50位同学的一门功课的成绩,并且找出最高分和最低分,应如何实现?
解题思路:定义50个变量,从键盘中输入值,然后再相互比较。处理起来很复杂,是否有更简便的方法?引出本节课的知识点-----数组。
中等专业学校2024-2025-1教案编号:
备课组别
计算机
课程
名称
C语言
所在
年级
主备
教师
授课教师
授课
系部
授课
班级
授课
日期
课题
一维数组的定义和使用
教学
目标
1、掌握一维数组的定义和引用
2、掌握一维数组的初始化方法
3、了解与一维数组有关的应用编程方法
重点
一维数组的定义和引用、初始化方法
难点
与一维数组有关的应用编程方法
int t,a[10],i=2;
则以下都是正确的表达式:
t=a [6];
a[0]= a[i]+a[i+1];
引用说明:
(1)必须像使用变量那样,先定义,再使用,如以下操作是错误的:

C语言数组的定义及引用

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语言一维数组的定义和引用数组

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语言——数组

活动3:字符数组
字符串与字符数组的区别 字符串也是字符数组,只是要求以’\0’作为结束符。 如: char s[80]={ ‘A’,’B’,’C’,’D’,’E’,’\0’}; 或: char s[80]= “ABCDE”; A
s[0]
B
s[1]
C
s[2]
D
s[3]
E
s[4]
\0
s[5]
……
活动3:字符数组
模块6:数组
活动1:一维数组
1、一维数组的定义及引用 定义方式: 数组名[常量表达式] 类型说明符 数组名[常量表达式]
活动1:一维数组
如:int a[5]; 定义一个具有5个元素 的数组,其下标从0 到4,如右图示。
数组a a[4] a[3] a[2] a[1] a[0]
活动1:一维数组
注意问题: 1、数组名规则与变量名相同; 2、常量表达式中不能包含变量; 3、下标从0开始。
数组a
4
a[0]
8
15
3
10
6
a[1] a[2] a[3] a[4] a[5]
活动1:一维数组
应用举例: 例3:冒泡排序法。 阅教材P101例 6.3
a[3]与a[4]交换 数组a
4
a[0]
8
3
15
10
6
ห้องสมุดไป่ตู้
a[1] a[2] a[3] a[4] a[5]
a[3]与a[4]交换 数组a
4
a[0]
8
3
10
[0] a[0] a[1] [1] [2]
2 6
3 8
5 9
活动2:二维数组
应用举例:教材P106例6.5

C程序设计第6章

C程序设计第6章

6.1 一维数组 6.2 二维数组 6.3 字符数组 6.4 程序举例6.1 一维数组6.1.1 一维数组的定义和引用一维数组的定义方式为 类型标识符数组名[常量表达式];main() {float s1, s2, s3, s4, s5; printf("Enter five scores: "); scanf("%f , %f , %f, %f, %f", &s1, &s2, &s3, &s4, &s5); printf("\nThe score in reverse order are: "); printf("%f\n", s5); printf("%f\n", s4); printf("%f\n", s3); printf("%f\n", s2); printf("%f\n", s1); }(1)表示数组长度的常量表达式,必须是正的整型常量表达式。

 (2)相同类型的数组、变量可以在一个类型说明符下一起说明,互相之间用逗号隔开。

例如,int a[5], b[10], i;(3)C语言不允许定义动态数组,即数组的长度不能依赖于程序运行过程中变化着的量,下面这种数组定义方式是不允许的。

int i; scanf("%d", &i); int a[i];main() {int i; float score[5]; printf("Enter five scores: "); for (i=0; i<5; i++) scanf("%f", &score[i]); printf("\nThe scores in reverse order are: "); for (i=4; i>=0; i--) printf("%4.2f\n", score[i]); } 6.1.2 一维数组的初始化 可以在程序运行后用赋值语句或输入语句使数组中的元素得到值,也可以使数组在程序运行之前(即编译阶段)就得到初值,后者称为数组的初始化。

char9 数组

char9 数组

9.1.2 一维数组的引用 除了给指针变量赋地址值外,还可以给指针变量赋 NULL值。 例如:p=NULL; NULL是在stdio.h头文件中的预定义符。NULL的代码 值为0,当p=NULL时,称p为空指针。因为NULL的代码 值是0,所以上面语句等价于: p=’\0’; 或 p=0; 这时,指针p并不是指向地址为0的存储单元,而是具 有一个确定的值——“空”。企图通过一个空指针去访问 一个存储单元时,将会得到一个出错信息。
•编写程序,通过函数给数组输入若干大于等于5的整数,用0作为输入结束标志, 调用函数输出该数组中的元素。
#include <stdio.h> #define N 20 void aout(int *,int); int ain(int *); main() { int a[N], i; i = ain(a); aout(a, i); }
9.2 一维数组和指针
9.2.1 一维数组和数组元素的地址 一维数组在主存中占连续的存储空间,数组名 代表的是数组的首地址。可定义一个指针变量, 通过赋值或赋初值的形式,把数组名或数组的第 一个元素的地址赋值该指针变量,该指针变量就 指向了该数组。值得注意的是,这个指针变量中 的地址值不可改变,也就是说,不可以给数组名 重新赋值,因而数组名也可以认为是一个地址常 量。
在以下语句中,由于进入循环前指针变量pa指 向的是数组a的首地址,则pa++使得pa依次指了a 数组中的每一个元素: for(pa=a, i=0; i<5; i++) pa++; 同样也可以写成: for(pa=a, i=0; i<5; i++) { scanf(“%d”, pa); pa++;} 或 for(pa=a, i=0; i<5; i++) scanf(“%d”, pa++); 或 for(pa=a; pa-a<5; pa++) scanf(“%d”, pa);

C语言 数组1

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]是合法引用

C语言数组结构介绍

C语言数组结构介绍
第2轮,把第0跟第1个数比较,第1跟第2个数比 较……第n-3个数跟第n-2个数比较,如果前一个数 比后一个大,就交换。那么第2轮比较结束后,就可 以把第0至第n-2个数中最大者放到第n-2的位置;
依次类推,直到第0个跟第1个数比较,把最大者放 到第1的位置,这样就可以把整个数组排好序。
冒泡法每轮都把该轮要比较的数的最大者放到最后
都是int类型,序号从score[0]~score[49],其 中score为数组名,[]内的数值必须为整形常量, 或整形常量表达式,如30+20,不允许为变量, 也不允许为浮点数。 常量表达式称为数组的长度,也:数组名[下标]
下标可以是常数或者常数表达式,也可以是变量 或者变量表达式,但必须是整数。
数组不可整体引用,不可整体赋值,想给一维数 组score里面的50个数组元素都赋值为0,使用 score=0是错误的,可以使用循环结构来赋值: for(i=0;i<50;i++) score[i]=0; 使用数组不但 简化了变量的命名,还简化了变量的使用。
数组元素(用下标去引用)相当于一个普通变量, 可以出现在该类变量可以出现的所有场合。
字符数组的输入输出
对字符数组中的字符,可以按单个字符进行输入 或输出,例如: for(i=0;i<10;i++) scanf("%c",&str[i]); for(i=0;i<10;i++) printf("%c",str[i]);
如果有’\0’作为字符串结束标志,不需要知道字 符串的长度就可以很方便地进行输出,例如: for(i=0;weekday[0][i]!='\0';i++) putchar(weekday[0][i]);

一维数组的定义和引用

一维数组的定义和引用

一维数组的定义和引用嘿,朋友们!今天咱来唠唠一维数组的定义和引用。

你说这一维数组啊,就像是一串排好队的小伙伴。

每个小伙伴都有自己特定的位置和值。

这不就跟咱排队买东西一样嘛,每个人都站在特定的地方,等着轮到自己。

咱先说说这定义。

就好比你要组织一场比赛,你得先确定有哪些人参加呀。

在编程里,咱得先告诉电脑这个数组里都有啥类型的数据,是整数呀,还是小数呀,或者是字符啥的。

这就像是给这些小伙伴贴上标签,让电脑知道该怎么对待他们。

然后呢,就是给这个数组起个名儿。

这名字可得起好咯,不然回头找都找不到。

就像你给你的好朋友起个特别的外号一样,好记又亲切。

接下来就是引用啦!这可有意思了。

你想啊,你知道了有哪些小伙伴,那你肯定得跟他们打交道呀。

你想找到特定的那个小伙伴,就得通过他的位置。

这就跟你在队伍里喊某个小伙伴的名字一样,他听到就知道是在叫他啦。

比如说,你有个一维数组叫“成绩”,里面存着好多人的考试成绩。

你要是想看看第五个人的成绩,那就直接通过位置 5 去找呀。

这多方便!而且哦,这数组还能做很多好玩的事儿呢。

你可以把里面的数据进行各种计算,就像你把小伙伴们的力量加起来看看有多强一样。

还可以根据这些数据做出各种判断,决定下一步该干啥。

你说这是不是很神奇呀?想想看,通过这么一个简单的数组,就能把好多信息整理得井井有条,想用的时候随时能找到。

这就像是你有个百宝箱,里面啥宝贝都有,你想用啥就拿啥。

咱再打个比方,一维数组就像是一条铁路线,每个数据就是铁路上的一节车厢。

你想让火车开到哪儿,就找到对应的车厢就行啦。

是不是特别形象?总之呢,一维数组是编程里特别重要的一个概念。

学会了它,就像是掌握了一把打开编程大门的钥匙。

咱以后就能在编程的世界里自由驰骋啦!别小瞧这小小的数组哦,它能发挥的作用可大着呢!大家一定要好好掌握呀!。

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

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
6.2.3 二维数组的初始化
二维数组的初始化分为4种情况: 1)分行给二维数组初始化 例: int a[2][3] ={{1,2,3},{4,5,6}}; 赋值后数组中各元素的值为: a[0][0]=1、 a[0][1]=2、 a[0][2]=3 a[1][0]=4、 a[1][1]=5、 a[1][2]=6
第一维的长度按以下规则决定:
当初值个数能被列下标除尽时,所得商就是第一维的大小。 当初值个数不能被列下标除尽时,第一维大小=所得商+1。
程序运行结果: 6.2.4 二维数组的应用 1 2 3 4 5 6 7 8 9 10 11 12 例1. 通过键盘给一个31 行42 列的二维数组输入及输出数据。 3 4 main() 5 6 7 8 {int a[3][4] , i , j , k; 9 10 11 12 for (i=0;i<3;i++) for (j=0, j<4,j++) scanf("%d“, &a[i][j]); for (i=0;i<3;i++) { printf(“\n"); for (j=0, j<4,j++) printf("%d\t", a[i][j]); } printf(“\n"); }
6.1.3 一维数组元素的初始化
2)对数组的部分元素初始化
当初值个数少于所定义数组元素的个数时,系统将 自动给后面的元素补0。 例: int a[10]={0,1,2,3,4};
int b[10]={1};
a 0 1 2 3 4 0 0 0 0 0 b 1 0 0 0 0 0 0 0 0 0
数组的使用注意:
a[1][1]
a[1][2]
二维数组
int b[3][4];
b
3 8 1
5 10 4
9 7 3
7 2 6
二维数组
0,0 0,1 0,2 0,3 1,0 1,1 1,2 1,3 2,0 2,1 2,2 2,3
对应的下标
6.2.2 二维数组的引用
二维数组元素的引用形式: 数组名[行下标][列下标];

数组大小最好用宏来定义,以适应未来可能的变化
#define SIZE 10 int a[SIZE];

数组大小定义好后,将永远不变。
下标越界是大忌!

使用大于最大下标的下标,将访问数组以外的空间。那里 的数据是未知的,可能带来严重后果
一维数组的输入和输出
只能逐个对数组元素进行操作(字符数组例外)
例1:编程序使a[0]到a[9]的值为0~9,然后按逆序输 6.1.4 一维数组程序举例 出。 main() { int i,a[10]; for (i=0; i<=9;i++)
a[i]=i;
for(i=9;i>=0; i--) printf("%d ",a[i]); } 运行结果如下:
9876543210
(2) 数组名后是用方括弧括起来的常量表达式,不能用圆括弧。如: int a(5);
(3) 常量表达式表示元素的个数,即数组长度。
例如:在a[5]中,5表示a数组有5个元素,下标从0开始,
分别是,a[0],a[1],a[2],a[3],a[4]。 (4) 常量表达式中可以包括常量和符号常量,不能包含变量。 例如:int n; scanf("%d",&n);
例5.2 编程序:在给定的数组中查找用户输入的值,并输出查找 结果。 #include <stdio.h> 运行情况: #define N 6 d:2 ↙ main() a[3]=2 { int a[]={7,5,4,2,1,8}, i=0, d; printf(“d: ”); scanf("%d",&d); while (i<N&&a[i]!=d) i++; if (i<N) printf(“a[%d]=%d\n",i,d); else printf(“%d未找到\n",d); }
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];
row=i; col=j;
} printf(“max=%d,row=%d,col=%d\n”,max,row,col); 程序运行结果: } max=10,row=2,colum=1
6.1.3 一维数组元素的初始化
一维数组的初始化分为2种情况: 1)对数组的全部元素初始化 例:int a[5]={0,1,2,3,4}; int a[ ]={0,1,2,3,4}; 注意: 对数组元素全部赋初值时,可以不指定数组的长度。 请问:
a[0],a[1],a[2],a[3],a[4] 分别是多少?
int a[10], i ; 输入方法: 输入第i个数组元素: scanf("%d",&a[i]); 输入整个数组元素: for (i=0;i<10;i++) scanf("%d",&a[i]);
输出方法:
输出第i个数组元素: printf("%d",a[i]); 输出整个数组元素: for (i=0;i<10;i++) printf("%d",a[i]);
2)将所有数据写在一个花括弧内,按数组排列 的顺序对各元素赋初值。
如:int a[2][3] ={1,2,3,4,5,6};
a 1 2 3 4 5 6
3)只给部分元素赋初值。
当某行一对花括号内的初值个数少于该行中元 素的个数时,系统将自动给该行后面的元素补 0。 如:int t[3][4]={1,5,9};
常见错误
int n=15; int data[n];
只能定义静态数组
int data[5]; data[5]=10; //C语言对数组不作越界检查,使用时要注意
数组中元素 个数必须是 正整数
int a[10],i; for(i=1; i<=10; i++) scanf(“%d”,&a[i]);
int a[10]; float i; a[i]=10;

例:int a[3];
6.1
一维数组的定义和引用
6.1.1 一维数组的定义 一维数组的定义格式: 类型说明符 数组名[常量表达式];
例如:
int a[10];
它表示数组名为a,此数组有10个元素。
系统会在内存分配连续的10个int空间给此数组
一维数组
a
0 1
2
3 4
5
6
7
8
9
说明: (1) 数组名命名规则和变量名相同,遵循标识符定名规则。
相关文档
最新文档