#include<stdio.h>
#include <math.h>
int main(){
int t,n;
scanf("%d",&t);
scanf("%d",&n);
int a,b;
a=pow(10,n-1);
b=pow(10,n);
for(int i=a;i<b;i++)
{
int k[3]={0,0,0},sum=0;
for(int j=0;j<n;j++)
{
printf("%d\n",i);
k[j]=i%10;
sum+=pow(k[j],n);
i=i/10;
}
while(i==sum)
{printf("%d",sum);
break;}
}
return 0;
}
i=i/10卡死
新代码如下,#include<stdio.h>
#include <math.h>
int main(){
int t,n;
scanf("%d",&t);
scanf("%d",&n);
int a,b;
a=pow(10,n-1);
b=pow(10,n);
for(int i=a;i<b;i++)
{
int k[3]={0,0,0},sum=0,jx=1;
for(int j=0;j<n;j++)
{
k[j]=i/jx%10;
sum+=pow(k[j],n);
jx*=10;
}
while(i==sum)
{printf("%d\n",sum);
break;}
}
return 0;
}
看你这代码不像求水仙花数,看这里把
https://baijiahao.baidu.com/s?id=1672074399379096555&wfr=spider&for=pc
1.程序分析:
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.程序源代码:
main()
{
int i,j,k,n;
system("title C语言");
printf(“‘water flower’number is:”);
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf(“%-5d”,n);
}
}
}