当对这段代码进行分块分析时,可以将其分为以下几个部分:
第一部分:
#include<stdio.h>
int main()
{
int i,x,y,z;
这部分代码包含了头文件stdio.h
的引入以及main()
函数的定义。其中定义了四个整型变量i
、x
、y
和z
,i
用于循环迭代,x
、y
、z
用于存储数字i
的个位、十位和百位上的数字。
第二部分:
for(i=100;i<1000;i++)
{
x=i%10;
y=i/10%10;
z=i/100%10;
这部分代码使用一个for
循环从100到999遍历所有的三位数。在循环中,通过取余运算i%10
获取数字i
的个位数,通过整除运算i/10%10
获取其十位数,通过整除运算i/100%10
获取其百位数。分别将这三个位数的值赋给变量x
、y
和z
。
第三部分:
if(i==(x*x*x+y*y*y+z*z*z))
printf("%d\n",i);
}
return 0;
}
这部分代码使用条件判断 if(i==(x*x*x+y*y*y+z*z*z))
来判断数字i
是否满足水仙花数字的条件:每个数位上的数字的3次幂之和等于它本身。如果满足条件,则使用printf
函数将该数字打印出来。
最后,return 0;
表示程序正常结束。
综上所述,该程序通过循环和条件判断找出100到999范围内的水仙花数字,并将其打印出来。
//水仙花数字
//每个数位上的数字的 3次幂之和等于它本身
//列如:153=1^3+5^3+3^3
#include<stdio.h>
int main()
{
int i,x,y,z;
for(i=100;i<1000;i++)
{
x=i%10;
y=i/10%10;
z=i/100%10;
if(i==(x*x*x+y*y*y+z*z*z))
printf("%d\n",i);
}
return 0;
}
//输出100-1000以内的水仙花数字
//输出结果:153,370,371,407