学习C++必备的经典题目!!.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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.h int 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 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(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.h 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(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

文档评论(0)

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

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

1亿VIP精品文档

相关文档