c语言经典题目集锦

c语言经典题目集锦

ID:15558560

大小:50.50 KB

页数:21页

时间:2018-08-04

c语言经典题目集锦_第1页
c语言经典题目集锦_第2页
c语言经典题目集锦_第3页
c语言经典题目集锦_第4页
c语言经典题目集锦_第5页
资源描述:

《c语言经典题目集锦》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言经典题目集锦本来是想写个《C语言经典题目系列》,本系列包括一些经典算法题目,但由于时间问题,现在只是收集了不多题目且只做了一部分,就先发上来了。写此目的帮助一些学c语言的人入门及运用一些算法,由于水平有限错误在所难免及本来这些题目不是很难高手就不用看了,其中错误欢迎大家指正。1、【问题描述】梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编写一个程序,计算共有多少中不同的走法【思路】看到此题目容易想到用递归的方法来做,因为递归是一种描述和解决结构自相似问题的基本算法,而N阶楼梯问题和N-1阶、N-2阶的结构完全相同。解决递归问题可以分为两个部分,第一部分是一些

2、特殊(基础)情况,用直接法解,即始基;第二部分与原问题相似,可用类似的方法解决(即递归),但比原问题的规模要小。定义intcount(intn)函数求解N阶楼梯的走法,基于上述思想,可知:N阶楼梯问题的始基是N==1、N==2两种情况;上楼可以一步上一阶,也可以一步上二阶,当上一阶时问题规模变为N-1,当上二阶时问题规模变为N-2,所以总的情况为count(n-1)+count(n-2)。【代码】cCODE:#include#includeintcount(intn);/*counthowmanywaystoclimbupNst

3、epsstairs.*/intmain(intargc,char*argv[]){intn,ct;printf("pleaseinputn:");scanf("%d",&n);ct=count(n);printf("thereare%dwaystoclimbupNstepsstairs!",ct);system("PAUSE");return0;}intcount(intn){if(1==n)return1;elseif(2==n)return2;elsereturncount(n-1)+count(n-2);}【程序输入输出】forexamplepleas

4、einputn:5thereare8waystoclimbupNstepsstairs!2、【问题描述】Armstrong数具有如下特征:一个n位数等于其个位数的n次方之和。如:153=13+53+331634=14+64+34+44找出2、3、4、5位的所有Armstrong数。【思路】看到此题我第一反应是用枚举法,给定m(10<=m<=99999),首先判断m的位数n,然后判断它是否等于各位数的n次方之和。定义函数intjudgeDigit(intm),用于判断给定参数m的位数;定义函数intjudgeEqual(intm,intn),其中m为给定的数,n为m的

5、位数,用于判断m是否等于各位数的n次方之和。【代码】cCODE:#include#include#includeintjudgeDigit(intm);/*Thisfunctionreturnthedigitofparameterm*/voidjudgeEqual(intm,intn);/*parametermisainteger,parameternisthedigitofm,thisfunctionisusedtojudgemwhetherisaArmstrongintegerandoutputit*/int

6、main(intargc,char**argv){inti,len;printf("All2digitto5digitArmstrongintegersarefollowing:");for(i=10;i<=99999;i++){len=judgeDigit(i);judgeEqual(i,len);}printf("");system("PAUSE");return0;}intjudgeDigit(intm){/*Thisfunctionreturnthedigitofparameterm*/intlen=0;do{++len;m=m/10;}while(

7、m);returnlen;}voidjudgeEqual(intm,intn){/*parametermisainteger,parameternisthedigitofm,thisfunctionisusedtojudgemwhetherisaArmstrongintegerandoutputit*/intj,temp=m,sum=0;for(j=1;j<=n;j++){sum+=(int)(pow(temp%10,n));temp=temp/10;}if(m==sum)/*ifmisequaltosum,thatistosaymisaArmstrongint

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。