在编程领域,水仙花数(Narcissistic number),又称为自恋数、自幂数、阿姆斯特朗数(Armstrong number),它指的是一个n位正整数,其各位数字的n次幂之和等于该数本身。例如:(153 = 1^3 + 5^3 + 3^3)。
编写一个求水仙花数的C程序,可以锻炼编程者的基本编程能力,同时也是对数学和编程结合的一种实践。下面是一个简单的C程序示例,用于找出1000以内的所有水仙花数。
#include <stdio.h> #include <math.h> int main() { int i, temp, original, sum = 0; int hundreds, tens, ones; printf("1000以内的水仙花数有:\n"); for(i = 1; i < 1000; i++) { original = i; // 保存原始数值 sum = 0; // 初始化各位数字的立方和 // 计算立方和 while(original != 0) { ones = original % 10; tens = (original / 10) % 10; hundreds = (original / 100) % 10; sum += pow(ones, 3) + pow(tens, 3) + pow(hundreds, 3); original /= 10; } // 如果立方和等于原始数值,则是水仙花数 if(sum == i) { printf("%d\n", i); } } return 0; }
这段程序首先通过一个for循环遍历1到999的所有数字,因为水仙花数至少是三位数。在循环内部,程序使用一个while循环来计算当前数字的每一位数字,并使用pow()函数计算其立方。pow()函数是C标准库中的一个函数,用于计算一个数的幂。
在计算立方和的同时,程序使用取模操作符%来获取当前最低位的数字,然后通过连续的除以10操作来逐步移除最低位,直到数字变为0。每次循环,都将当前位的立方加到sum变量上。
最后,如果计算出的立方和与原始数值相等,那么这个数就是一个水仙花数,程序将其打印出来。
这个程序简单易懂,适合初学者学习和理解循环、条件判断以及数学函数在编程中的应用。通过编写和运行这样的程序,可以加深对C语言基础概念的理解和掌握。
版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com