C语言经典题目及解题思路.doc

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

C语言经典题目及解题思路 本来是想写个《C语言经典题目系列》,本系列包括一些经典算法题目,但由于时间问题,现在只是收集了不多题目且只做了一部分,就先发上来了。写此目的帮助一些学c语言的人入门及运用一些算法,由于水平有限错误在所难免及本来这些题目不是很难高手就不用看了,其中错误欢迎大家指正。 1、 【问题描述】梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编写一个程序,计算共有多少中不同的走法 【思路】看到此题目容易想到用递归的方法来做,因为递归是一种描述和解决结构自相似问题的基本算法,而N阶楼梯问题和N-1阶、N-2阶的结构完全相同。 解决递归问题可以分为两个部分,第一部分是一些特殊(基础)情况,用直接法解,即始基;第二部分与原问题相似,可用类似的方法解决(即递归),但比原问题的规模要小。 定义int count(int n)函数求解N阶楼梯的走法,基于上述思想,可知: [list][*]N阶楼梯问题的始基是N==1、N==2两种情况;[*]上楼可以一步上一阶,也可以一步上二阶,当上一阶时问题规模变为N-1,当上二阶时问题规模变为N-2,所以总的情况为count(n-1)+count(n-2)。[/list]【代码】 [table=98%][tr][td]cCODE: [/td][/tr][tr][td]#includelt;stdio.hgt; #includelt;stdlib.hgt; int count(int n); /*count how many ways to climb up N steps stairs.*/ int main (int argc, char *argv[]) { int n,ct; printf(quot;please input n:\nquot;); scanf(quot;%dquot;,amp;n); ct=count(n); printf(quot;there are %d ways to climb up N steps stairs!\nquot;,ct); system(quot;PAUSEquot;); return 0; } int count(int n) { if(1==n) return 1; else if(2==n) return 2; else return count(n-1)+count(n-2); }[/td][/tr][/table]【程序输入输出】for example please input n: 5 there are 8 ways to climb up N steps stairs! 2、 【问题描述】Armstrong数具有如下特征:一个n位数等于其个位数的n次方之和。如: 153=13+53+33 1634=14+64+34+44 找出2、3、4、5位的所有Armstrong数。 【思路】看到此题我第一反应是用枚举法,给定m(10lt;=mlt;=99999),首先判断m的位数n,然后判断它是否等于各位数的n次方之和。[list][*]定义函数int judgeDigit(int m),用于判断给定参数m的位数;[*]定义函数int judgeEqual(int m,int n),其中m为给定的数,n为m的位数,用于判断m是否等于各位数的n次方之和。[/list]【代码】 [table=98%][tr][td]cCODE: [/td][/tr][tr][td] #includelt;stdio.hgt; #includelt;stdlib.hgt; #includelt;math.hgt; int judgeDigit(int m); /*This function return the digit of parameter m*/ void judgeEqual(int m,int n); /*parameter m is a integer,parameter n is the digit of m,this function is used to judge m whether is a Armstrong integer and output it*/ int main (int argc, char **argv) { int i,len; printf(quot;All 2 digit to 5 digit Armstrong integers are following:\nquot;); for(i=10;ilt;=99999;i++) { len=judgeDigit(i); judgeEqual(i,len); } printf(quot;\nquot;);

文档评论(0)

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

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

1亿VIP精品文档

相关文档