|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int main(void)
{
int i, s, n, q;
for(i = 101; i < 1000; i++)
{
s = 0;
q = i;
while(q != 0)
{
n = q % 10;
s += n*n*n;
q /= 10;
}
if( s == i)
printf("%d是水仙花数\n", i);
}
return 0;
}
本帖最后由 jackz007 于 2021-1-26 12:41 编辑
- #include<stdio.h>
- int main(void)
- {
- int i, s, n, q;
- for(i = 101 ; i < 1000 ; i ++) // 从 i = 101 起,到 999 结束,一共循环 899 次
- {
- s = 0; // 每次循环初始化 s = 0,准备累加
- q = i; // 后面的代码需要使用并修改 i ,让 q 充当 i 的替身,防止 i 被改变
- while(q != 0) // 只要 q 不为 0 值就保持循环
- {
- n = q % 10; // n = q 的个位数
- s += n*n*n; // s 累加 n 的立方(进入 while 前,s 为 0)
- q /= 10 ; // q 整体向右移动 1 个十进制位,结果,百位变十位,十位变个位,个位被丢弃
- }
- if( s == i) // 如果累加得到的 s 与 循环变量 i 相等
- printf("%d是水仙花数\n", i);
- }
- return 0;
- }
复制代码
i 是个 3 位数,所以
- q = i;
- while(q != 0)
- {
- n = q % 10;
- s += n*n*n;
- q /= 10 ;
- }
复制代码
将会循环 3 次,循环中,n 将依次等于 i 的个位、十位、百位数值,循环结束后,s 的值就是 i 的百位、十位、个位数值的立方和。
|
|