c语言初学者,请问这段代码为什么可以运行但没有任何输出呢。同时代码若有不足希望指正。
代码如下
/*水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 1 + 125+ 27。本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3<=N<=7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行*/
#include <stdio.h>
int main()
{
int N=0;
printf("输入一个数字:");
scanf("%d",&N);
int x=1;
int n=N;
for (;n>0;n=n-1)
{
x*=10;
}
n=N; //水仙花数小于x
int y=x/10; //大于y 且y为水仙花数的位数及最小值
int a;
int sum=1;
int T=0;
for (a=y;a<x;) //a要从最小的N位数开始加至最大的N位数
{ int b=a;
int c; //接下来定义b以取得a的不同位数 并进行N次方相加得T 判断是否与a相等
while (b>0)
{ c=b%10;
while (n>0)
{sum=sum*c;
n=n-1;
T=T+sum;
sum=1;
}
b=b/10;
}
if (T==a)
{
printf("%d\n",a);
}
a=a+1;
T=0;
n=N;
}
return 0;
}