当前位置: 首页 > article >正文

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

1.题目

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

2.代码

#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,来统计数字的位数。


http://www.kler.cn/a/232599.html

相关文章:

  • 2分钟在阿里云ECS控制台部署个人应用(图文示例)
  • 【AutoGen 】简介
  • GPT-5 要来了:抢先了解其创新突破
  • 微澜:用 OceanBase 搭建基于知识图谱的实时资讯流的应用实践
  • Llama微调测试记录
  • 标准C++ 字符串
  • 吉他学习:识谱,认识节奏,视唱节奏,节拍器的使用
  • Python爬虫http基本原理#2
  • 使用 Python、Elasticsearch 和 Kibana 分析波士顿凯尔特人队
  • 【Spring源码解读!底层原理高级进阶】【上】探寻Spring内部:BeanFactory和ApplicationContext实现原理揭秘✨
  • 自学Python第二十二天- Django框架(六) django的实用插件:cron、APScheduler
  • 【原创 附源码】Flutter海外登录--Tiktok登录最详细流程
  • react中的diff算法
  • SAP-PS-001-006问题预算占用与订单实际金额不一致
  • Qt网络编程-TCP与UDP
  • 嵌入式学习Day18 linux高级编程 --- 流的定位
  • 形态学算法应用之连通分量提取的python实现——图像处理
  • Spinnaker多云持续交付平台: 部署Minio存储服务
  • 猜猜谁是凶手?
  • 通过Spring @Validated 更优雅的实现参数校验
  • c++之说_13|模板 折叠表达式
  • 贪心算法的应用
  • 【LangChain-04】利用权重和偏差跟踪和检查LangChain代理的提示
  • Pymysql之Connection中常用API
  • 20240206作业
  • 【人工智能】Fine-tuning 微调:解析深度学习中的利器(7)