水仙花数问题
#include
#include
int main()
{
int n,x;
scanf("%d",&n);
int i;
for(i=pow(10,n-1);i
{
int a[8]={0};
int b;
b=i;
// while(b>0)
// {
// x=0;
// a[x]=b%10;
// b/=10;
// x++;
// }
for(x=0;b>0;x++){
a[x]=b%10;
b/=10;
}
if(i==pow(a[0],3)+ ..正文不能重复,就是所有数组的三次方相加。
{
printf("%d\n",i);
}
}
return 0;
}
为什么用while循环不行,而用for循环就可以?并且我发现只能输出三位数,三位以上的就不行了。
想了半天都不会
救助!
while循环里把x = 0;提到循环外面。
你下面用了pow(a[0],3)判断,3位以上的满足不了了
#include <math.h>
int main()
{
int n, x;
scanf("%d", &n);
int i;
for (i = pow(10, n - 1); i < pow(10, n); i++)
{
// int a[8] = {0};
int b, s = 0;
b = i;
x = 0;
while (b > 0)
{
// a[x] = b % 10;
s += pow(b % 10, n);//几位数就得几次幂
b /= 10;
x++;
}
// if (i == pow(a[0], 3)) + ..正文不能重复,就是所有数组的三次方相加。
if (i == s) //+ ..正文不能重复,就是所有数组的三次方相加。
{
printf("%d\n", i);
}
}
return 0;
}
#include <stdio.h>
int main()
{
int i,j,k,n;
for(i = 100;i < 1000;i++)
{
j = i%10;
k = i/10%10;
n = i/100;
if(j*j*j + k*k*k + n*n*n == i)
printf("%5d\n",i);
}
return 0;
}