/*题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数
本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
*/
#include <stdio.h>
void wflower(int n) {
if(n<100) {
printf("error!");
}
int i = 100;
int t = 0;
int j = 0;
int sum = 0;
for(i; i<n; i++) {
j = i;
sum = 0; //当每当一个数比较完后,一定要把这个变量初始为0,否则,数字会一直累加。 就像乘法口诀表一样的j,每一行都要从零开始
while(j>0) {
t = j % 10; //表示取出这个数字的每一位数
sum += (t*t*t);
j/=10; //去掉这个后面的一位数字,剩下的整数
}
if(sum == i) { //判断如果求出的整数等于原来的数字,则打印,否则,回到for开始新的一轮(即比较下一个数字)
printf("%d\t",sum);
}
}
}
int main(void) {
wflower(1e3);
return 0;
}
转载于:https://my.oschina.net/hpuwxy/blog/905361