慕仰2239238
因为while循环里面的i的值已经改变了,这样i==k永远不成立!可以用两种方法处理:一、笨方法,参数较多#include<stdio.h>
int main(){
int i,n,j,k,m,l;
for(i=100;i<10000;i++){
if(i<1000){
n=i/100;//百位数
j=i/10%10;//十位数
k=i%10;//个位数
m=n*n*n+j*j*j+k*k*k;
if(i==m){
printf("%d ",i);
}
}
else{
n=i/1000;//千位数
j=i/100%10;//百位数
k=i/10%10;//十位数
l=i%10;//个位数
m=n*n*n*n+j*j*j*j+k*k*k*k+l*l*l*l;
if(i==m){
printf("%d ",i);
}
}
}
}二、调用函数(推荐)#include<stdio.h>
//自定义函数MYF(int a),作用是每个位数的值三次方或者四次方和。
int MYF(int a){
int b,m=0;
if(a<1000){
while(a){
b=a%10;
a=a/10;
m+=b*b*b;
}
}
else{
while(a){
b=a%10;
a=a/10;
m+=b*b*b*b;
}
}
return m;
}
int main()
{
int i,j,k,s,m,sum=0;
for(i=100;i<10000;i++){
if(i==MYF(i)){
printf("%d ",i);
}
}
}