c语言实现输出所有的水仙花数
更新时间:2023-10-08前言
水仙花数,又称阿姆斯特朗数,是指一个三位数,其各位数字立方和等于该数本身。例如,371是一个水仙花数,因为 3^3 + 7^3 + 1^3 = 371。在本文中,我们将会使用C语言来编写一个程序,以输出所有的水仙花数。
算法分析
判断一个三位数是否为水仙花数,需要先将百位、十位、个位数分离出来,再进行计算。我们可以使用三次除法和取模运算,分离出百位、十位、个位数,并使用三次立方运算和加法运算来计算各位数字立方和。
//计算一个三位数的各位数字立方和 int sum_of_cubes(int n) { int sum = 0; int hundreds = n / 100; int tens = (n % 100) / 10; int ones = n % 10; sum = hundreds * hundreds * hundreds + tens * tens * tens + ones * ones * ones; return sum; }
程序实现
我们需要遍历所有的三位数,判断它是否为水仙花数,最后打印输出所有的水仙花数。为了实现这个目的,我们可以使用三层嵌套的for循环,从100到999遍历所有的三位数,再使用sum_of_cubes函数判断是否为水仙花数。如果是,则将其打印输出。
#include//计算一个三位数的各位数字立方和 int sum_of_cubes(int n) { int sum = 0; int hundreds = n / 100; int tens = (n % 100) / 10; int ones = n % 10; sum = hundreds * hundreds * hundreds + tens * tens * tens + ones * ones * ones; return sum; } int main() { for(int i = 100; i < 1000; i++) { if(i == sum_of_cubes(i)) { printf("%d ", i); } } return 0; }
代码解释
程序主要分为两部分:sum_of_cubes函数和main函数。sum_of_cubes函数用于计算一个三位数的各位数字立方和;main函数用于遍历所有的三位数,判断是否为水仙花数。值得注意的是,我们使用了if语句来判断是否为水仙花数,并使用printf函数将所有的水仙花数打印输出。
总结
本文使用C语言实现了输出所有的水仙花数的功能。我们首先分析了水仙花数的特征,然后使用sum_of_cubes函数计算任意一个三位数的各位数字立方和,并使用主函数遍历所有的三位数,判断是否为水仙花数。最后,我们打印输出所有的水仙花数。