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

1.题目

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

2.代码

cpp 复制代码
#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;
}

3.解析

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

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

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

相关推荐
ruan11451416 分钟前
MySQL4种隔离级别
java·开发语言·mysql
quant_19861 小时前
R语言如何接入实时行情接口
开发语言·经验分享·笔记·python·websocket·金融·r语言
啟明起鸣4 小时前
【网络编程】简易的 p2p 模型,实现两台虚拟机之间的简单点对点通信,并以小见大观察 TCP 协议的具体运行
c语言·网络·tcp/ip·p2p
百锦再5 小时前
详细解析 .NET 依赖注入的三种生命周期模式
java·开发语言·.net·di·注入·模式·依赖
风吹落叶花飘荡6 小时前
2025 Next.js项目提前编译并在服务器
服务器·开发语言·javascript
失败又激情的man6 小时前
python之requests库解析
开发语言·爬虫·python
专注VB编程开发20年7 小时前
常见 HTTP 方法的成功状态码200,204,202,201
开发语言·网络协议·tcp/ip·http
有没有没有重复的名字7 小时前
线程安全的单例模式与读者写者问题
java·开发语言·单例模式
开开心心_Every7 小时前
便捷的电脑自动关机辅助工具
开发语言·人工智能·pdf·c#·电脑·音视频·sublime text
霖008 小时前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发