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

相关推荐
m0_7487080510 分钟前
C++中的观察者模式实战
开发语言·c++·算法
qq_5375626722 分钟前
跨语言调用C++接口
开发语言·c++·算法
wjs202432 分钟前
DOM CDATA
开发语言
Tingjct34 分钟前
【初阶数据结构-二叉树】
c语言·开发语言·数据结构·算法
猷咪1 小时前
C++基础
开发语言·c++
IT·小灰灰1 小时前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
快点好好学习吧1 小时前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
秦老师Q1 小时前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
烟锁池塘柳01 小时前
解决Google Scholar “We‘re sorry... but your computer or network may be sending automated queries.”的问题
开发语言
是誰萆微了承諾1 小时前
php 对接deepseek
android·开发语言·php