- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习C必备的经典题目!!
1、【问题描述】梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编写一个程序,计算共有多少中不同的走法【思路】看到此题目容易想到用递归的方法来做,因为递归是一种描述和解决结构自相似问题的基本算法,而N阶楼梯问题和N-1阶、N-2阶的结构完全相同。? ???解决递归问题可以分为两个部分,第一部分是一些特殊(基础)情况,用直接法解,即始基;第二部分与原问题相似,可用类似的方法解决(即递归),但比原问题的规模要小。? ???定义int count(int n)函数求解N阶楼梯的走法,基于上述思想,可知:
N阶楼梯问题的始基是N==1、N==2两种情况;
上楼可以一步上一阶,也可以一步上二阶,当上一阶时问题规模变为N-1,当上二阶时问题规模变为N-2,所以总的情况为count(n-1)+count(n-2)。
【代码】
cCODE: #includestdio.h#includestdlib.hint count(int n);/*count how many ways to climb up N steps stairs.*/int main (int argc, char *argv[]){? ? int n,ct;? ? printf(please input n:\n);? ? scanf(%d,n);? ? ct=count(n);? ? printf(there are %d ways to climb up N steps stairs!\n,ct);? ? system(PAUSE);? ? 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);} 【程序输入输出】for exampleplease input n:5there are 8 ways to climb up N steps stairs!2、【问题描述】Armstrong数具有如下特征:一个n位数等于其个位数的n次方之和。如:153=13+53+331634=14+64+34+44找出2、3、4、5位的所有Armstrong数。【思路】看到此题我第一反应是用枚举法,给定m(10=m=99999),首先判断m的位数n,然后判断它是否等于各位数的n次方之和。
定义函数int judgeDigit(int m),用于判断给定参数m的位数;
定义函数int judgeEqual(int m,int n),其中m为给定的数,n为m的位数,用于判断m是否等于各位数的n次方之和。
【代码】
cCODE: #includestdio.h#includestdlib.h#includemath.hint 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(All 2 digit to 5 digit Armstrong integers are following:\n);? ? for(i=10;i=99999;i++)? ? {? ?? ???len=judgeDigit(i);? ?? ???judgeEqual(i,len);? ?? ?? ?? ?? ? ? ? }? ? printf(\n);? ? system(PAUSE);? ? return 0;}int judgeDigit(int m){/*This function return the digit of parameter m*/? ? int len=0;? ? do? ? {? ?? ???++len;? ?? ???m=m/10;? ? }while(m); ? ? return len;}void judgeEqual(int m,int n){/*parameter m is a integer,pa
您可能关注的文档
最近下载
- 《短歌行》《归园田居(其一)》情景默写(附参考答案)--统编版高中语文必修上册.pdf VIP
- T_AHEMA 002—2020_HDPE土工膜漏点双电极法测量.pdf VIP
- 第1单元活动1 认识生活中的算法(教学课件)湘科版信息科技五年级上册.ppt
- 3DMine矿业工程软件-培训.pptx VIP
- 2024年AI面试实践手册-牛客_8705.docx
- 标志设计与品牌的关系.pptx VIP
- 新22J01《工程做法》(新疆图集).pdf VIP
- 一种用于双电极法检测土工膜渗漏的测量仪.pdf VIP
- 对外业务合作管理办法.pdf VIP
- 【中职】高教2023版 世界历史第2课 古代希腊罗马 PPT课件.pptx VIP
文档评论(0)