- 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
您可能关注的文档
最近下载
- 《心理健康讲座》ppt课件(图文).pptx
- 初中英语话剧7-8个人物的剧本.doc VIP
- 鲁教版五四制八年级上册生物 第七单元 第一章 动物的主要类群 练习题(无答案).doc VIP
- [人教版小学五年级上册美术教案.doc VIP
- 《中华人民共和国放射性污染防治法》知识培训.pptx VIP
- 二年级上册劳动技术教案(详).docx VIP
- 第2课 使用数字设备 教案 义务教育人教版信息科技三年级全一册.docx VIP
- DLT5161表格大全(电气装置安装工程质量检验和评定规程).pdf VIP
- 初中数学综合实践活动课教学策略研究.pptx VIP
- 六年级语文上册第二单元教材分析+说课.pptx VIP
文档评论(0)