请问这样没有输出结果是什么情况,要怎么改呀

img

img


#include<stdio.h>
#include<math.h>
int main()
{
int sum=0,k,i,j,a;
int res;
int n;
scanf("%d",&n);
for(j=pow(10,n-1);j<=(pow(10,n)-1);j++)
{
k=j;
for(i=0;i<n;i++)
{
a=k%10;
sum=sum+pow(a,n);
k=k/10;
}
if(j==sum)
printf("%d\n",j);
}
return 0;
}

可以给个题目嘛

没有初始化

没有输出结果是因为没走到输出的那一行printf 注意,输出这行的条件是 if(j==sum)这个成立才会打印。

处理这个问题还得根据你的目的进行分析,分析for循环的逻辑以及for循环内部执行体的逻辑。

提供几个分析思路:
1:如果是我们,会根据题目分析for循环代码进行检测。
2:加打印,给for循环中每个参数打印一下,看看值得变化分析自己哪里有问题,每一次得j和sum得值是多少,分析一下
3:debug调试,跟踪一下就好

#include<stdio.h>
#include<math.h>
int main()
{
int sum=0,k,i,j,a;
int res;
int n;
scanf("%d",&n);
for(j=pow(10,n-1);j<=(pow(10,n)-1);j++)
{
sum=0;
k=j;
for(i=0;i<n;i++)
{
a=k%10;
sum=sum+pow(a,n);
k=k/10;
}
if(j==sum)
printf("%d\n",j);
}
return 0;
}