如果一个三位数的没个数位的数字三次方之和等于改数本身,我们称这种数字为水仙花数。
输入:n m(n和m为三位整数)
输出:n和m之间的水仙花数
#include <stdio.h>
#include <stdlib.h>
int check(int n);
int main(int argc, char *argv[]) {
int n,m;
printf("请输入两个三位数并用空格隔开:\n");
scanf("%d %d",&n,&m);
//判断输入的数字是否合法
if((n>=100 && n<=999) || (m>=100 && m<=999)){
//比较大小,小的为n,大的为m
if(n>m){
n=n^m;
m=n^m;
n=n^m;
}
//从n到m循环,判断是否为水仙花数,若是,则输出
int i,flag=0;
for(i=n;i<=m;i++){
if(flag==0){
flag = check(i);
}else{
check(i);
}
}
if(flag==0){
printf("no\n");
}
}else{
printf("输入不合法。\n");
}
return 0;
}
int check(int n){
int j,k,l;
j=n%10;
k=n/10%10;
l=n/100;
if(n == j*j*j+k*k*k+l*l*l){
printf("%d\n",n);
return 1;
}else{
return 0;
}
}