题目:打印出所有的100-999之间的"水仙花数",并画出流程图和NS流程图。所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:
153 = 1^3+ 5^3 + 3^3。
370 = 3^3 + 7^3 + 0^3
371 = 3^3 + 7^3 + 1^3
407 = 4^3 + 0^3 + 7^3
#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;
}
普通流程图:
NS流程图: