题主的代码里,switch()case 部分没问题,问题出在第16行至第23行间代码里。建议换种写法,供参考:
#include <stdio.h>
#include <math.h>
int main()
{
int N, i, p, t, sum, n, m, k;
printf("input num(3<= N <=7):");
scanf("%d", &N);
p = pow(10, N);
for (i = pow(10, N - 1); 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;
}