当前位置:   article > 正文

【C语言】案例:输出n位水仙花数

【C语言】案例:输出n位水仙花数

1.题目

输入一个整数n,输出所有n位的水仙花数

2.代码

  1. #include <stdio.h>
  2. #include <math.h>
  3. // 计算数字的位数
  4. int countDigits(int num) {
  5. int count = 0;
  6. while (num != 0) {
  7. num /= 10;
  8. count++;
  9. }
  10. return count;
  11. }
  12. // 计算水仙花数
  13. void findNarcissisticNumbers(int n) {
  14. int start = pow(10, n - 1);
  15. int end = pow(10, n);
  16. for (int i = start; i < end; i++) {
  17. int num = i;
  18. int sum = 0;
  19. // 计算每位数字的 n 次幂之和
  20. while (num != 0) {
  21. int digit = num % 10;
  22. sum += pow(digit, n);
  23. num /= 10;
  24. }
  25. // 如果和等于原数,即为水仙花数
  26. if (sum == i) {
  27. printf("%d\n", i);
  28. }
  29. }
  30. }
  31. int main() {
  32. int n;
  33. // 输入 n
  34. printf("输入一个整数 n:");
  35. scanf_s("%d", &n);
  36. // 输出所有 n 位的水仙花数
  37. printf("%d 位的水仙花数有:\n", n);
  38. findNarcissisticNumbers(n);
  39. return 0;
  40. }

3.解析

1.main 函数是程序的入口。首先,它通过 printf 提示用户输入一个整数 n,然后使用 scanf 获取用户输入的值。接着,它调用 findNarcissisticNumbers 函数,输出所有n位的水仙花数。

2.函数 findNarcissisticNumbers 用于寻找所有n位的水仙花数。它通过迭代从 start 到 end 的范围内的所有数字,计算每个数字各个位上的数字的n次幂之和,如果和等于原数字,则该数字是水仙花数。找到水仙花数后,使用 printf 输出到控制台。

3.函数 countDigits 用于计算一个整数的位数。它通过不断将数字除以10,直到数字变为0,来统计数字的位数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/75337?site
推荐阅读
相关标签
  

闽ICP备14008679号