void main()
{
int x,y,z=0,a,b,k=1
;/*定义并赋值整型变量*/scanf("%d,%d",&x,&y);/
*获得变量x,y的值,你输入10,14时候,x=10,y=14*/while(x>0 && y>0){
a=x%2
;/*判断x奇偶,奇a=1,偶a=0*/ x=x/2;/
*x减小一半*/
b=y%2;/
*判断y奇偶,奇b=1,偶b=0*/
y=y/2
;/*y减小一半*/ z=z+a*b*k
;/*过程中x,y不同时为奇的话,z值不变,否则加上后面的式子*/
k=k*2;
}/*这里是循环,控制条件就是当x,y同时大于0的时候就不停执行大括号里的句子*/
printf("z=%d\n",z);
}
结果应该是10,没运行,只是推断,lz可以单步运行来看各步的效果
或者改成下面的样子看过程也可以(未测试)
int main()
{
int x,y,z=0,a,b,k=1;
scanf("%d,%d",&x,&y);
while(x>0 && y>0){
a=x%2;
x=x/2;
b=y%2;
y=y/2;
z=z+a*b*k;
k=k*2;
printf("a=%d,x=%d,b=%d,y=%d,z=%d,k=%d\n",a,x,b,y,z,k);
}
printf("z=%d\n",z);
getch();
return 0;
}