#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 关注
- 2714 浏览
添加回答
举报
0/150
提交
取消