当前位置:嗨网首页>书籍在线阅读

05-输出水仙花数

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

13.4 输出“水仙花数”

问题描述

19.png 输出“水仙花数”。“水仙花数”是指这样的一个3位数,其各位数字的立方和等于该数本身。例如,因为153=13+53+33,所以153是一个“水仙花数”。

【分析】

(1)列举出所有的候选解,即100~999的所有整数。代码如下。

for(n=100;n<1000;n++)

(2)依次求出每个候选解的百位、十位、个位上的数字。代码如下。

  i=n/100;            /*百位上的数字*/
  j=n/10%10;          /*十位上的数字*/
  k=n%10;             /*个位上的数字*/

(3)判断候选解是否是所求的解。如果是,则输出候选解。代码如下。

  if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
      printf("%5d",n);
第13章\实例13-04.c
/********************************************
*实例说明:输出“水仙花数”
*********************************************/
1  #include<stdio.h>
2  void main()
3  {
4      int i,j,k,n;
5      printf("水仙花数是");
6      for(n=100;n<1000;n++)
7      {
8          i=n/100;            /*百位上的数字*/
9          j=n/10%10;          /*十位上的数字*/
10         k=n%10;             /*个位上的数字*/
11         if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
12                printf("%5d",n);
13     }
14     printf("\n");
15 }

运行结果如图13.5所示。

373.png

图13.5 运行结果

【说明】

第6行枚举每个候选解,范围是100~999。

第8行求出每个候选解的百位上的数字。

第9行求出每个候选解的十位上的数字。

第10行求出每个候选解的个位上的数字。

第11~12行判断候选解是不是所求解。如果是,则输出候选解。