题目:
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。(画出流程图和NS图)
程序分析:
for
循环,从 100 到 999 遍历所有三位数。每个数通过数学运算提取出百位、十位和个位,然后计算每个位数的立方和。如果该立方和等于原数字,则该数字为“水仙花数”。i
的百位、十位和个位数值。C语言代码实现:
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0; // 循环变量
int a = 0; // 百位
int b = 0; // 十位
int c = 0; // 个位
int sum = 0; // 立方和
for (i = 100; i <= 999; i++) {
a = i / 100; // 提取百位
b = i / 10 % 10; // 提取十位
c = i % 10; // 提取个位
sum = pow(a, 3) + pow(b, 3) + pow(c, 3); // 计算立方和
if (sum == i) { // 判断是否为水仙花数
printf(" %d", i); // 输出水仙花数
}
}
return 0;
}
流程图展示了从输入三位数到判断并输出“水仙花数”的过程,适合直观理解程序逻辑。
i
,取值范围为 100-999。i
的百位、十位、个位。NS 流程图(Nassi-Shneiderman 图)是以结构化的方式展示程序流程,呈现出逐步细化的模块化过程,更适合代码级逻辑推导。