




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 第8章 数组 n一维数组的声明、初始化和使用 n数组的运算、作为函数参数的使用 n字符串 、多维数组 Date1华中科技大学计算机学院 8.1 数组概述 n程序=算法+数据结构 nPASCAL程序设计语言发明者Niklaus Wirth曾经说过 n简单数据类型的变量 n仅能描述一个单独的数据 n描述能力十分有限 n如何描述一群有联系的数据集合? n数组 n属于构造类型 n是相同数据类型数据的集合 n元素 n组成数组的这些数据 n任何类型(简单类型、构造类型) Date2华中科技大学计算机学院 8.1 数组概述 n数组特点 n其所有元素数目固定 n其所有元素类型相同 n其所有元素顺序存放 n数组作用 n集中管理 n将相关的同类型数据集中用一个标识符(数组名)表示 n元素顺序存放,但可随机定位 n用若干个数字序号(下标)来区别各数组元素 n例如定义float score30,可表述30位学生成绩 n用数组具有什么好处? Date3华中科技大学计算机学院 8.1 数组概述 n问题 n计算全班30位同学某门课程的平均成绩 n解决方法 n设置30个float型变量来记录成绩 n设置一个有30个float型元素的数组来记录成绩 n问题分析 n参与运算的平均成绩,其数据类型都相同(符合数组特点) n30位同学属于一个班,用数组可把30个成绩表示成一个整体 n用数组的优点 n便于循环处理 n提高效率,便于书写、检查、修改(对海量数据效果更明显) Date4华中科技大学计算机学院 8.2 一维数组 n维数 n标识一个数组元素所需要使用的下标的个数 n一维数组 n只有一个下标 n可用于表示一个线性的数据队列 n 使用数组的要求 n先声明数组 n对它进行初始化,然后才能使用 Date5华中科技大学计算机学院 8.2.1 一维数组的声明 n要解决三个问题 n确定数组的数据类型 n给数组定义一个名字,以便在程序中使用 n指明数组的大小,即数组中元素的个数 n声明形式 n存储类型说明符 类型修饰符 类型说明符 数组 名常量表达式=初值表; n存储类型说明符:extern、static n类型修饰符:const、volatile n数组名:是一个标识符,是一个地址常量,用以表 示数组中打头元素的地址 Date6华中科技大学计算机学院 8.2.1 一维数组的声明 n例8.1 具有基本数据类型的一维数组的声明 n#define SIZE 10 nint array5; ndouble d5,eSIZE; nchar nameSIZE*5; n 错误例子 nunsigned int size; nchar strsize,buffer2*size; n 错误原因 n数组的大小一经说明就不能改变 n长度说明不是常量表达式,在编译之前就必须明确确定 Date7华中科技大学计算机学院 8.2.1 一维数组的声明 例8.2 采用类型修饰符的一维数组的声明 nstatic int y10; n数组y中的每一个成员都是静态整型成员 nextern double s2; n作了一个外部双精度型数组的引用性声明 n应该在另外的源文件中通过double s2;来定义s 数组,这样第2个声明语句才有意义 Date8华中科技大学计算机学院 8.2.2 一维数组的使用 nC提供的各种操作符 n针对基本数据类型的变量 n数组 n是构造数据类型 n但其元素是基本数据类型的变量 n访问数组 n不需设计专门的数组操作符 n方法:数组名下标表达式 n例int a5, j=2; n5个元素依次是a0,a1,a2,a3,a4 naj+2 、a+j 、aj-、a5*j-7 n错误写法:aj-3 、a2*j+1 Date9华中科技大学计算机学院 例8.3 使用一维数组计算学生 的平均成绩。 n#include stdio.h nvoid main(void) n n int score30,i,sum=0; n double average; n printf(“input the scores please:n“); n for(i=0;i=n-1 一遍循环中未发生交换,即已排 好序 Date26华中科技大学计算机学院 例8.12 冒泡排序 1.void bubble_sort(int a,int n) /* 形参用形式数组a */ 2. 3.int i,j,t,k; int flag=1; 4.for(i=0; (iaj+1) /* 对两两相邻的元素进行比较 */ 9. t=aj, aj=aj+1, aj+1=t; 10. flag=1; 11. 12. 13. Date27华中科技大学计算机学院 8.3 字符数组 8.3.1 字符数组的声明和使用 n字符数组 n元素的数据类型为char或wchar_t n声明格式 n与前面讨论的一维数组相同 nchar s81; n字符串 n用一对双引号界定的一个字符序列 nC语言没有规定字符串类型 n用一个字符数组来存放字符序列,并且在末尾加一个空字 符0来构造字符串 Date28华中科技大学计算机学院 8.3 字符数组 字符串的存储 字符串的长度 字符串的长度 = 字符串的存储长度1 设计字符数组的最小长度 应该等于该字符串的存储长度 或字符数组的最小长度应该等于该字符串的长度加1 字符数组的使用 通过下标来访问字符数组中的具体字符元素 W u h a n 0 Date29华中科技大学计算机学院 1.#include “stdio.h“ 2.void main(void) 3. char Capital27,Lowercase27; 4. int i, delt=a-A; 5. Capital0= A; 6. Lowercase0=Capital0+delt; 7. for(i=1;i0?“great 12. then“:strcmp(s1,s2)0?“great 14. then“:strcmp(s1,s3)0?“great 16. then“:strcmp(s1,s4)0) 7.sj+=n%BASE+0; 8.n/=BASE; 9.if(sign=0 4. while(frontamiddle) 9.front=middle+1; /*查找单元变成原来的后半部*/ 10. else 11.return (middle); /* 找到,返回下标 */ 12. 13.return -1; /* 没有找到,返回-1 */ Date62华中科技大学计算机学院 例8.29 二分查找函数 14.void main(void) 15. 16.int x=1,3,5,7,9,11,13,15,17,19,index; 17.index=BinarySearch(x,11,10); 18.if(index!=-1) 19.printf(“find %d!n“,xindex); 20.else 21.printf(“not find!n“); 22. n程序的运行结果是: find 11! Date63华中科技大学计算机学院 8.6.3 选择法排序 122-2156789-1234 假设有下面的8个整数构成的数组 算法思想 首先找出数组内8个元素中最小的元素 然后将它与第一个元素(下标为0)交换 再在剩余的后续7个元素中找出最小的元素,再将它与第二个 元素(下标为1)交换 余以类推,直到在最后剩余的两个元素中找出较小者并将较 大者放在最后(下标为7)为止 Date64华中科技大学计算机学院 例8.30 用选择法进行排序 1.#include “stdio.h“ 2.int f_small(int a, int begin, int end) /*在begin与end之间找 最小数*/ 3. int i, p=begin; 4. for(i=begin; i=end; i+) 5. if(aiap) 6.p=i; 7. return p; 8.void sel_sort(int a, int n) 9. /*排序函数*/ 10. int cur, index, t; 13. for(cur=0;curn-1;cur+) 14. index=f_small(a,cur,n -1); 13. if(index!=cur) 14. t=acur, acur=ain dex, ain
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数控线切割操作工应知考核试题及参考答案
- 2025年教育行业教育信息化建设报告:教育信息化建设策略与实施
- 2025年教师信息技术与课程整合应用研究报告
- 2025年文化与娱乐产业跨界合作案例分析报告
- 2025年物联网设备安全漏洞应对与防护策略深度解读报告
- 押题宝典执业药师资格证之《西药学专业二》试题附答案详解【b卷】
- 解析卷沪科版9年级下册期末试题含答案详解(考试直接用)
- 2025年农业科技产品区域代理合作协议书
- 2025年度酒店客房清洁外包服务承包合同
- 2025年度高品质桶装水配送服务及运输合作协议
- 2025年村级动物防疫员考试题及答案
- 公务用车安全知识培训课件
- 充电桩行业知识培训总结课件
- 免疫性脑炎护理查房
- 2025年卫生人才面试题目及答案
- 2025年医保政策解读与实务操作:考试题库(含答案)
- 视频内容审核技术-第1篇-洞察阐释
- 物业管理法律法规
- 监理临时用电管理办法
- 禅绕画介绍课件
- 电子支付安全课件
评论
0/150
提交评论