运用C语言去实现编程

7 .编程实现:编辑函数求水仙花数。要求通过main函数控制数值范围(即求出某范围内的水仙花数)。

1

供参考:

#include <stdio.h>
#include <math.h>
int main()
{
    int N, i, p, t, sum, n, m, k;
    do {
        printf("input num(3<= N <=7):");
        scanf("%d", &N);
    } while (N < 3 || N > 7);
    for (i = pow(10, N - 1), p = i * 10; i < p; i++) {
        for (sum = 0, t = i; t > 0; t /= 10) {
            m = N; k = 1;
            n = t % 10;
            while (m--)k *= n;
            sum += k;
        }
        if (sum == i)
            printf("%d\n", i);
    }
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7542709
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言:判断一个三位数是否为水仙花数
  • 除此之外, 这篇博客: 「题目讲解」C语言 使用函数判断水仙花数 求范围内的所有水仙花数中的 测试程序样例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include <stdio.h>
    
    int narcissistic( int number );
    void PrintN( int m, int n );
    
    int main()
    {
        int m, n;
    
        scanf("%d %d", &m, &n);
        if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);
        PrintN(m, n);
        if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);
    
        return 0;
    }
    

    在程序后面完成自己的函数

  • 您还可以看一下 张建飞老师的C#急速入门课程中的 循环练习题1:水仙花数小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    参考代码如下,可以直接复制粘贴到C语言IDE中运行:

    #include <stdio.h>
    #include <math.h>
    
    // 判断一个数是否为水仙花数
    int isNarcissistic(int num) {
        int a = num / 100;  // 百位数
        int b = num % 100 / 10;  // 十位数
        int c = num % 10;  // 个位数
        int sum = pow(a, 3) + pow(b, 3) + pow(c, 3);
        if (sum == num) {  // 是水仙花数
            return 1;
        } else {  // 不是水仙花数
            return 0;
        }
    }
    
    // 按照数值范围求解水仙花数
    void findNarcissisticInRange(int start, int end) {
        for (int i = start; i <= end; i++) {
            if (isNarcissistic(i)) {  // 是水仙花数
                printf("%d ", i);
            }
        }
        printf("\n");
    }
    
    int main() {
        int start = 100, end = 999;
        findNarcissisticInRange(start, end);
        return 0;
    }
    

    代码说明:

    1. 提供了两个函数,一个是判断一个数是否为水仙花数的函数 isNarcissistic,另一个是按照数值范围求解水仙花数的函数 findNarcissisticInRange
    2. isNarcissistic 函数首先分别提取出三个数位,然后计算对应的立方和并与原来的数进行比较,如果相等则是水仙花数,返回 1,否则返回 0。
    3. findNarcissisticInRange 函数利用循环遍历给定数值范围内的每一个数,然后调用 isNarcissistic 函数判断是否为水仙花数,如果是则输出这个数。
    4. 主函数中给定了数值范围,然后调用 findNarcissisticInRange 函数求解并输出水仙花数。

    运行结果:

    153 370 371 407 
    

    可以看到,输出结果正确地列出了在 100~999 范围内的所有水仙花数。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^