6.1 一维数组(教学设计)- 《C语言(上)》同步教学(高教版)

2024-08-03
| 5页
| 106人阅读
| 1人下载
普通

内容正文:

课 题 6.1 一维数组 教 学 目 的 1、掌握一维数组的定义和引用 教 材 分 析 教学重点 一维定义、引用、初始化 教学难点 数组的存储形式,数组的首地址 课时安排 1 教学方法 讲授与演示法相结合讨论法 教具 计算机、投影仪 教 学 内 容 及 过 程 设 计 第一课时 一 新课引入 数组是有序数据的集合,数组中每一个元素都属于同一个数据类型。 问题:给一组数排序,这组 数该 如何存放呢 .1.1.1.1.2.4..5.3.6.8..7.7.7.4.41.5.8 这些数据如何存放才便于排序,这便是本章所要解决的问题 · 一个班学生的学习成绩 · 一行文字 · 一个矩阵 这些数据的特点是:1.具有相同的数据类型 2.使用过程中需要保留原始数据 C语言为这些数据,提供了一种构造数据类型:数组。所谓数组就是一组具有相同数据类型的数据的有序集合。 二、新授 一、一维数组的定义和引用 定义数组,就是要: (1)规定数组的名称,其取名规则与变量名相同; (2)规定数组的类型,包括其数据类型和存储类型; (3)规定数组的大小,即数组的维数及包含的数组元素的个数。数组元素就是包含在数组中的变量。 1、一维数组的定义: 类型说明符 数组名[常量表达式] 例如: int a[10]; 它表示定义了一个整形数组,数组名为a,此数组有10个元素。 例如:int data[10], number[5]; 说明: 1.数组名定名规则和变量名相同,遵循标识符定名规则。 2.在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。 3.常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。 例如: int n; scanf(“%d″,&n); /*在程序中临时输入数组的大小 */ int a[n]; 三小结 1、  一维数组的定义、引用及初始化 2、  一维数组的存储形式 第二课时 一、 复习引入 数组说明中其他常见的错误: ① float a[0]; /* 数组大小为0没有意义 */ 1 int b(2)(3); /* 不能使用圆括号 */ 2 int k, a[k]; /* 不能用变量说明数组大小*/ 如何引用数组中元素的值? 二、新授 (一)一维数组元素的引用 数组名[下标] 下标可以是整型常量或整型表达式。 例如:a[0]=a[5]+a[7]-a[2*3] 注意: 定义数组时用到的“数组名[常量表达式]” 和引用数组元素时用到的“数组名[下标]” 是有区别的。 (二) 一维数组在内存中占一段连续的存储空间,其首地址:a或&a[0] 例:float mark[100]; 每个数据元素占用的字节数,就是基类型的字节数一个元素占4个字节 (三) 一维数组的初始化 1. 在定义数组时对数组元素赋以初值;int a[10]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 2. 可以只给一部分元素赋值; int a[10]={0, 1, 2, 3, 4}; 3. 如果想使一个数组中全部元素值为0,可简便实现; int a[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 其实,对static数组不赋初值,系统会对所有数组元素自动赋以0值,即上句等价于: static int a[10]; 不能写成:int a[10]={0*10}; 4. C允许通过所赋初值的个数来隐含定义一维数组的大小;在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度 int a[]={0,1,2,3,4,5,0}; 相当于 int a[7]={0,1,2,3,4,5,0}; 实例1:用数组来处理,求解Fibonacci数列。前20个数 Fibonacci数列公式:已知: a1=a2=1 an=an-1+an-2 即:1,1,2,3,5,8,13 代码略 (四)下面程序的运行结果是 参考答案: 1 2 3 4 5 。 main() {int a[10]={1,2,2,3,4,3,4,5,1,5}; int n=0,i,j,c,k; for(i=0;i<10-n;i++) {c=a[i]; for(j=i+1;j<10-n;j++) if(a[j]==c) {for(k=j;k<10-n;k++) a[k]=a[k+1]; n++; } } for(i=0;i<10-n;i++) printf("%3d",a[i]); } (五)下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。 main() {int a[5],max,min,i,j,k; for (i=0;i<5;i++) scanf("%d:,&a[i]; min=a[0]; for (i=1;i<5;i++) if (a[i]<min) {min=a[i];【1】;} max=a[0]; for (i=1;i<5;i++) if a[i]>max) {max=a[i]; 【2】;} 【3】 printf(" The position of min is:%3d ",k); printf(" The position of max is:%3d ",j); for (i=0;i<5;i++) printf("%5d",a[i]); } 参考答案:【1】j=i【2】k=i【3】a[j]=max;a[k]=min; (六)一维数组习题课 一 复习引入 #include <stdio.h> void main() { int i; int f[20]={1,1}; for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0) printf(″\n″); printf(″%12d″,f[i]); } /*For循环结束*/ } /*程序结束*/ 二、习题讲解 1、以下对一维数组a的正确说明是 参考答案:D。 A) int n; scanf("%d",&n); int a[n]; B)int n=10,a[n]; C) int a(10); D)#define SIZE 10 int a[SIZE]; 2.若有说明:int a[10];则对数组元素的正确引用是 参考答案:D 。 A)a[10] B)a[3,5] C)a(5) D)a[10-10] 3. 在C语言中,一维数组的定义方式为:类型说明符 数组名 考答案:A A)[常量表达式] B)[整型表达式] C)[整型表达式]或[整型常量] D)[整型常量] 4下面程序有错误的行是. 1 main() 2 { 3 int a[3]={1}; 4 int i; 5 scanf("%d",&a); 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf("a[0]=%d ",a[0]); 8 } 1、 若有以下输入(数之间有空格),则下面程序的运行结果是 参考分析:本程序是删除用户所输入的所有奇数 。 7 16 5 4 6 7 9 8 3 2 4 6 12 2 -1<CR> main() {int b[51],x,i,j=0,n=0; scanf("%d",&x); while(x>-1){b[++n]=x;scanf("%d",&x);} for(i=1;i<=n;i++) if(b[i]%2==0) b[++j]=b[i]; for(i=1;i<=j;i++) printf("%3d ",b[i]);} 四、布置作业 上机练习:课堂例题 汇编练习:循环章节1-5 学科网(北京)股份有限公司 $$

资源预览图

6.1 一维数组(教学设计)- 《C语言(上)》同步教学(高教版)
1
6.1 一维数组(教学设计)- 《C语言(上)》同步教学(高教版)
2
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。