#include<stdio.h>
int main()
{
int sum,a,b,c;
printf("0到999之间的所有水仙花数:");
for(sum=100;sum<1000;sum++)
{
a=sum/100;/*求出百位数*/
b=sum/10-a*10;/*求出十位数*/
c=sum-a*100-b*10;/*求出个位数*/
if(a*a*a+b*b*b+c*c*c==sum)
{
printf("%d ",sum);
}
}
return 0;
}
a=sum/100;/*求出百位数*/
b=sum/10-a*10;/*求出十位数*/
c=sum-a*100-b*10;/*求出个位数*/
这一步我不能理解这三个式子是怎么个意思,求详细解释!
这种方法和解一元三次方程一样,套进去很好理解
a=sum/100 是计算百位的数字 ,如553 ,a=553/100=5;
b=sum/10-a*10; 是计算十位的数字,如553 , b=553/10-5*10=5 ;
c=sum-a*100-b*10 是计算个位的数字 如553 ,c=553-5*10-5*10=3;
a=sum/100;/*求出百位数*/ 除出来就是百位 1 都是整数 除的话 直接取整 比如7/4 等于1
b=sum/10-a*10;/*求出十位数*/ 除以10 就是15 - 1*10 =15 -10 = 5 十位数
c=sum-a*100-b*10;/*求出个位数*/ 个位 当然就是 sum减去百位乘以100 减去10位乘以10喽本回答被网友采纳
但是就是不知道是怎么算出百十个位的,a=sum/100;/*求出百位数*/
b=sum/10-a*10;/*求出十位数*/
c=sum-a*100-b*10;/*求出个位数*/, 例如sum=580,580/100=5.8,难道那0.8不管他,直接输出5吗 ?
例如:
sum=580,580/100=5.8
+++++++++++++++++++++++
比如:
满足水仙花数条件的数值:153
即:sum=153
++++++++++++++++++++++++
int sum,a,b,c; //a 用来存放百位数;b用来存放十位数;c用来存放个位数。
//a被定义成整型,所以,只会取1.5中的整数部分,即1。即:a=1
a=sum/100;
//b也是整型 ,所以,153/10-1*10 就应该是15-10=5。这就求出了十位。即:b=5
b=sum/10-a*10;
//这个很好理解吧!sum-百位数*100-十位数*10就可以得到个位数了。即:c=3
c=sum-a*100-b*10;