当前位置:
文档之家› 11 《C语言程序设计》教案 第四章 数组(1)—一维数组
11 《C语言程序设计》教案 第四章 数组(1)—一维数组
{min=的值*/
min_p=j;}
printf(“the min is%d,position %d”,min,min_p);
}
(5)数组在内存中的存放
例如 int data[3];则在内存中的状态如下:
1000 1002
1004
4)所有数组元素共用一个名字,用下标来区别每个不同元素。下标从 0 开始,按照下
标顺序依次连续存放。如:a[0],a[1]a[2],…。
5)常量表达式表示元素个数,即数组的长度。如:int a[10];中 10 表示 a 数组有 10
个元素。
例如:以下定义是合法的。
int a[10]; 或: # define N 10
C、int a[5]={0,9,16,21,24};
D、int i,a[5]; for(i=0;i<5;i++) a[i]=i*(10-i);
(4)一维数组应用举例
【例 6.1】随机输入 10 个数并输出。
程序代码:
main()
{ int a[10],i;
printf(“input 10 numbers:\n”);
data[0] data[1] data[2]
讨论、思考题、作业:
实验指导书习题
参考资料(含参考书、文献等):
叶斌 陈世强. C 语言程序设计. 北京:科学出版社 授课类型:理论课✓ 讨论课□ 实验课□ 练习课□ 其他□ 教学方式:传统授课✓ 双语□ 讨论□ 示教□ 指导□ 其他□ 教学资源:多媒体✓ 模型□ 实物□ 挂图□ 音像□ 其他□
程序代码 :#include <stdio.h>
#define N 5
main()
{ int a[N]={10,20,30,40,50};
int i;
float s,v;
for(s=i=0;i<N;i++)
s=s+a[i];
/*累加数组所有元素值*/
v=s/N;
printf(“The average is%6.2f\n”,v);
组元素自动赋 0 值。
4)在对全部数组元素赋初值时,可以不指定数组长度。
例如:int a[5]={1,2,3,4,5};
或 int a[ ]={1,2,3,4,5};
若定义数组长度大于元素赋初值的个数时,不能省略数组长度的定义,而必须写成:
int a[10]={1,2,3,4,5};
若定义数组长度小于元素赋初值的个数时,语法错误不能执行。
格式:数组名[下标]
说明:下标可以是整型常量或整型表达式。例如:a[1],a[2*2]。
若要对一维数组的连续多个元素引用或操作,可用一重循环实现。
说明:引用数组元素时,下标可以是整型常数、已经赋值的整型变量或整型表达式。
数组元素本身可以看作是同一个类型的单个变量,因此对变量可以进行的操作同样也适
用于数组元素。也就是数组元素可以在任何相同类型变量可以使用的位置引用。
数组
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)。
每个数组元素也都可以作为单个变量使用。
3、一维数组(45 分钟)
(1)一维数组的定义(先定义后使用)
格式:类型说明 数组名[常量表达式]
} 运行结果为:The average is 30.00
【例 6.4】用数组编程,求 Fibonacci 数列问题的前 20 个数据。
分析:定义一个一维数组 f[20]用来存放 20 个数据, i 为循环变量,我们从下面的数据找
一下规律:
f[0]=1;f[1]=1;f[2]=f[0]+f[1];f[3]=f[2]+f[1];依次类推找出 公式为:
例如:
int grades[10]; /*定义了一个数组 grades,元素个数为 10,数组元素类型为整型。*/
说明:1)数组的类型就是数组各个元素的类型,对于一个数组,所有元素的数据类型都是
相同的。
2)数组名取名规则与变量名相同,遵守标识符命名规则。
3)数组名后是用方括弧括起来的常量、常量表达式或符号常量,不能是变量。
f[i]=f[i-1]+f[i-2];
循环语句为:for(i=2;i<20;i++)
程序代码:
main()
{ int i;
static int f[20]={1,1};
/*定义 20 个元素的数组
f[0]=f[1]=1 */
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; /*生成 20 个数据存放在 f[i]数组中 */
数组 a 的各个数据元素依次是 a[0],a[1],a[2]…a[9](注意:下标从 0-9)。 每个数据元素都可以作为单个变量使用(如赋值,参与运算,作为函数调用的参数等)。
例如:float b[3][3]; 定义了一个二维数组 b,该数组由 9 个元素构成,其中每一个数组元素都属于浮点(实 数)数据类型。
for(i=1;i<=100;i++) if(a[i]>average) printf(“%f\n”,a[i]); (2)在这里,a 代表数组名,a[i]代表 a 数组中的一个元素,i 是数组元素的下标,当 i 的值 为 1 时,a[i]代表 a[1];当 i 的值为 2 时,a[i]代表 a[2]。在循环中当 i 从 1 变化到 100 时,a[i]
for(i=0;i<10;i++)
/*运用一重循环连续给数组元素赋值*/
scanf(“%d”,&a[i]);
printf(“\n”);
for(i=0;i<10;i++)
printf(“%d,”,a[i]);
/*输出数组中的 10 个元素*/
}
【例 6.2】建立一个数组,数组元素 a[0]到 a[9]的值为 0~9,然后按逆序输出。
for(j=0;j<10;j++)
scanf(“%d”,&data[j]);
/*为数组赋值*/
min=data[0];
/*假设首元素为最小,存放在 min 变量中*/
min_p=0;
/*将首元素下标存放在 min_p 中*/
for(j=1;j<10;j++)
if(min>data[j])
/*核查在其余的元素中,是否有比 min 中变量还小
引用数组元素时,下标不能越界。否则结果难以预料(覆盖程序区-程序飞出,覆盖数据
区-数据覆盖破坏,操作系统被破坏,系统崩溃)。
练习:要将 0、9、16、21、24 存入数组 a 中,下列程序段中不正确的是[
]。
A、int a[5]; a={0,9,16,21,24};
B、int a[5]; a[0]=0; a[1]=9; a[2]=16; a[3]=21; a[4]=24;
练习:下列一维数组初始化语句中,正确的是[
]。
A、int a[8]={ }; B、int a[9]={0,7,0,4,8};
C、int a[5]={0,2,0,3,7,9}; D、int a[7]=7*{6};
练习:下列一维数组初始化语句中,正确且与语句 float a[ ]={0,3,8,0,9};等价的是[
中使用一片连续的空间依次存放数组的各个元素。
(3)数组的下标:是数组元素的位置的一个索引或指示。 (4)数组的维数:数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、 三维、多维数组。 例如:int a[10]; 定义了一个一维数组 a,该数组由 10 个数组元素构成的,其中每一个数组元素都属于整 型数据类型。
int a[N]; 6)C 编译程序为数组分配了一片连续的存储单元。为了区分不同的单元,系统的内存 是以字节(Byte)为单位进行编号,这些编号称为地址。 7)C 语言还规定,数组名是数组的首地址。即 a=&a[0] 1、下列一维数组说明中,不正确的是[ ]。
A、int n; scanf(“%d”,&n); float b[n];
《C 语言程序设计》课程教案表
授课题目 第四章 数组(1)——一维数组
课时安排 2 授课时间
教学目的和要求
1.掌握:一维数组的定义和使用方法; 2.熟悉:数组的概念 教学内容
1.基本内容:(1)数组的概念(2)一维数组
2.重点:一维数组
讲课进程和时间分配
1、导入(10 分钟)
板书:
整型
无符号整型 长整型
]。
A、float a[6]={0,3,8,0,9};
B、float a[6]={0,3,8,0,9,0};
C、float a[7]={0,3,8,0,9,0};
D、float a[5]={0,3,8,0,9};
(3)一维数组元素的引用
C 语言规定,数组必须先定义后使用;而且只能逐个引用数组元素,不能一次引用整个数组。
例如:int a[10]={0,1,2,3,4};
初始化之后:
a[0]=0,a[1]=1,a[2]=2,
a[3]=3,a[4]=4,其余元 素自动赋 0 值。
3)设置一个数组中全部元素值为 0。
例如:int a[10]={0,0,0,0,0,0,0,0,0,0}; 或 int a[10];系统会对所有数
for(i=0;i<20;i++)
{
if(i%5= =0)printf(“\n”); /*每行输出 5 个数据*/