当前位置: 代码迷 >> C语言 >> 求助:水仙花数
  详细解决方案

求助:水仙花数

热度:176   发布时间:2006-04-11 15:43:00.0
对 20楼的比我的好
我过早的写了x=a/100;
y=a/10%10;
z=a%10;
此时a还没有范围
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
int i,h,t,n;
i=100;
while(i>=100&&i<999)
{
h=i/100;\\用输入的数除以100得到百位上的值
t=i/10-h*10;\\用输入的值数楚以10然后再减去求出的百位上的数乘上10后的值
n=i-h*100-t*10;\\用输入的值减去百位乘上100和十位乘上10后的值
if(i==h*h*h+t*t*t+n*n*n)
printf("%d\n",i);
i++;
}
}
我做的while语句的算法 (绝对原创)

[此贴子已经被作者于2006-4-11 17:14:40编辑过]


----------------解决方案--------------------------------------------------------
用while做:
main()
{
int i,j,k,n=100;
while(n<1000)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%4d\n",n);
n++;
}
}
或者:
main()
{
int i,j,k,n=100;
do
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%4d\n",n);
n++;
}
while(n<1000);
}
没有必要做强制类型转换,正整数相除,应该会简单的舍掉小数部分,
----------------解决方案--------------------------------------------------------
算法上不难嘛!一个核心的思想就是求出每一位数.
----------------解决方案--------------------------------------------------------
也有好多都是我们学校的作业题,是不是考材有很多重复的地方?
----------------解决方案--------------------------------------------------------
  相关解决方案