【问题描述】输入 2 个正整数 m 和 n(1<=m<n<=1000),输出 m 到 n 之间的所有满足各位数字的立方和等于其自身的数。要求定义并调用函数 is(number)判断 number 的各位数字之立方和是否等于其自身。若输入不满足1<=m<n<=1000,需重新输入(Input again:)。试编写相应程序。
【输入形式】
【输出形式】
【样例输入】1 300
【样例输出】1 153
【样例说明】
【评分标准】
#include <stdio.h>
// 函数声明
int is(int number);
int main(void) {
int m, n ,i;
// 获取输入,确保输入合法
do {
scanf("%d%d", &m, &n);
if (!(1 <= m && m < n && n <= 1000)) {
printf("Input again: \n");
}
} while (!(1 <= m && m < n && n <= 1000));
// 输出满足条件的数
for ( i = m; i <= n; i++) {
if (is(i)) {
printf("%d ", i);
}
}
return 0;
}
// 定义 is 函数
int is(int number) {
int original = number;
int sum = 0;
// 计算各位数字的立方和
while (number > 0) {
int digit = number % 10;
sum += digit * digit * digit;
number /= 10;
}
// 判断是否满足条件
return (sum == original);
}