【C语言】输出100~999之间的所有“水仙花数”

  “水仙花数”
  “水仙花数”又称为“阿姆斯特朗数”。如果一个n(n≥3)位数的各位数字的n次幂之和等于该数本身,则该数称为“水仙花数”。如:153=1³+5³+3³。
  问题:输出100~999之间的所有“水仙花数”。
  实现思路:
  根据“水仙花数”的特点分析不难发现,只要拿到某个三位数(定义一个变量m,初始值设为100)的各位数字,再进行判断它们的立方和是否等于m,若等于,则输出m,否则,m自增1。上述过程是一个循环,只要m<=999,循环继续执行。
  下面讨论m的各位数字如何获得。首先需要定义三个变量i,j,k,分别记录m的各位数字。
  对于一个三位数m,其百、十、个位数字为i,j,k,则可知:i *100+j *10+k *1=m
  百位数(i):因为m为一个三位数,所以m/100等于其百位数字。
  十位数(j):若对m有m/10,则可以得到m的百位和十位组成的一个两位数,如:123/10=12。再用这个两位数减去i*10,便得到了十位数字j。
  个位数(k):上面已经得到m的百位和十位,易得个位数为m-i*100-j *10。
  程序代码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i, j, k;
    int m = 100;
    while (m<=999)
    {
        i = m / 100;
        j = m / 10 - i * 10;
        k = m - 100 * i - 10 * j;
        if (m == i*i*i + j*j*j + k*k*k)
            printf("%d\n", m);
        m++;
    }
    system("pause");
    return 0;
}

  输出结果:
  这里写图片描述
  于是,100~999范围内(三位数中)的“水仙花数”得到:153,370,371,407。
  注:此题也可以用for循环来实现

  • 32
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值