#include
int main()
{
int x,i,j=1,k,a,b,c,t,sum1=1,sum=0;
scanf("%d",&x);
for(i=x;i>0;i--){
j=10*j;
}
for(k=j-1;k>=j/10;k--){
a=k;
while (a>0)
{
b=a%10;
c=x;
while (c>0)
{
sum1=sum1*b;
c--;
}
sum=sum+sum1;
a/=10;
sum1=1;
}
t=sum-k;
if(t==0)
printf("%d",k);
}
return 0;
}
k=j-1;k>=j/10
k的初始值是j-1,而你进入for循环的条件是k大于等于j/10,根本满足不了,无法进入循环,当然执行不到printf语句那里喽,也就没有输出
修改处见注释,供参考:
#include <stdio.h>
int main()
{
int x, i, j = 1, k, a, b, c, t, sum1 = 1, sum = 0;
scanf("%d", &x);
for (i = x; i > 0; i--) {
j = 10 * j;
}
for (k = j - 1; k >= j / 10; k--) {
a = k; sum = 0; //这里缺了sum = 0;
while (a > 0)
{
b = a % 10;
c = x;
while (c > 0)
{
sum1 = sum1 * b;
c--;
}
sum = sum + sum1;
a /= 10;
sum1 = 1;
}
t = sum - k;
if (t == 0)
printf("%d ", k);
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int gw, sw, bw,n;
cout << "请在100-1000之间选择一个数字:" << endl;
cin >> n;
for (int i = 100; i < n; i++)
{
gw = i % 10; //个位
sw = i / 10 % 10; //十位
bw = i / 100;// 百位
if (gw * gw * gw + sw * sw * sw + bw * bw * bw == i)
{
cout << i << " ";
}
}
}