C++中如何读取一个数的位数_C语言编写程序求水仙花数

C语言编写程序求水仙花数

水仙花数是一个数学问题,其实质是一个三位数,个位数的立方加十位数的立方加百位数的立方之和等于这个三位数本身。例如153=1*1*1+5*5*5+3*3*3,即153=1+125+27。这是一个相对较为简单的C程序,但程序中包括C程序知识与技巧非常的重要,对于初学者是一个非常好的练习手段。

程序思路:

1. 三位数其范围就是(100到999),利用循环来完成。

2. 个位、十位、百位数字的提取,利用整型数据的整除或者取余都可以完成。本例是利用整除来完成的,符合初学者的思维,算法容易接受理解。

3. 数据的验证是利用if条件来完成,需要注意的是C语言中等于是"=="。

水仙花数源程序及解释说明:

#include //使用预处理命令调入标准输入输出头文件。

int main()//定义整型主函数。

{

int x,a,b,c;//定义x,a,b,c四个整型变量。

for(x=100;x<1000;x++)//外层循环,水仙花数查询范围100到999。

{

a=x/100;//利用整除提取百位上的数字。

b=(x-a*100)/10;//提取十位上的数字,(x-a*100)是将三位数变成两位数。

c=x-100*a-10*b;//提取个位上的数字。

if(x==a*a*a+b*b*b+c*c*c)//判断水仙花数的条件,注意"=="号的使用。

printf("%d",x);//输出水仙花数并且换行。

}

return 0;//返回主函数的值0。

}

源程序及运行结果

e635608fe28d751d457753a0be48aa53.png

#include

int main()

{

int x,a,b,c,d,e,f;

for(x=100;x<1000;x++)

{

a=x/100;

b=(x-a*100)/10;

c=x-100*a-10*b;

if(x==a*a*a+b*b*b+c*c*c)

printf("%d",x);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值