[保留]C语言经典题目及解题思路,持续更新中。。。.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:44 大小:133KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

[保留]C语言经典题目及解题思路,持续更新中。。。.doc

[保留]C语言经典题目及解题思路,持续更新中。。。.doc

预览

免费试读已结束,剩余 34 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

[保留]C语言经典题目及解题思路,持续更新中。。。http://www.chinaunix.net作者:HYPERLINK"http://bbs.chinaunix.net/viewpro.php?uid=21220515"\t"_blank"吴秦发表于:2009-08-0113:55:58【HYPERLINK"http://bbs.chinaunix.net/post.php?action=reply&fid=23&tid=1493809"\t"_blank"发表评论】【HYPERLINK"http://bbs.chinaunix.net/viewthread.php?tid=1493809"\t"_blank"查看原文】【HYPERLINK"http://bbs.chinaunix.net/forumdisplay.php?fid=23"C/C++讨论区】【HYPERLINK"javascript:window.close()"关闭】本来是想写个《C语言经典题目系列》,本系列包括一些经典算法题目,但由于时间问题,现在只是收集了不多题目且只做了一部分,就先发上来了。写此目的帮助一些学c语言的人入门及运用一些算法,由于水平有限错误在所难免及本来这些题目不是很难高手就不用看了,其中错误欢迎大家指正。1、【问题描述】梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编写一个程序,计算共有多少中不同的走法【思路】看到此题目容易想到用递归的方法来做,因为递归是一种描述和解决结构自相似问题的基本算法,而N阶楼梯问题和N-1阶、N-2阶的结构完全相同。解决递归问题可以分为两个部分,第一部分是一些特殊(基础)情况,用直接法解,即始基;第二部分与原问题相似,可用类似的方法解决(即递归),但比原问题的规模要小。定义intcount(intn)函数求解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]#include<stdio.h>#include<stdlib.h>intcount(intn);/*counthowmanywaystoclimbupNstepsstairs.*/intmain(intargc,char*argv[]){intn,ct;printf("pleaseinputn:\n");scanf("%d",&n);ct=count(n);printf("thereare%dwaystoclimbupNstepsstairs!\n",ct);system("PAUSE");return0;}intcount(intn){if(1==n)return1;elseif(2==n)return2;elsereturncount(n-1)+count(n-2);}[/td][/tr][/table]【程序输入输出】forexamplepleaseinputn: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次方之和。[list][*]定义函数intjudgeDigit(intm),用于判断给定参数m的位数;[*]定义函数intjudgeEqual(intm,intn),其中m为给定的数,n为m的位数,用于判断m是否等于各位数的n次方之和。[/list]【代码】[table=98%][tr][td]cCODE:[/td][/tr][tr][td]#include<stdio.h>#include<stdlib.h>#include<math.h>intjudgeDigit(intm);/*Thisfunctionreturnthedigitofparameterm*/voidjudgeEqual(intm,intn);/*parametermisainteger,parameternisthedigitofm,thisfunctionisusedtojudgemwhetherisaArmstrongintegerandoutputit*/intmain(inta