🏝️专栏:
🌅主页:猫咪-9527-CSDN博客“欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。”
目录
题目:
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如: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
的百位、十位、个位。 - 计算立方和:利用公式 a3+b3+c3a^3 + b^3 + c^3 计算立方和。
- 比较立方和与数字:如果相等,则输出该数字。
- 循环结束判断:如果未到达 999,继续循环;否则结束程序。
NS流程图
NS 流程图(Nassi-Shneiderman 图)是以结构化的方式展示程序流程,呈现出逐步细化的模块化过程,更适合代码级逻辑推导。