while循环中n,s,q的循环怎么理解
#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 的百位、十位、个位数值的立方和。 本帖最后由 心驰神往 于 2021-1-26 17:16 编辑
# 学习了。 谢谢各位大佬的指导,这个问题了解了,谢谢,非常感谢
页:
[1]