C语言编写100到999的水仙花数

#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;/*求出个位数*/
这一步我不能理解这三个式子是怎么个意思,求详细解释!

水仙花数的定义是这样的:一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
这种方法和解一元三次方程一样,套进去很好理解
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;
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-21
假设 sum = 153
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喽本回答被网友采纳
第2个回答  2015-10-27
你上面不是有注释吗?追问

但是就是不知道是怎么算出百十个位的,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;

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网