C的水仙花数(两个数之间的所有水仙花数字)
有人问我一道水仙花的题,顺便总结一下,原题是{
**
3(简答题40.0分) 使用函数输出水仙花数:输入2个正整数m和n(1<=m,n<=1000),输出m到n之间的所有满足各位数字的立方和等于其自身的数。要求定义并调用函数 is(number)判断number的各位数字之立方和是否等于其自身,若相等则返回1,否则返回0。试编写相应程序。**
}
- 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
- 然后是水仙花数字的思路
- 首先得到这个数字
- 第二步把这个数字每位数拆开存起来
- 第三步得到每位数字立方之和
- 最后一步把所得之和与最初的数字相比较,相等则为水仙花数字,反之则不是
#include<stdio.h>
#include<string.h>
bool is(int number) {
int sum = 0 ,i = 0 , num = number;
int nums[5] = {0,0,0,0,0};
while(num!=0) {
nums[i++] = num%10;
num = num/10;
}
for(int j = 0; j<sizeof(nums)/4; j++) sum+=nums[j]*nums[j]*nums[j];
if(number == sum)return true;
else return false;
}
int main() {
int num1 = 0,number = 0;
printf("输入两个数字:\n");
scanf("%d%d",&num1,&number);
if(num1<number) {
number = num1 +number;
num1 = number - num1;
number = number - num1;
}
for(number; number<=num1; number++)
if(is(number)) printf("%d 是水仙花数字 \n",number);
return 0;
}
运行结果:
100~200的水仙花数字:153

4308

被折叠的 条评论
为什么被折叠?



