【习题03】打印水仙花数
题目求出0100000之间的所有“水仙花数”并输出。“水仙花数”是指一个n位数其各位数字的n次方之和确好等于该数本身如:153 1 3 153 1^{3}153135 3 5^{3}533 3 3^{3}33则153是一个“水仙花数”。1、题目分析水仙花数的特征是得到这个数的位数这个数每一位数字的位数次放之和等于这个数。我们需要求的有这个数字的位数、每一位数字、一个数的n次方。1求数字的位数利用数字除10循环循环结束条件是这个数字为0的时候。利用计数器统计位数2求每一位数字利用数字模10循环循环结束条件是数字除10直到这个数字为0的时候。3求一个数的n次方方法一利用循环n是几就循环几次每循环一次就乘这个数一次利用累加法统计最终结果。方法二利用pow函数计算pow()的返回值是double类型计算时存在浮点精度损失所以不建议使用。2、代码演示//求出0100000之间的所有“水仙花数”并输出。#includestdio.hintmain(){inti0;for(i;i100000;i){inttemp1i;inttemp2i;intcount0;intcount20;intmod0;while(temp1){temp1/10;count;}while(temp2){modtemp2%10;//count2 (int)pow(mod,count);intsum1;intk0;for(k;kcount;k){sum*mod;}count2sum;temp2/10;}if(count2i)printf(%d ,i);}return0;}