目录
1 例题:
打印所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的
立方和等于该数本身。例如,153是“水仙花数”,因为153=1+3+5。
2 设计思路:
首先确定水仙花数n可能存在的范围,因为n是一个三位数,所以范围确定为n从100变化到999,分离出n的百位i、十位j、个位k后,只要判断n是否等于i*i*j+j*j*j+k*k*k即可知道n是否是水仙花数。
3 C语音代码:
#include<stdio.h>
void main()
{
int i,j,k,n;
printf("所有的水仙花数有:");
for(n=100;n<1000;n++)
{
i=n/100; //分出百位数字
j=(n-i*100)/10; //分出十位数字
k=n%10; //分出个位数字
if(n==i*i*i+j*j*j+k*k*k)
printf("%d ",n);
}
}
对代码的说明:
将n整除以100,得出n在百位上的数字i。
将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位上的数字j。
将n对10取余,得出n在个位上的数字k。
求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数。
对于每个位置上的数值将其拆分的算法有很多种,根据不同情况选择不同算法(对于同一问题不同算法的效率有时会相差很多)。
4 运行结果:
所有的水仙花数有:153 370 371 407
--------------------------------
Process exited after 0.05133 seconds with return value 2187
请按任意键继续. . .