水仙花数判断讲解

今天要讲解的这道题是 水仙花数判断

题目要求

本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=13+53+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0.

函数接口定义:

int func(const int N);

其中N是用户传入的参数。N的值不超过int类型的范围。如果参数N是水仙花数,则返回1,否则返回0。

裁判测试程序样例:

#include <stdio.h>
int func(const int N);
int main()
{
 int N;
 scanf("%d", &N);
 printf("%d\n", func(N));
return 0;
}

/* 请在这里填写答案 */

输入样例:

153

输出样例:

1

解题思路

  • 根据题目要求,定义一个函数func()
  • 定义变量n,sum
  • 因为需要求一个三位数的整数各位的立方和,所以我们要分离每一位上的数,用到表达式sum+=(n%10) * (n%10) * (n%10),因为需要对每一位数求立方,所以此表达式需循环,并且我们要求到下一位,用到表达式n/=10,在求了立方和的基础上,我们要进行判断是否等于输入值

题目代码

涉及知识点

1.给n赋值为N,因为n是形参,N是实参,输入值实际是N,我们要判断的也是输入值N

2。while语句,这是一个新的循环语句,括号里面表示的是条件,我代码中写的是while(n),它也就相当于while(n!=0),这是一种简便写法,计算机也会自动去给我们判断,当条件判定为‘是’时,循环进行,否则跳出循环

3.表达式sum+=(n%10) * (n%10) * (n%10)与n/=10,这里用的取余的方法求各位数立方的和,因为变量n,sum定义为整型,取结果时,计算机会自动给我们取整数,比如153%10还余3,sum表达式就会求3的立方,接着153/10=15.3,15.3再次取余时,结果为5,以此循环,求得立方和

4.最后进行判断,并返回结果

posted @ 2019-11-07 18:30  blackman6  阅读(2102)  评论(0编辑  收藏  举报