第4章数组和结构讲述.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章数组和结构讲述

C语言程序设计 第四章 数组和结构 四、数组和结构 教学目标: 数组的概念、定义和初始化 筛法的解题思路 冒泡排序的思路 字符数组 结构与结构数组 四、数组和结构 4.1 数组 任务4.1 半期考试结束了,教师想看看C语言这门课程的最高分,以及有哪几位同学得到了这个最高分。试编程解决这个问题,为简单起见,假设班上共有10人。 任务4.1程序框图 4.1.1 一维数组的定义 一维数组定义的形式如下: 类型说明符 数组名[常量表达式] 例如: int score[10]; double a2[1000]; 说明: (1)数组名的命名规则与变量名的相同 (2)用方括号将常量表达式括起 (3)常量表达式定义了数组元素的个数 (4)数组下标从0开始,如果定义5个元素,是从第0个元素到第4个元素。 (5)常量表达式中不允许包含变量,如int a[n]; 4.1.2 数组初始化 1.定义同时初始化 将初值放在一对大括号中。 对所有元素赋初值。 如int score[3]={78,89,98}; 对部分元素赋初值。 如int score[5]={78,89,98};前5个元素有初值 若定义数组时省略数组长度,则系统根据初值的个数自动确定数组元素个数。 如 int score[]={78,89,98}; 相当于 int score[3]={78,89,98}; 4.1.2 数组初始化 2. 定义之后初始后 此时只能对一个一个的数组元素进行赋值 如 int score[3]; score={78,89,98}; 是错误的初始化方法 int score[3]; score[0]=78; score[1]=89; score[2]=98正确 3.例4.1 程序4_2.cpp 4.1.3 一维数组元素的引用 同变量一样,数组也必须先定义,再引用 只能引用单个的数组元素,不能引用整个数组 每个数组元素都相当于一个普通变量 数组引用法 数组名[下标] 其中下标可以是常量、变量或表达式 例:int a[5] a[2],a[4],a[2-1],均正确 但a[5],a[-1]则不正确,但C语言编译时不会提示,只在运行时才可能出错, 因此对数组元素的引用一定要谨慎 4.1.4 一维数组的存储方式 数组在内存中占据连续的字节单元; 数组占据的字节单元数等于数组元素个数乘以该数组所属数据类型的数据占据的字节单元数。 数组元素按顺序连续存放。 如: short a[10]; 则该数组在内存中共占据连续的 2×10=20个字节单元,依次保存 a[0]、a[1]、 …、a[9] 共10个元素。 4.1.5 一维数组程序举例 任务4.2 使用筛法求200以内的所有素数。 思路: 想象将200个数看作沙子和小石子,让小石子充当素数,让沙子当作非素数。弄一个筛子,只要将沙子筛走,剩下的就是素数了。 非素数一定是2、3、4、5等的倍数。使用数组,其下标就是100以内的数,让数组元素的值为1或0,作为筛去与否的标志,筛去后的元素值为1,见下图 任务4.2 筛法依据 方法的依据: 1到200这些自然数可以分为3类: (1)单位数,即1 (2)素数,大于1,且只能被1和它自身整除 (3)合数,除了1和自身,还有其他正因子 筛法实际上是筛去合数,留下素数 为了提高筛法效率,注意到: 如n为合数(这里是200),c为n的大于1的最小正因数,则 筛法求素数的程序框图 4.1.5 一维数组程序举例 任务4.3 给定由6个整数组成的序列{2, 8, 4, 3, 5, 9},将其按从大到小的顺序排列,并输出。 要完成这个任务,需要进行排序,排序算法很多,王小二找了很多资料,决定选用较简单,又很典型的冒泡排序法。 下图画出了使用冒泡排序法对这6个数进行排序的过程。 冒泡排序法图示 冒泡排序法图示 (4)第一遍扫描完成后,a[5]最小,以后的扫描不需再与a[5]比较 (5)第二遍扫描后,a[4]位置已定,以后也不需再与a[4]交换 以此类推每遍扫描后都有一个元素的位置已定,以后不需再与之进行比较 冒泡排序算法设计 为了表述方便,定义以下3个变量 (1)待排序的数的个数n(此处为6) (2)扫描遍数j(j=1,2,3,…n-1) (3)每遍扫描时待比较元素的下标i(i=1,2,3,…n-j) 算法步骤如下 (1)将待排序的数据放入数组中 (2)让j从1到n-1循环做步骤(3)(每遍扫描的循环) (3)让i从1到n-j做步骤(4)(依次比较两个相邻数组元素,以确定是否交换) (4)如果a[i]a[i+1],则交换之 (5)输出排序结果 冒泡排序的NS图 任务4.3 冒泡排序 练习 (1)上机运行此程序,并输入一些不同的序列试试 (2)如

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档