- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数组--习题讲解概要
数组 沈标标 2014-12-19 知识点 数组的定义、初始化、引用方法 与数组相关的常用算法(如冒泡排序、选择排序和二分查找法等) 重点理解算法思想,编写程序时注意数组下标临界值 字符数组的概念和字符串处理函数的编写和使用 注意:对于字符数组的处理,建议在最后加上’\0’,便于统一处理; 区分sizeof和strlen 数组作为函数参数和调用函数处理数组 知道如何将数组作为函数参数进行传递 特性(vs 链表) 所有元素按行优先规则连续存储 随机存取 不适用于插入、删除操作较多的情况 部分习题分析 数组基本操作: 向数组中插入一个元素 注意:移动元素时从最后一个元素开始自右向左往后移动 插入排序 从数组中删除一个元素 移动元素时从要删除元素之后的那个元素开始自左向右往前移动 部分习题分析 字符串基本操作: udf_strcat(s,t):实现两个字符串连接(将t连接到s上) 注意: 首先要保证s数组的空间足够大到可以容纳s和t中的所有字符+1 区别sizeof(t)和strlen(t) 字符串连接操作结束后,记得在新s之后的最后一个元素加上’\0’ udf_strcpy(d,s):实现字符串复制(将s复制到d上) 注意: 保证d数组的空间可以容纳s数组中的所有字符 字符串查找 如“how are you”中查找”are”的位置 部分习题分析 随机数 C语言中用于产生随机数的随机函数rand(),包含在头文件stdlib.h中 rand()函数可以生成0~RAND_MAX之间的一个随机数,对于一个特定的随机种子,rand()产生的随机序列是确定的,故其产生的不是实际意义上的随机数,而是伪随机数 srand()函数用于改变随机生成器的随机种子,只要随机种子不同,rand()函数对应的随机序列即不同 对srand()的两种常用方法: 取时间作为种子,srand((unsigned)time(NULL)) 选取一个任意值给定,scanf(“%d”,seed);srand(seed); 因为rand()函数产生数的范围较大,故平时使用可借助求余操作生成指定范围内的随机数,如rand()%100,产生0~100以内的随机数 部分习题分析 约瑟夫问题 使用数组求解 方法一:每找到第m个数,删除那个数,并将后面的所有数字往前移 方法二:没找到第m个数,将数组该位置的数置为0,下次再遍历时跳过数组元素值为0的元素 因为数组删除需要移动大量元素,因此,方法二较好 使用链表求解 链表每访问一个元素需要从头顺序遍历,而删除操作不需要移动元素,故对链表来说,方法一更好 实验问题总结 格式化输入输出问题 因为浮点数、整数等在计算机中存储方式不同,故设计输入输出时一定要对应 int - %d、%i, float - %f, double -%lf … 输入时忘记取地址符 scanf(“%d”,a) - scanf(“%d”,a); 容易造成非法地址访问的错误 实验问题总结 数组使用 数组使用必须先初始化再使用 在编写选择、冒泡等排序算法时注意临界处数组下标是否越界,否则也会出现非法地址访问的错误 实验问题总结 编码风格 程序写出来是给别人看的,所以缩进、注释等等都要注意
文档评论(0)