#include<stdio.h>main(){ int i,j,k; for(i=100;i<=10000;i++) { k=0; if(i<1000) { while(i) { j=i%10; i=i/10; k+=j*j*j; } if(i==k) { printf("%d",k); } } else if(i<10000) { while(i) { j=i%10; i=i/10; k+=j*j*j*j; } if(i==k) { printf("%d",k); } } }}不知道错在哪里……貌似死循环了,不显示数值
3 回答
已采纳
慕仰2239238
TA贡献6条经验 获得超2个赞
因为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);
}
}
}
- 3 回答
- 0 关注
- 2911 浏览
添加回答
举报
0/150
提交
取消

就像这个样子