题目:
求出0~999之间的所有“水仙花数”并输出。
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
题目分析:首先如题水仙花数是一个三位数,所以循环范围缩小至100到1000,通过除和操作来获取一个数字的每一位是多少,然后再通过库函数pow()完成次方的操作。注意:( ^ 这个符号并不是代表次方,它是位操作中的异或符,切勿当成次方符号)
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int Mar_num(int i){
int a = i / 100;
int b = (i / 10) % 10;
int c = (i % 100) % 10;
double x;
double y;
double z;
x = pow(a, 3);
y = pow(b, 3);
z = pow(c, 3);
if (i == x + y + z){
printf("%d\n", i);
}
}
int main(){
int i;
for (i = 100; i < 1000; i++){
Mar_num(i);
}
system("pause");
return 0;
}