第5章江苏省二级C语言等级考试算法考点精解(初稿).docVIP

第5章江苏省二级C语言等级考试算法考点精解(初稿).doc

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章江苏省二级C语言等级考试算法考点精解(初稿)

第5章 算法考点精解 前面两章讨论了C语言的基本概念、基本语句、程序结构、各种数据类型、函数、指针、链表、文件等与语法相关的内容,本章主要针对江苏省二级C等级考试中经常出现的算法进行归纳总结,包括基本操作、非数值计算常用经典算法、数值计算常用经典算法、解决各类问题的一般算法。 算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。形成解题思路是推理实现的算法,编写程序是操作实现的算法。 在计算机的等级考试题目中,程序填空及上机编程题一般都与算法有关,所以要了解等级考试大纲中规定的算法并掌握常考算法。 5.1 基本操作 一、知识点综述 1.交换 (*****) 变量交换算法是一种很简单的算法,也是最为基础的一个算法,各种其他的算法往往都要运用到这一基本算法,如各种排序算法就会使用到交换变量的算法。 实现变量的值的交换最常用的方法是借助一个临时变量来实现将两个数的值进行交换。下面的函数实现了两个数的交换。 void swap(int x, int y) { int temp; temp=x; x=y; y=temp; } 因为函数参数的传递是值传递,是单向的,如果主函数调用了此函数,尽管形式参数x和y的值交换了,而主函数中的实际参数是不会改变的。要想实现地址传递,应该用指针实现。 void swap(int *x, int *y) { int temp; temp=*x; *x=*y; *y=temp; } 函数调用时将实参的地址传递给指针x和y,例如:swap(a, b);实现x和y指向的地址单元的值的交换,即a和b的值的交换。 2.累加 (*****) 累加就是对若干个数求和,其最基本的思想就是“反复做加法”。一般来说,计算机每次只处理两个数的相加运算,所以多个数相加必须通过多次的两两相加来实现,用循环就很容易实现数的累加。 使用循环时,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示最后结果的初值。 用c语言实现1+2+3+4+5+……+n的累加。 【方法1】for循环实现 int add(int n) { int i,sum=0; for(i=1;i=n;i++) sum=sum+i; return sum; } 【方法2】while循环实现 int add(int n) { int i,sum; sum=0; i=1; while(i=n) { sum=sum+i i=i+1; } return sum; } do-while循环也可以实现累加。请读者自己完成。 3.累乘 (*****) 累乘就是对若干个数求积,其最基本的思想就是“反复做乘法”,实际上就是求一个数的阶乘,实现方法与累加类似在累乘之前,一定要将用于存放乘积的变量的值初始化为1。 用c语言求n的阶乘:n! = 1(2(3(4(…(n (n=0) int product (int n) { int i,p=1; for(i=2;i=n;i++) p=p*i; return p; } 如果n的值比较大,考虑累乘的结果可能会超过32767,函数返回值应定义为长整型,确保程序运行的正确。 long func(int n) { int i; long p=1; for(i=2;i=n;i++) p*=i; return p; } 5.2 非数值计算常用经典算法 一、知识点综述 1.穷举 (***) 穷举法的基本思想是:一一列举各种可能的情况,并判断哪一种可能是符合要求的解。这是一种在“没有其它办法的情况的方法”,是一种最“笨”的方法,然而对一些无法用解析法求解的问题往往能奏效,通常采用循环来处理穷举问题。 【例题】有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 main() { int i,j,k; for(i=1;i5;i++)    /*以下为三重循环*/  for(j=1;j5;j

文档评论(0)

kakaxi + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档