题目
打印出所有的"水仙花数",水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
实现的思路
- 遍历所有三位数(100到999)。
- 提取每个三位数的个位、十位、百位数字。
- 计算这三个数字的立方和。
- 判断这个立方和是否等于原数。
- 如果等于,则打印该数。
代码(包含解析)
#include <stdio.h>
int main(){
int i, j, g, x, b;
// 遍历所有三位数
for(i=100; i<1000; i++){
// 提取个位数字
g = i % 10;
// 提取十位数字,先取后两位再除以10
x = (i % 100) / 10;
// 提取百位数字,直接整除100
b = i / 100;
// 计算各位数字的立方和
if(g*g*g + x*x*x + b*b*b == i) {
// 如果立方和等于原数,则打印
printf("%d\n", i);
}
}
return 0;
}
代码解读
- 首先,我们包含了
stdio.h
头文件,以便使用printf
函数。 - 在
main
函数中,我们定义了五个整型变量:i
用于遍历所有三位数,j
(虽然未使用,可以移除),g
用于存储个位数字,x
用于存储十位数字,b
用于存储百位数字。 - 使用
for
循环遍历所有三位数,从100到999。 - 在循环内部,通过取余和整除操作,我们提取出每一位的数字。
- 计算这三个数字的立方和,并判断其是否等于原数
i
。 - 如果等于,则使用
printf
函数打印该数。 - 最后,
main
函数返回0,表示程序正常结束。