- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进阶案例——寻找水仙花数
1.案例介绍
所谓“水仙花数”,是指一个3位数,也就是介于100到999之间,满足其各位数字立方和等于该数本身的数。例如,153是“水仙花数”,因为153=13+53+33。在程序设计过程中,可以采用文件包含的方式,编写3个文件,通过互相调用实现该案例。输出结果如图9.4所示。
图
图9.4 进阶案例输出结果
首先编写主函数,文件命名为test.c,并在头部加上文件包含#include test1.c,利用for循环语句控制循环从100到999多次调用daff函数。然后编写daff函数,文件命名为test1.c,并在头部加上文件包含#include test2.c,在函数体中求出某个数字的个位、十位和百位,再去调用cub函数。最后编写cub函数,文件命名为test2.c,在函数体中判断输入的数每一位数字的立方和是否等于其本身,如果满足条件,返回值1,否则返回值0。注意函数头部前面加上static,目的是其他文件中只有通过加入文件包含才能使用该函数。
具体算法如下。
① 编写主函数,利用循环语句控制循环从100到999多次调用daff函数。
② 编写daff函数,求出某数的个位、十位和百位,调用cub函数,如果接收的值为1,则打印该水仙花数。
③ 编写cub函数,如果某数各位的立方和等于其本身,则返回值1,否则返回值0。
3.项目代码
代码清单9.10:
文件test.c:
#include?stdio.h
#include?test1.c
main()
{
?????int?n;
?????printf(水仙花数有如下:\n);
?????for(n=100;n=999;n++)
?????????daff(n);
}
文件test1.c:
#include?test2.c
static?void?daff(int?n)
{
???????int?g,s,b;
???????g=n%10;
???????s=n/10%10;
???????b=n/100;
???????if(cub(g,s,b,n)==1)
?????????????printf(%d\n,n);
}
文件test2.c:
static?int?cub(int?g,int?s,int?b,int?n)
{
???????if(g*g*g+s*s*s+b*b*b==n)
?????????????return?1;
???????else
?????????????return?0;
}
文档评论(0)