关于#代码,水仙花数#的问题,如何解决?

水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 13 + 53+ 33。本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3<=N<=7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:
3
输出样例:
153
370
371
407
版权声明:本文为CSDN博主「coderstory」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fjinhao/article/details/46853171

我用C语言编写了一个程序,以下是我的代码:
#include
int main()
{
int n;
scanf("%d",&n);
int j=n;
int i;
int k=0;
int a=1;
do{
a*=10;
n--;
}while(n>1);
int b=a*10-1;
int c=a;
// printf("%d",c);
int d=0;
int m;
for(a=c;a<=b;a++){
// a=371为什么不行 ?
int l=a;
do{
d=l%10;
int o=d;
for(i=1;i
d*=o;
}
k+=d;
l/=10;
i=1;
}while(l>0);
if(k==a){
printf("%d\n",a);
}else{
k=0;
}
}
return 0;
}

我输入3的时候的结果只有3个,没有371,各位帮我看看

供参考:

#include<stdio.h>
#include<math.h>
int main()
{
    int N, i, p, t, sum, n, m, k;
    do {
        scanf("%d", &N);
    } while (N < 3 || N > 7); // 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;
}

题主的代码修改如下,供参考:

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    int j = n;
    int i;
    int k = 0;
    int a = 1;
    do {
        a *= 10;
        n--;
    } while (n > 1);
    int b = a * 10 - 1;
    int c = a;
    //printf("%d", c);
    int d = 0;
    int m;
    for (a = c; a <= b; a++) {
        // a=371为什么不行 ?
        int l = a;
        do {
            d = l % 10;
            int o = d;
            for (i = 1; i < j; i++)
                d *= o;
            k += d;
            l /= 10;
            //i = 1; 修改
        } while (l > 0);
        if (k == a) {
            printf("%d\n", a);
        }
        //else { 修改
        k = 0;
        //} 修改
    }
    return 0;
}

这代码咋看啊?你自己看看你的问题内容呗


#include <iostream>
using namespace std;
int main()
{
    int i,gw,sw,bw;
    cout << "水仙花数为:" << endl;
    for (i = 100; i < 1000; i++)
    {
        gw = i % 10;  //求各位
        sw = i / 10 % 10; //求十位
        bw = i / 100;   //求百位
        if (gw * gw * gw + sw * sw * sw + bw * bw * bw == i)
        {
            cout << i << " ";
        }
    }
    return 0;
}

你可以把我的这个当作参考