题解 | #水仙花数#
水仙花数
https://www.nowcoder.com/practice/dc943274e8254a9eb074298fb2084703
#include<stdio.h> int main() { int m,n,i,j,a,b=0,d=0;//只要是累加,则初始值为0,不然会被随机分配值,累加就没有意义了 while(scanf("%d %d\n",&m,&n)!=EOF)//多组输入标配,只要有输入,scanf()就不等于EOF,就循环 { for(i=m;i<=n;i++)//从m到n开始依次进循环判断是否为水仙花数 { j=i;//为了不破坏i,j为替身 while(j>0) { a=j%10;//取个位位数上的数 j=j/10;//位数左移,原先的十位变为个位,因为整数相除结果只保留整数部分,而原来的个位变成了结果的小数部分被直接遗弃了 b=b+a*a*a;//个位位数上的数立方累加 } if(b==i)//位数立法累加等于该数本身则为水仙花数 { printf("%d ",i);//输出水仙花数 d=1;//有水仙花数d就为1 } b=0;//每判断完一个数就要清除b,进行归零操作 } if(d==0)//说明没有一个水仙花 { printf("no");//结果输出no } } return 0; }