水仙花数 一个三位数,其各位数字立方和等于该数本身。 如153就是水仙花由小到大输出所有的水仙花数。每行输出一个。输出完成后,还要输出回车换行符。输出数据格式1 5 3 = 153哪里不对这个程序


#include<stdio.h>
int main()
{
    int i=1, j=1, n,chushi=1;
    scanf_s("%d", &n);
    while (i < n)
    {
        chushi = chushi * 10;
        i++;
    }
    int k = chushi;
    while (k < chushi * 10)
    {
        int m = k;
        int t, l, sum = 0;

        t =m% 10;
        m = k/ 10;
        while (m> 0)
        {
            while (j < n)
            {
                t *= t;
                j++;

            }
            sum += t;
        }
        if (sum ==k)
        {
            printf("%d\n", k);
        }k++;
    }

}

你输入的n值是啥?
t *= t; 这肯定是错的啊!!! 比如t=2,计算3次方,应该是2 * 2 * 2 = 8,但你这么写,第一次 t *= t 后,t=4,第二次 t *= t就是4 * 4 = 16了

  • python 代码运行效果截屏图片

    img

  我仅会点点python ,只会用python 代码呈现“算法逻辑”。

#!/sur/bin/nve python
# coding: utf-8


def is_narcissus(number):
    num = number
    c = num%10 # 个位数字。
    num //= 10
    b = num%10 # 十位数字。
    num //= 10
    a = num%10 # 百位数字。

    if sum([i**3 for i in (a, b, c)]) == number:
        print(f"{a}^3 + {b}^3 + {c}^3 = {number}")
        return number


if __name__ == '__main__':
    print(f"\n运算过程:\n{'':~^41}") 
    print(f"\n{'':~^41}\n所有的三位数“水仙花数”:\n{[i for i in range(100, 1000) if is_narcissus(i)]}\n")

VⅦ!

img