这个用c语言怎么写,希望不要用数组,我刚学没多久,不太懂!

  1. img

你好,我尝试了一下,没有解决结尾无空行的问题,下面是我的代码,欢迎指正

#include<stdio.h>
#include<math.h>
int main(){
    int N,a,b;
    while(scanf("%d",&N),N<3||N>7);
    a=pow(10,N-1);
    b=pow(10,N);
    while(a<b){//由a到b穷举
        int sum=0,k; 
        k=a;//把a赋值给k,用k进行逐位拆分操作 
        while(k){//拆分k,累加每位的N次幂 
            sum+=pow(k%10,N);
            k/=10;
        }
        if(sum==a) printf("%d\n",a); //重组后新数等于原数,输出 
        a++;
    }
    
} 

运行结果:

img

解决结尾无空行的修改,供参考:

#include<stdio.h>
#include<math.h>
int main() {
    int N, a, b, flg = 0;//修改
    while (scanf("%d", &N), N < 3 || N>7);
    a = pow(10, N - 1);
    b = pow(10, N);
    while (a < b) {//由a到b穷举
        int sum = 0, k;
        k = a;//把a赋值给k,用k进行逐位拆分操作 
        while (k) {//拆分k,累加每位的N次幂 
            sum += pow(k % 10, N);
            k /= 10;
        }
        if (sum == a)
            printf(flg++ == 0 ? "%d" : "\n%d", a); //解决结尾无空行 
        a++;
    }
}