赞
踩
输入一个整数n,输出所有n位的水仙花数
- #include <stdio.h>
- #include <math.h>
-
- // 计算数字的位数
- int countDigits(int num) {
- int count = 0;
- while (num != 0) {
- num /= 10;
- count++;
- }
- return count;
- }
-
- // 计算水仙花数
- void findNarcissisticNumbers(int n) {
- int start = pow(10, n - 1);
- int end = pow(10, n);
-
- for (int i = start; i < end; i++) {
- int num = i;
- int sum = 0;
-
- // 计算每位数字的 n 次幂之和
- while (num != 0) {
- int digit = num % 10;
- sum += pow(digit, n);
- num /= 10;
- }
-
- // 如果和等于原数,即为水仙花数
- if (sum == i) {
- printf("%d\n", i);
- }
- }
- }
-
- int main() {
- int n;
-
- // 输入 n
- printf("输入一个整数 n:");
- scanf_s("%d", &n);
-
- // 输出所有 n 位的水仙花数
- printf("%d 位的水仙花数有:\n", n);
- findNarcissisticNumbers(n);
-
- return 0;
- }
1.main 函数是程序的入口。首先,它通过 printf 提示用户输入一个整数 n,然后使用 scanf 获取用户输入的值。接着,它调用 findNarcissisticNumbers 函数,输出所有n位的水仙花数。
2.函数 findNarcissisticNumbers 用于寻找所有n位的水仙花数。它通过迭代从 start 到 end 的范围内的所有数字,计算每个数字各个位上的数字的n次幂之和,如果和等于原数字,则该数字是水仙花数。找到水仙花数后,使用 printf 输出到控制台。
3.函数 countDigits 用于计算一个整数的位数。它通过不断将数字除以10,直到数字变为0,来统计数字的位数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。