水仙花数(C的一道题)

题目来源http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=39

描述
请判断一个数是不是水仙花数。
其中水仙花数定义各个位数立方和等于它本身的三位数。

输入
有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)
输入0表示程序输入结束。

输出
如果n是水仙花数就输出Yes
否则输出No

上传者
张云聪

分析:
1.是多组测试示例,以0位结束标志
2.求得每一位上的数字
3.进行立方和计算,判断是否和原数相等
4.三位数才是水仙花数
5.注意大小写

代码


#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
  int a,b,i,j,k;
  while(scanf("%d",&a)!=EOF)//如果该数不是零,进行判断是否是水仙花数
  {
      if(a)//该数不为0
      {
        k=a%10;     //取得个位上的数字
        i=a/100;    //取得百位上的数字
        j=a/10%10;  //取得十位上的数字
        if(pow(i,3)+pow(j,3)+pow(k,3)==a)//立方数的和是否与原数相等
            printf("Yes\n");    //相等则该数是水仙花数,输出Yes
        else printf("No\n");    //不相等则该数不是水仙花数,输出No
      }
      else break;//如果该数是0则结束
  }
  return 0;
}

样例输入

153
154
0

样例输出

Yes
No

运行结果:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/shuisebeihuan/article/details/81487635