首先假设你对%运算比较了解。
那么:
x能取的值为0,1,放在A={0,1}中;
y能取的值为0,1,2,放在B={0,1,2}中;
z能取的值为0,1,2,3,4,放在C={0,1,2,3,4}。
for循环可将x,y,z的值进行十次循环改变。
那么,10%2=0,10%3=1,10%5=0;(0代表集合中的第一个数的位置,依次类推。)
所以x,y,z分别取A,B,C对应位置的元素0,1,0;
同理:17%2=1,17%3=2,17%5=2;
所以x,y,z分别取A,B,C对应位置的元素1,2,2。
不知道你明白没(集合可以对应着数组来理解。)
不用详细解释啊 如果你不明白过程 加几条输出就看出来了
执行的无非就是取余嘛 (%符号是取余操作 )
#include
void main()
{
int count,i;
int x,y,z;
x=y=z=0;
scanf("%d",&count);
for(i=0;i
printf("before change i=%d x=%d,y=%d,z=%d \n",i,x,y,z);
x=(x+1)%2;
y=(y+1)%3;
z=(z+1)%5;
printf("after change i=%d x=%d,y=%d,z=%d\n",i,x,y,z);
}
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
这样 楼主自己看看 就明白了~
加了详细注释:
#include
void main()
{
int count,i;
int x,y,z;
x=y=z=0;//x,y,z初始化为0
scanf("%d",&count);//输入循环次数保存到count
for(i=0;i
x=(x+1)%2;//求x+1除以2的余数,并赋值给x
y=(y+1)%3;//求y+1除以2的余数,并赋值给y
z=(z+1)%5;//求z+1除以2的余数,并赋值给z
}
// 上面的这个循环,其实作用和下面的3行代码是等效的:
// x=count%2;
// y=count%3;
// z=count%5;
// 因此很容易就可以得出:count=10,x=0,y=1,z=0, count=17,x=1,y=2,z=2
printf("x=%d,y=%d,z=%d\n",x,y,z);
}