问题遇到的现象和发生背景 : 本人刚学C语言练习编程题,让输入一个数n,然后输出所有的n位“水仙花”数,就是一个n位数等于各个位数的n次方和
遇到的现象和发生背景,请写出第一个错误信息 : 我的代码会不停地输出1;如果把printf里输出的变量改了,也可能不停地输出1和0,反正就是不输出“水仙花”数
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
int main()
{
int n,i,s,m=1;
scanf("%d",&n);
for(i=1;i<n;i++)
m=m*10;
for(i=m;i<m*10;i++)
{
int k=i;
int sum=0;
while(i>0)
{
int j=i%10;
int p=j;
i=i/10;
for(s=1;s<n;s++)
p=p*j;
sum=sum+p;
}
if(sum==k)
printf("%d ",k);
}
return 0;
}
运行结果及详细报错内容 : 一直不断地输出1
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60% : 我不用for循环,改用如下do-while可以得到正确结果
int main()
{
int n;
scanf("%d",&n);
int first=1;
int i=1;
while(i<n){
first*=10;
i++;
}
printf("first=%d\n",first);
i=first;
while(i<first*10){
int t=i;
int sum=0;
do{
int d=t%10;
t/=10;
int p=d;
int j=1;
while(j<n){
p*=d;
j++;
}
sum+=p;
}while(t>0);
if(sum==i){
printf("%d\n",i);
}
i++;
}
return 0;
}
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏” : 请好人帮我看看for循环那段代码里哪里出问题了