第五章数组教学提纲

上传人:yuzo****123 文档编号:141581679 上传时间:2020-08-10 格式:PPT 页数:34 大小:216KB
返回 下载 相关 举报
第五章数组教学提纲_第1页
第1页 / 共34页
第五章数组教学提纲_第2页
第2页 / 共34页
第五章数组教学提纲_第3页
第3页 / 共34页
第五章数组教学提纲_第4页
第4页 / 共34页
第五章数组教学提纲_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《第五章数组教学提纲》由会员分享,可在线阅读,更多相关《第五章数组教学提纲(34页珍藏版)》请在金锄头文库上搜索。

1、1,第五章 数组,5.1 内存静态分配,5.3 一维数组的访问,5.2 一维数组,5.4 一维数组的遍历,5.5 二维数组,5.6 数组的表示法,5.7 稀疏矩阵,5.1 内存静态分配,C语言的内存静态分配是指在编译的阶段,就已经分配内存空间给声明的内存变量。如, int data100; 优点? 不足?,2,2.2 一维数组,格式: 数据类型 变量名称长度; 例如: int score5; (int 占用2个字节) float average5 (float 占用 4个字节),3,2.2 一维数组,sizeof(struct grade) ; / 结构占用空间 三个结构元素均为整数型,所以它

2、的大小为: 2*3=6,5,6,/* = */ /* 程序实例: 2_2a.c */ /* 输入英语成绩和计算平均成绩 */ /* = */ int main() int score10; /* 学生成绩阵列 */ int i; int num; /* 学生人数 */ int sum; /* 成绩总分变量 */ float ave; /* 平均成绩变量 */ sum = 0; /* 设置总分初值 */ printf(“请输入学生人数.(小于10) = ); scanf(%d, ,该程序(2_2a.c)只能用来计算单科的平均成绩; 下个程序使用结构数组计算各科的平均值。,7,8,/* = */

3、/* 程序实例: 2_2b.c */ /* 输入各科成绩和计算各科平均成绩 */ /* = */ int main() struct grade /* 成绩结构声明 */ int math; /* 数学成绩 */ int english; /* 英语成绩 */ int computer; /* 电脑成绩 */ ; struct grade student5; /* 结构数组变量声明 */ int i; int num; /* 学生人数 */ int m_sum,e_sum,c_sum; /* 各科成绩总分变量 */ float m_ave,e_ave,c_ave; /* 各科平均成绩变量 */

4、 m_sum = e_sum = c_sum = 0; /* 总分初值 */ printf(请输入学生人数.(小于5) = ); scanf(%d, /* 读取学生人数 */,9,/* = */ /* 程序实例: 2_2b.c */ /* 输入各科成绩和计算各科平均成绩 */ /* = */(续前一页) for ( i = 0; i ,i + 1); scanf(%d, / main,5.3 一维数组的访问,数组结构可以随机访问元素内容 即,数据保存于数组之中,只需花费固定的时间可以访问它的内容。 例如:使用长度10的数组保存学生的成绩,数组的索引值就是每位学生的学号。这样很容易查询学生成绩或

5、更改学生成绩。,10,11,/* = */ /* 程序实例: 2_3.c */ /* 用学生编号来查询或修改成绩 */ /* = */ int main() int score10 = 76, 85, 90, 67, 59, 79, 82, 95, 91, 65 ; /* 学生成绩数组 */ int num; /* 学生学号变量 */ int grade; /* 学生成绩变量 */ int select; /* 选项 */ while ( 1 ) printf(操作选项:n); /* 输出菜单 */ printf(1: 查询成绩n); printf(2: 修改成绩n); printf(3: 退

6、出操作n); printf(请输入选项( 1 到 3 ). = ); scanf(%d, /* 读入作业选项 */,12,if ( select != 3 ) printf(请输入学生学号( 0 到 9). = ); scanf(%d, / main,程序说明,上述程序使用菜单选择处理的操作,输入3可以结束程序的运行。 这是一个简单的数组访问应用,只需稍微地扩充一下,它就可以变成一个小型的成绩管理系统。,13,5.4 一维数组的遍历,除了直接使用数组索引值访问数组的内容外,另外一个途径就是“遍历(Traverse)”。 数组遍历是循序的移动数组索引并处理每一个元素,就如同使用地毯式的搜索全部数

7、组元素。 继续使用上一节成绩数组,如果想查找59分的学生,并且吧第一位找到的学生学号输出来,这就是遍历的运用。,14,15,/* = */ /* 程序实例: 2_4a.c */ /* 用学生成绩来查询学号 */ /* = */ int main() int score10 = 76, 85, 90, 67, 59, 79, 82, 95, 91, 65 ; /* 学生成绩数组 */ int num; /* 学生学号变量 */ int grade; /* 学生成绩变量 */ int i; num = -1; /* 设置学号初值 */ printf(请输入学生成绩( 0 到 100). = );

8、scanf(%d, ,5.5 二维数组,一维数组的扩充 例如: int course65; 数组的大小 6*5=30 下面给出一个例子: 查询上课的课目,16,17,/* = */ /* 程式实例: 2_5a.c */ /* 查询上课的课目,其中课程以代码表示. */ /* 0 表示没课 */ /* 1 表示计算机概论 */ /* 2 表示离散数学 */ /* 3 表示资料结构 */ /* 4 表示资料库概论 */ /* 5 表示上机实习; */ /* 二维数组表示矩阵,注意行和列的实际意义 */ /* = */ int main() int course65 = 0, 2, 0, 2, 0,

9、 /* 课程定义 */ 1, 4, 1, 4, 1, 5, 0, 5, 0, 5, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0 ; int week; /* 星期资料变数 */ int class; /* 第几节课的变数 */ int class_no; /* 课程代码变数 */,18,printf(请输入星期(1 到 5). = ); scanf(%d, ,程式实例: 2_5a.c 说明,使用二维数组存储课程表,并且运用代码表示每一门课程,如果没有这节课,数组的内容就是0. 二维数组和一维数组相同,只要访问的元素的列和行值,就可以在固定的时间内访问

10、其内容。同理,二维数组的遍历也可以轻易完成。,19,20,/* = */ /* 程式实例: 2_5b.c */ /* 计算出一星期的课程总数 */ /* = */ int main() int course65 = 0, 2, 0, 2, 0, /* 课程定义 */ 1, 4, 1, 4, 1, 5, 0, 5, 0, 5, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0 ; int sum; /* 课程总数 */ int i,j; sum = 0; /* 设定课程总数初值 */ for ( i = 0; i 6; i+ ) /* 二维阵列的走访 */

11、for ( j = 0; j 5; j+ ) if ( courseij != 0 ) /* 检查有没有课 */ sum+; printf(课程总数: %dn,sum); /* 印出课程总数 */ return 0; ,程式实例: 2_5b.c 说明,使用双层循环来作为二维数组的遍历。 不论二维或三维数组,甚至更多维的数组,都是由一维数组循序扩充而得到。,21,5.6 数组的表示法,以行为主或列为主的表示方法。 使用指针数组,22,5.6.1 以行为主或以列为主的表示方法,任何维数的数组都可以使用一维数组来表示。 例如: int class30; int class56; int class6

12、5;,23,24,/* = */ /* 程式实例: 2_6_1a.c */ /* 计算出一星期的课程总数.(以列为主) */ /* = */ #define ROW 6 /* 定义列数 */ #define COLUMN 5 /* 定义行数 */ int main() int class30 = 0, 2, 0, 2, 0, /* 课程定义 */ 1, 4, 1, 4, 1, 5, 0, 5, 0, 5, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0 ; int sum; /* 课程总数 */ int i,j; sum = 0; /* 设定课程总数初值 */ for ( i = 0; i 6; i+ ) /* 阵列的走访 */ for ( j = 0; j 5; j+ ) if ( classi*COLUMN+j != 0 ) /* 检查有没有课 */ sum+; printf(课程总数: %dn,sum); /* 印出课程总数 */ return 0; ,25,/* = */ /* 程式实例: 2_6_1b.c */ /* 计算出一星期的课程总数.(以行为主) */ /* = */ #define ROW 6 /* 定义列数 */ #defin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号