C语言水仙花数相关问题。

img


C语言代码无运行结果。没有结果输出。不知道这是怎么回事?感觉应该没问题

a = i % 100;
->
a = i / 100;

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7694950
  • 这篇博客也不错, 你可以看下C语言求水仙花经典案例教程
  • 除此之外, 这篇博客: 水仙花数C语言代码优化中的 不足之处,请指正。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    题目:求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=13+53+3^3,则153是一个“水仙花数”。

    在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。

    例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:

    153 = 1^3 + 5^3 + 3^3。

    370 = 3^3 + 7^3 + 0^3。

    371 = 3^3 + 7^3 + 1^3。

    407 = 4^3 + 0^3 + 7^3。

  • 以下回答来自chatgpt:

    回答:

    根据提供的参考资料,似乎与C语言求解水仙花数并没有直接关联,因此需要进一步了解代码实现,才能确定问题出在哪里。以下是几个可能的问题和解决方案:

    1. 代码中没有对输入进行处理

    如果代码没有对输入进行处理,可能会导致输出结果不正确或无任何输出。可以考虑在代码中添加输入处理的部分。比如,如果要求输入一个数n,可以使用以下代码:

    int n;
    scanf("%d", &n);
    
    1. 代码中的算法错误

    C语言求解水仙花数的算法一般采用循环和条件语句,所以可能存在在循环条件判断和计算水仙花数的过程中出现问题,需要检查代码中算法的实现。可以先尝试在方法内打印中间变量的值,以便找到可能的问题所在。

    具体的算法可以参考以下代码:

    #include <stdio.h>
    #include <math.h>
    
    int isNarcissistic(int n)
    {
        int k, sum = 0, len = 0, num = n;
        while (num > 0) { // 计算位数
            len++;
            num /= 10;
        }
        num = n;
        while (num > 0) { // 计算各位数的立方和
            k = num % 10;
            sum += pow(k, len);
            num /= 10;
        }
        return sum == n; // 判断是否为水仙花数
    }
    
    int main()
    {
        int n, i;
    
        scanf("%d", &n);
    
        for (i = 100; i <= n; i++) {
            if (isNarcissistic(i)) {
                printf("%d ", i);
            }
        }
    
        return 0;
    }
    
    1. 编译和执行问题

    如果程序没有任何输出,可能是程序没有编译或者没有执行成功。可以使用命令行编译代码,或者IDE中查看编译和执行日志,以便定位问题所在。另外,检查代码中是否有逻辑错误,比如循环中是否有无限循环、条件判断是否正确等。

    1. 需要对代码进行优化

    在确定代码没有问题的情况下,考虑对代码进行优化,以提高代码效率和可读性。可以使用更好的算法、数据结构和程序设计原则等,比如使用二分查找、链表等数据结构、使用函数等,提高代码的可读性和可重用性。


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